This commit is contained in:
Nofated 2021-06-09 08:31:52 +08:00
commit d05983dc95
146 changed files with 12463 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
node_modules
.DS_Store

348
_config.icarus.yml Normal file
View File

@ -0,0 +1,348 @@
# Version of the configuration file
version: 4.0.0
# Icarus theme variant, can be "default" or "cyberpunk"
variant: default
# Path or URL to the website's logo
logo:
text: Nofated's Blog
# Page metadata configurations
head:
# URL or path to the website's icon
favicon: https://cravatar.eu/helmavatar/Nofated
# Web application manifests configuration
# https://developer.mozilla.org/en-US/docs/Web/Manifest
manifest:
# Name of the web application (default to the site title)
name:
# The displayed name of the web application
# when there is not enough space to display full name
short_name:
# The start URL of the web application
start_url:
# The default theme color for the application
theme_color:
# A placeholder background color for the application page to display
# before its stylesheet is loaded
background_color:
# The preferred display mode for the website
display: standalone
# Image files that can serve as application icons for different contexts
icons:
-
# The path to the image file
src: ''
# A string containing space-separated image dimensions
sizes: ''
# A hint as to the media type of the image
type:
# Open Graph metadata
# https://hexo.io/docs/helpers.html#open-graph
open_graph:
# Page title (og:title) (optional)
# You should leave this blank for most of the time
title:
# Page type (og:type) (optional)
# You should leave this blank for most of the time
type: blog
# Page URL (og:url) (optional)
# You should leave this blank for most of the time
url:
# Page cover (og:image) (optional)
# You should leave this blank for most of the time
image:
# Site name (og:site_name) (optional)
# You should leave this blank for most of the time
site_name:
# Page author (article:author) (optional)
# You should leave this blank for most of the time
author:
# Page description (og:description) (optional)
# You should leave this blank for most of the time
description:
# Twitter card type (twitter:card)
twitter_card:
# Twitter ID (twitter:creator)
twitter_id:
# Twitter Site (twitter:site)
twitter_site:
# Google+ profile link (deprecated)
google_plus:
# Facebook admin ID
fb_admins:
# Facebook App ID
fb_app_id:
# Structured data of the page
# https://developers.google.com/search/docs/guides/intro-structured-data
structured_data:
# Page title (optional)
# You should leave this blank for most of the time
title:
# Page description (optional)
# You should leave this blank for most of the time
description:
# Page URL (optional)
# You should leave this blank for most of the time
url:
# Page author (article:author) (optional)
# You should leave this blank for most of the time
author:
# Page images (optional)
# You should leave this blank for most of the time
image:
# Additional HTML meta tags in an array
meta:
# Meta tag specified in <attribute>=<value> style
# E.g., name=theme-color;content=#123456 => <meta name="theme-color" content="#123456">
- ''
# URL or path to the website's RSS atom.xml
rss:
# Page top navigation bar configurations
navbar:
# Navigation menu items
menu:
首页: /
归档: /archives
分类: /categories
标签: /tags
媒体: /media
友链: /friend
关于: /about
导航: http://nofated.gitee.io/edgelight
# Page footer configurations
footer:
# Links to be shown on the right of the footer section
links:
Creative Commons:
icon: fab fa-creative-commons
url: 'https://creativecommons.org/'
Attribution 4.0 International:
icon: fab fa-creative-commons-by
url: 'https://creativecommons.org/licenses/by/4.0/'
Download on GitHub:
icon: fab fa-github
url: 'https://github.com/ppoffice/hexo-theme-icarus'
# Article related configurations
article:
# Code highlight settings
highlight:
# Code highlight themes
# https://github.com/highlightjs/highlight.js/tree/master/src/styles
theme: atom-one-light
# Show copy code button
clipboard: true
# Default folding status of the code blocks. Can be "", "folded", "unfolded"
fold: unfolded
# Whether to show estimated article reading time
readtime: true
# Article licensing block
licenses:
Creative Commons:
icon: fab fa-creative-commons
url: 'https://creativecommons.org/'
Attribution:
icon: fab fa-creative-commons-by
url: 'https://creativecommons.org/licenses/by/4.0/'
Noncommercial:
icon: fab fa-creative-commons-nc
url: 'https://creativecommons.org/licenses/by-nc/4.0/'
# Search plugin configurations
# https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search/
search:
type: insight
# Comment plugin configurations
# https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment/
comment:
type: valine
app_id: L7bg4EcXDh2SSIwYGu8fU9p5-MdYXbMMI
app_key: Iwbdj09b8tI7DXkKYz7sMbfc
placeholder: "" # 可选填
avatar: mm # 可选填
avatar_force: false # 可选填
meta: ["nick", "mail", "link"] # 可选填
page_size: 10 # 可选填
lang: zh-CN # 可选填
visitor: false # 可选填
highlight: true # 可选填
record_ip: false # 可选填
server_urls: # 可选填
emoji_cdn: # 可选填
emoji_maps: # 可选填
enable_qq: false # 可选填
required_fields: [] # 可选填
# Donate plugin configurations
# https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Donation/
donates:
-
type: alipay
# Alipay qrcode image URL
qrcode: 'https://pic.rmb.bdstatic.com/bjh/e773e4c7da6f039ecbe0b3536ca16119.jpeg'
-
type: wechat
# Wechat qrcode image URL
qrcode: 'https://pic.rmb.bdstatic.com/bjh/caae30e75d185555d0518690e5ea101a.png'
# Share plugin configurations
# https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share/
# Sidebar configurations.
# Please be noted that a sidebar is only visible when it has at least one widget
sidebar:
# Left sidebar configurations
left:
# Whether the sidebar sticks to the top when page scrolls
sticky: false
# Right sidebar configurations
right:
# Whether the sidebar sticks to the top when page scrolls
sticky: true
# Sidebar widget configurations
# http://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/
widgets:
# Profile widget configurations
-
# Where should the widget be placed, left sidebar or right sidebar
position: left
type: profile
# Author name
author: Nofated
# Author title
author_title: Student
# Author's current location
location: Beijing, China
# URL or path to the avatar image
avatar: https://pic.rmb.bdstatic.com/bjh/020a46e8318d66b55d73afe31805d653.jpeg
# Whether show the rounded avatar image
avatar_rounded: false
# Email address for the Gravatar
gravatar:
# URL or path for the follow button
follow_link: 'https://space.bilibili.com/351951550'
# Links to be shown on the bottom of the profile widget
social_links:
Github:
icon: fab fa-github
url: 'https://github.com/Nofated095'
QQ:
icon: fab fa-qq
url: 'tencent://message/?uin=2032025551&Menu=yes'
Email:
icon: fas fa-envelope
url: 'mailto:nofated095@outlook.com'
RSS:
icon: fas fa-rss
url: /atom.xml
-
position: left
type: categories
-
# Where should the widget be placed, left sidebar or right sidebar
position: left
type: tags
# Table of contents widget configurations
-
# Where should the widget be placed, left sidebar or right sidebar
position: right
type: toc
# Whether to show the index of each heading
index: true
# Whether to collapse sub-headings when they are out-of-view
collapsed: true
# Maximum level of headings to show (1-6)
depth: 3
-
# Where should the widget be placed, left sidebar or right sidebar
position: right
type: recent_posts
# Recommendation links widget configurations
-
position: right
type: links
links:
BMCLAPI: 'http://bmclapidoc.bangbang93.com/'
Jenkins of HMCL: 'https://ci.huangyuhui.net/'
Microsoft Docs: 'https://docs.microsoft.com/zh-cn/'
# Recent posts widget configurations
# Tags widget configurations
# Plugin configurations
# https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/
plugins:
# Enable page startup animations
animejs: true
# Show the "back to top" button
back_to_top: true
# Baidu Analytics plugin settings
# https://tongji.baidu.com
baidu_analytics:
# Baidu Analytics tracking ID
tracking_id:
# Bing Webmaster Tools plugin settings
# https://www.bing.com/toolbox/webmaster/
bing_webmaster:
# Bing Webmaster Tools tracking ID in the <meta> tag
tracking_id:
# BuSuanZi site/page view counter
# https://busuanzi.ibruce.info
busuanzi: true
# CNZZ statistics
# https://www.umeng.com/web
cnzz:
# CNZZ tracker id
id:
# CNZZ website id
web_id:
# Alerting users about the use of cookies
# https://www.osano.com/cookieconsent/
cookie_consent:
# The compliance type. Can be "info", "opt-in", or "opt-out"
type: info
# Theme of the popup. Can be "block", "edgeless", or "classic"
theme: edgeless
# Whether the popup should stay static regardless of the page scrolls
static: false
# Where on the screen the consent popup should display
position: bottom-left
# URL to your site's cookie policy
policyLink: 'https://www.cookiesandyou.com/'
# Enable the lightGallery and Justified Gallery plugins
gallery: true
# Google Analytics plugin settings
# https://analytics.google.com
google_analytics:
# Google Analytics tracking ID
tracking_id:
# Hotjar user feedback plugin
# https://www.hotjar.com/
hotjar:
# Hotjar site id
site_id:
# Enable the KaTeX math typesetting support
# https://katex.org/
katex: false
# Enable the MathJax math typesetting support
# https://www.mathjax.org/
mathjax: false
# Enable the Outdated Browser plugin
# http://outdatedbrowser.com/
outdated_browser: false
# Show a progress bar at top of the page on page loading
progressbar: true
# Statcounter statistics
# https://statcounter.com/
statcounter:
# Statcounter project id
project:
# Statcounter project security code
security:
# Twitter conversion tracking plugin settings
# https://business.twitter.com/en/help/campaign-measurement-and-analytics/conversion-tracking-for-websites.html
twitter_conversion_tracking:
# Twitter Pixel ID
pixel_id:
# CDN provider settings
# https://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/speed-up-your-site-with-custom-cdn/
providers:
# Name or URL template of the JavaScript and/or stylesheet CDN provider
cdn: jsdelivr
# Name or URL template of the webfont CDN provider
fontcdn: loli
# Name or URL of the fontawesome icon font CDN provider
iconcdn: https://cdn.bootcdn.net/ajax/libs/font-awesome/5.15.2/css/all.css

112
_config.yml Normal file
View File

@ -0,0 +1,112 @@
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: Nofated's Blog
subtitle: ''
description: ''
keywords:
author: Nofated
language: zh-CN
timezone: ''
# URL
## If your site is put in a subdirectory, set url as 'http://example.com/child' and root as '/child/'
url: http://nofated.gitee.io
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:
# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace: ''
wrap: true
hljs: false
prismjs:
enable: false
preprocess: true
line_number: true
tab_replace: ''
# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
## updated_option supports 'mtime', 'date', 'empty'
updated_option: 'mtime'
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page
# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: icarus
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo:
gitee: https://gitee.com/nofated/Nofated.git,master
github: https://github.com/Nofated095/nofated095.github.io.git,master
aplayer:
meting: true

1
db.json Normal file

File diff suppressed because one or more lines are too long

4655
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

33
package.json Normal file
View File

@ -0,0 +1,33 @@
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "5.3.0"
},
"dependencies": {
"bulma-stylus": "^0.8.0",
"hexo": "^5.0.0",
"hexo-component-inferno": "^0.11.3",
"hexo-deployer-git": "^3.0.0",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^2.0.0",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^1.0.0",
"hexo-renderer-inferno": "^0.1.3",
"hexo-renderer-marked": "^3.0.0",
"hexo-renderer-stylus": "^2.0.0",
"hexo-server": "^2.0.0",
"hexo-tag-aplayer": "^3.0.4",
"hexo-theme-landscape": "^0.0.3",
"inferno": "^7.4.7",
"inferno-create-element": "^7.4.7"
}
}

4
scaffolds/draft.md Normal file
View File

@ -0,0 +1,4 @@
---
title: {{ title }}
tags:
---

4
scaffolds/page.md Normal file
View File

@ -0,0 +1,4 @@
---
title: {{ title }}
date: {{ date }}
---

9
scaffolds/post.md Normal file
View File

@ -0,0 +1,9 @@
---
title: {{ title }}
date: {{ date }}
cover:
tags:
categories:
---
<!--more-->

34
source/_drafts/2021.md Normal file
View File

@ -0,0 +1,34 @@
---
title: 总结 2021
time: 2022-01-01 00:00:00
categories:
- 日常生活
- 记录
tags:
- 总结
---
2022 要来力
<!--more-->
第一次写总结性的文章,写得不好请见谅。
## January
跨年没看B站跨年祭有点可惜但说实在是我不感兴趣。元旦假期复习了复习4号5号考了期末模拟前女友和我一个考场所以我信心满满结果分数惨不忍睹也不敢问班主任排名被爸爸妈妈狠批了一顿特别难过。大概是因为考试把脑子考糊涂了我就提出了分手。6号和前女友分手初恋草草地结束了。第二天又因为作业没带被数学老师狠批一顿到快7点心里很难受想着求复合但是最终失败。有复习了一段时间就迎来了区里的区统考。虽然说分数和排名还是不太理想但总规还凑和年级排到了54班级第5。我把成绩贴出来。
|科目|满分|成绩|
|:-:|:-:|:-:|
|语文|100|81|
|数学|100|91|
|英语|60+40|60+39.65=99.65(约合100)|
|物理|70|64|
|历史|70|70|
|地理|70|62|
|道德与法治|70|61|
|生物|70|68|
|总分|598.65|
操蛋的是物理我白丢3分因为多选题用了专门涂卡的自动铅笔。结果我给填淡了机器不认哭力。第二天讲评卷子更离谱的是我们的英语老师念成绩时候偏偏把我和我前女友一起念了全班掌声激励我直接自闭。然后我炫耀了一波英语和历史成绩就进入寒假了。
## February
寒假开头是好好利用了一下手里的 Samsung Galaxy S6本来想重新构建博客结果按照网上用 Termux 整活各种权限不足就放弃了。过年前还把前女友惹急了反正是证明了我们之间再也没有可能了。不过也好增进了我和班长之间的友谊稳赚不赔2333。开开心心度过了除夕。初一爸爸妈妈不在家我趁着机会整了一个 Ubuntu To Go 和 一个可移动的 Minecraft JE。之后刚才说的 Samsung Galaxy S6 就坏了。不过也促进了我利用 Ubuntu To Go 重写博客还养成了经常备份的好习惯2333。最后一星期赶了赶作业就开学了。

View File

@ -0,0 +1,9 @@
---
title: OSX-KVM
date: 2021-05-09 23:05:18
cover:
tags:
categories:
---
<!--more-->

View File

@ -0,0 +1,30 @@
---
title: Ubuntu To Go 制作教程
date: 2021-05-05 06:31:04
cover:
tags:
- Ubuntu
categories:
- 写BUG日常
- 教程
---
把 Ubuntu 装进移动硬盘
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
本文内容仅供参考。文章参考了部分网络上的内容。
特别鸣谢
- [StevenQiu](https://www.littlqiu.net)
- [Ubuntu团队](https://www.ubuntu.com)
{% raw %}</div></article>{% endraw %}
## 准备
- 一个大于8GB的U盘或者移动硬盘
- [Vmware Workstation](https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html)
- Ubuntu [安装盘](https://mirrors.163.com/ubuntu-releases)
- 一个可以联网的计算机
## 安装

View File

@ -0,0 +1,58 @@
---
title: Ubuntu 的正确使用方式
date: 2021-05-05 18:33:22
cover:
tags:
- Ubuntu
categories:
- 写BUG日常
- 资源
---
准备真的把 Ubuntu 当作日常操作系统?也许这篇文章可以帮助你
<!--more-->
## 软件安装
### 浏览器
* Chromium 网页浏览器
```bash
sudo snap install chromium
```
### 邮件
* Geary 邮件
```bash
sudo apt-get install geary
```
### 虚拟机
* VMware Workstastion
[下载](https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html)
```bash
sudo chmod +x *.bundle
sudo ./*.bundle
```
## 依赖安装
### NPM
```bash
sudo apt-get install npm
sudo npm install -g npm
npm config set registry https://registry.npm.taobao.org #换源
```
### Nodejs
```bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
exit
nvm install node
```
## 系统设置
### 8小时时差
```bash
sudo timedatectl set-local-rtc 1
```

View File

@ -0,0 +1,48 @@
---
title: 虚拟机安装 android-x86
date: 2020-10-01 17:00:00
cover: https://pic.rmb.bdstatic.com/bjh/38969b26e37f770d59195c27d73ddfcb.jpeg
tags:
- android
- 虚拟机
categories:
- 写BUG日常
- 教程
---
看到我的 Parallels Desktop ,发现好久好久没有用过了,今天刚好趁着国庆捣鼓亿下(但实际文章是国庆假期后月考完了写的)。
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
关于虚拟机的使用、创建我就直接跳过了。如果你不知道去哪里寻找需要的 android-x86你可以点击[清华大学开源软件镜像站下载](https://mirrors.tuna.tsinghua.edu.cn) 或 [北京外国语大学开源软件镜像站下载](https://mirrors.bfsu.edu.cn) 右侧的`获取下载链接`,选择`操作系统`,再选择 `Android-x86`,然后你就可以选择适合你的版本进行下载。不同的版本可能操作方式不同
{% raw %}</div></article>{% endraw %}
## 安装
![打开你的虚拟机软件创建新的虚拟机并载入刚刚下载的ISO镜像开机](https://pic.rmb.bdstatic.com/bjh/a60eb584d2b95e3837d06dcee64b0d70.png)
![按 TAP](https://pic.rmb.bdstatic.com/bjh/9d154ae657f448943a8c9d5ff1b24922.png)
![在最后面加 INSTALL=1 并回车](https://pic.rmb.bdstatic.com/bjh/6beb1b556f45693562a68df4bae1507a.png)
![选第一个](https://pic.rmb.bdstatic.com/bjh/4d80b5cb3ad070d0f32e256d5e0d2833.png)
![传统引导选择 NO若不是则反之](https://pic.rmb.bdstatic.com/bjh/fea208fb4c56f9968a5d6244c25609b3.png)
![选择 New并回车](https://pic.rmb.bdstatic.com/bjh/f29f7a12aa4cdf20133e2d50f3a56a19.png)
![选择 Primary并回车](https://pic.rmb.bdstatic.com/bjh/8b28c0375801b0bfb4b24b80528a7759.png)
![空间大小选默认,回车](https://pic.rmb.bdstatic.com/bjh/388ae95b0b4ae1c01f08b4c3911d38c3.png)
![选择 Bootable回车](https://pic.rmb.bdstatic.com/bjh/e1a480439efc216ebfe1cbbb85b1fe4a.png)
![选择 Write回车](https://pic.rmb.bdstatic.com/bjh/6c632d5f9ec38217a901bc01c019325b.png)
![输入 yes 确认,回车](https://pic.rmb.bdstatic.com/bjh/d21ab94f358733d437b822289e5d01e8.png)
![选择 Quit回车](https://pic.rmb.bdstatic.com/bjh/e2c370ddaa0f1d79cef397175b9762f7.png)
![选用第一个没格式化的,回车](https://pic.rmb.bdstatic.com/bjh/73cc0b145feb51087d19110c9ed0ba07.png)
![格式选 ext4回车](https://pic.rmb.bdstatic.com/bjh/8b9b7694076bf2b86966dd9b69c73e31.png)
![确认格式化并回车](https://pic.rmb.bdstatic.com/bjh/c3337c2548f01c2a939e07900e5f124e.png)
![等待格式化](https://pic.rmb.bdstatic.com/bjh/2ba4ddb50b155121a7a5312b5f10dbf9.png)
![建议安装](https://pic.rmb.bdstatic.com/bjh/2f5e1ff3be8238397a4710286a9543bd.png)
![是否将/system目录设为可读写毕竟只是玩玩我就不设置了]https://pic.rmb.bdstatic.com/bjh/a108e8d8d64fe8d22d3f619d5114bbf6.png)
![等待写入](https://pic.rmb.bdstatic.com/bjh/7b005e34aa3875210f834be5bc71df39.png)
![选择 Reboot回车](https://pic.rmb.bdstatic.com/bjh/beba012ffdccb833a75c01361cb8f989.png)
![可以回车实验性进系统如果没有开机LOGO往下看](https://pic.rmb.bdstatic.com/bjh/da67e97fc803fe5265c8c58bdf92a23f.png)
![选择第二个选项,回车](https://pic.rmb.bdstatic.com/bjh/5dafea468bdbd4faf320cea0c5124885.png)
![滚完代码后回车](https://pic.rmb.bdstatic.com/bjh/8197687a94f49eeab0015958c7c6ef91.png)
![输入 mount o remount,rw /mnt 后回车](https://pic.rmb.bdstatic.com/bjh/cc88bb757e6474b7ec1baca25a01fda7.png)
![按I键进入编辑模式把第一个title下面的 root=/dev/ram0 改成 nomodeset_root=/dev/ram0然后重启](https://pic.rmb.bdstatic.com/bjh/4c92f6bf9e73d91c26741e449d09bc44.png)
![看到LOGO代表安装成功耐心等待进系统](https://pic.rmb.bdstatic.com/bjh/4c92f6bf9e73d91c26741e449d09bc44.png)
![我选的简体中文](https://pic.rmb.bdstatic.com/bjh/7fe21556d79b5a1adb5ef3fe251097b3.png)
![同意协议](https://pic.rmb.bdstatic.com/bjh/ddd2e81f5309d730aa8def9ef673b45c.png)
![整个安装过程结束](https://pic.rmb.bdstatic.com/bjh/bee7256ea68d7b8be8417c6688333a24.png)

View File

@ -0,0 +1,81 @@
---
title: B站外嵌视频播放器防踩坑
date: 2020-09-21 10:08:09
cover: https://pic.rmb.bdstatic.com/bjh/c6d5d344aef87ec4511ff2521dd304bd.jpeg
tags:
- HTML5
- Bilibili
categories:
- 写BUG日常
- 教程
---
B站有一个神奇的`嵌入代码`的功能,但是这个功能不经过我们加工后直接放出来很丑。问了问度娘并简单研究了一下,我把我遇到的一些问题和解决方法贴出来。
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
我们拿 [BV1PC4y1t77X](https://www.bilibili.com/video/BV1PC4y1t77X) 这个视频来进行测试。
{% raw %}</div></article>{% endraw %}
## 视频下面给出的嵌入代码的问题
![嵌入代码](https://pic.rmb.bdstatic.com/bjh/83e5afc3e50b52eff95825a9024d8e2b.jpeg)
在这里把代码原封不动复制过来,得到了下面的这个玩意。
<iframe src="//player.bilibili.com/player.html?aid=796700174&bvid=BV1PC4y1t77X&cid=223520581&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
``` HTML 点击展开代码>folded
<iframe src="//player.bilibili.com/player.html?aid=796700174&bvid=BV1PC4y1t77X&cid=223520581&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
```
这是未经我们自定义得到的外嵌播放器,问题很多,清晰度不是我们想要的,没法自适应屏幕。
但是网络上的大佬多啊,很快就找到了大佬给的说明。
|变量|说明|
|:-:|:-:|
|cid|chat id每个chat id对应一组弹幕池。如果填了aid这个字段不填也没关系|
|aid|article id, 视频的av号。就是视频链接结尾 avxxxx 后面的数字。如果填了bvid这个字段不填也没关系|
|bvid|bilibili video id, 视频的bv号。就是视频链接结尾 BVxxxx 后面的字符。2020.03 时候, B站把 AV 号根据一定的算法转成这个了|
|page|第几个视频, 起始下标为 1 (默认值也是为1)。就是B站视频选集里的第几个视频俗称p1、p2|
|as_wide|是否宽屏。1: 宽屏, 0: 小屏|
|high_quality|是否高清。1: 高清, 0: 最低视频质量(默认)/如视频有 360p 720p 1080p 三种, 默认或者 high_quality=0 是最低 360p。high_quality=1 是最高1080p|
|danmaku|是否开启弹幕。1: 开启(默认), 0: 关闭|
|t|打开时, 自动跳转到某个时间, 并且自动播放(单位秒)。比如 t=60, 那么自动跳转到1分钟, 且自动播放|
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
这个说明具有时效性可能随着B站修改播放器这个说明会失效
{% raw %}</div></article>{% endraw %}
我照着这个又简单改了改 iframe 模块,得到了这个。
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
``` HTML 点击展开代码>folded
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
```
可以看到,它没有自适应屏幕,问了问度娘,看大佬给的解决方案,最后得到了这个。
<div style="position: relative; width: 100%; height: 0; padding-bottom: 75%;">
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;"></iframe>
</div>
``` HTML 点击展开代码>folded
<div style="position: relative; width: 100%; height: 0; padding-bottom: 75%;">
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;"></iframe>
</div>
```
可以说非常完美,基本可以适应各类大小。顺便我还找到了可以屏蔽链接跳转的一个小玩意。
<div style="position: relative; width: 100%; height: 0; padding-bottom: 75%;">
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts"></iframe>
</div>
``` HTML 点击展开代码>folded
<div style="position: relative; width: 100%; height: 0; padding-bottom: 75%;">
<iframe src="//player.bilibili.com/player.html?bvid=BV1PC4y1t77X&page=1&danmaku=0&high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" style="position: absolute; width: 100%; height: 100%; left: 0; top: 0;" sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts"></iframe>
</div>
```
但是目前由于播放器改版上面的“去bilibili观看”去不掉。

345
source/_posts/bulma.md Normal file
View File

@ -0,0 +1,345 @@
---
title: 活用 Bulma 美化文章
date: 2020-10-15 10:34:46
cover: https://pic.rmb.bdstatic.com/bjh/2902fadc80bff86b1f657a77e15e2cf1.png
tags:
- Hexo
- Icarus
- Bulma
categories:
- 写BUG日常
- 教程
---
怎么让自己光秃秃的 MarkDown 文章变得更好看呢?
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
特别鸣谢
- [iMaeGoo](https://www.imaegoo.com/)
{% raw %}</div></article>{% endraw %}
## 按钮
<div class="buttons">
<button class="button is-info">Info</button>
<button class="button is-success">Success</button>
<button class="button is-warning">Warning</button>
<button class="button is-danger">Danger</button>
</div>
``` js 点击展开代码>folded
<div class="buttons">
<button class="button is-info">Info</button>
<button class="button is-success">Success</button>
<button class="button is-warning">Warning</button>
<button class="button is-danger">Danger</button>
</div>
```
光有按钮肯定是不行的,一般我们还需要给按钮增加事件,比如点击下面的按钮,可以计算你的身份证效验码。
<button class="button is-info" onclick="alert(calc(prompt('请输入待计算的身份证号前17位')))">计算身份证效验码</button>
<script>function calc(str)
{
/*
*/
var coeff = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];
var suffix = ['1','0','x','9','8','7','6','5','4','3','2'];
var sum = 0;
for(var i=0;i<17;i++)
sum += coeff[i] * parseInt(str.charCodeAt(i)-48);
sum %= 11;
str = str.substr(0,17) + suffix[sum];
return str;
}
</script>
``` js 点击展开代码>folded
<script>function calc(str)
{
/*
*/
var coeff = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];
var suffix = ['1','0','x','9','8','7','6','5','4','3','2'];
var sum = 0;
for(var i=0;i<17;i++)
sum += coeff[i] * parseInt(str.charCodeAt(i)-48);
sum %= 11;
str = str.substr(0,17) + suffix[sum];
return str;
}
</script>
```
显示一言
<button class="button is-info" onclick="showHitokoto(event)">显示一言</button>
<blockquote class="hitokoto">↑↑↑ 试着点击“显示一言”!</blockquote>
<script>
function showHitokoto (event) {
event.target.classList.add('is-loading');
$.ajax({
type: 'GET',
url: 'https://v1.hitokoto.cn/',
success: function (data) {
$('.hitokoto').text(data.hitokoto);
event.target.classList.remove('is-loading');
}
});
}
</script>
``` js 点击展开代码>folded
<button class="button is-info" onclick="showHitokoto(event)">显示一言</button>
<blockquote class="hitokoto">↑↑↑ 试着点击“显示一言”!</blockquote>
<script>
function showHitokoto (event) {
event.target.classList.add('is-loading');
$.ajax({
type: 'GET',
url: 'https://v1.hitokoto.cn/',
success: function (data) {
$('.hitokoto').text(data.hitokoto);
event.target.classList.remove('is-loading');
}
});
}
</script>
```
## 标签页
<div class="tabs is-toggle"><ul>
<li class="is-active"><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-image" aria-hidden="true"></i></span>
<span>Pictures</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-music" aria-hidden="true"></i></span>
<span>Music</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-film" aria-hidden="true"></i></span>
<span>Videos</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="far fa-file-alt" aria-hidden="true"></i></span>
<span>Documents</span>
</a></li>
</ul></div>
{% raw %}<div id="Pictures" class="tab-content" style="display: block;">{% endraw %}
[Pixabay](https://pixabay.com/zh/) 是全球知名的图库网站及充满活力的创意社区,拥有上百万张免费正版高清照片素材,涵盖风景、人物、动态、静物等多种分类,你可以在任何地方使用 Pixabay 图库中的素材...
{% raw %}</div>{% endraw %}
{% raw %}<div id="Music" class="tab-content">{% endraw %}
[网易云音乐](https://music.163.com/) 是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用户打造全新的音乐生活。
{% raw %}</div>{% endraw %}
{% raw %}<div id="Videos" class="tab-content">{% endraw %}
[哔哩哔哩](https://www.bilibili.com/) 是国内知名的视频弹幕网站,这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主。大家可以在这里找到许多欢乐。
{% raw %}</div>{% endraw %}
{% raw %}<div id="Documents" class="tab-content">{% endraw %}
[石墨文档](https://shimo.im/) 是全新一代云 Office 办公软件,支持多人在线协作编辑文档和表格,独有内容级安全,全过程留痕可追溯。PC 端和移动端全覆盖,随时随地远程办公。即写即存...
{% raw %}</div>{% endraw %}
<style type="text/css">
.content .tabs ul { margin: 0; }
.tab-content { display: none; }
</style>
<script>
function onTabClick (event) {
var tabTitle = $(event.currentTarget).children('span:last-child').text();
$('.article .content .tab-content').css('display', 'none');
$('.article .content .tabs li').removeClass('is-active');
$('#' + tabTitle).css('display', 'block');
$(event.currentTarget).parent().addClass('is-active');
}
</script>
``` js 点击展开代码>folded
<div class="tabs is-toggle"><ul>
<li class="is-active"><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-image" aria-hidden="true"></i></span>
<span>Pictures</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-music" aria-hidden="true"></i></span>
<span>Music</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="fas fa-film" aria-hidden="true"></i></span>
<span>Videos</span>
</a></li>
<li><a onclick="onTabClick(event)">
<span class="icon is-small"><i class="far fa-file-alt" aria-hidden="true"></i></span>
<span>Documents</span>
</a></li>
</ul></div>
{% raw %}<div id="Pictures" class="tab-content" style="display: block;">{% endraw %}
[Pixabay](https://pixabay.com/zh/) 是全球知名的图库网站及充满活力的创意社区,拥有上百万张免费正版高清照片素材,涵盖风景、人物、动态、静物等多种分类,你可以在任何地方使用 Pixabay 图库中的素材...
{% raw %}</div>{% endraw %}
{% raw %}<div id="Music" class="tab-content">{% endraw %}
[网易云音乐](https://music.163.com/) 是一款专注于发现与分享的音乐产品,依托专业音乐人、DJ、好友推荐及社交功能,为用户打造全新的音乐生活。
{% raw %}</div>{% endraw %}
{% raw %}<div id="Videos" class="tab-content">{% endraw %}
[哔哩哔哩](https://www.bilibili.com/) 是国内知名的视频弹幕网站,这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主。大家可以在这里找到许多欢乐。
{% raw %}</div>{% endraw %}
{% raw %}<div id="Documents" class="tab-content">{% endraw %}
[石墨文档](https://shimo.im/) 是全新一代云 Office 办公软件,支持多人在线协作编辑文档和表格,独有内容级安全,全过程留痕可追溯。PC 端和移动端全覆盖,随时随地远程办公。即写即存...
{% raw %}</div>{% endraw %}
<style type="text/css">
.content .tabs ul { margin: 0; }
.tab-content { display: none; }
</style>
<script>
function onTabClick (event) {
var tabTitle = $(event.currentTarget).children('span:last-child').text();
$('.article .content .tab-content').css('display', 'none');
$('.article .content .tabs li').removeClass('is-active');
$('#' + tabTitle).css('display', 'block');
$(event.currentTarget).parent().addClass('is-active');
}
</script>
```
## 彩色突出
{% raw %}<div class="notification is-info">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<div class="notification is-info">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
```
{% raw %}<div class="notification is-success">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<div class="notification is-success">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
```
{% raw %}<div class="notification is-warning">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<div class="notification is-warning">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
```
{% raw %}<div class="notification is-danger">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<div class="notification is-danger">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div>{% endraw %}
```
{% raw %}<article class="message is-info"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<article class="message is-info"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
```
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
```
{% raw %}<article class="message is-warning"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<article class="message is-warning"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
```
{% raw %}<article class="message is-danger"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<article class="message is-danger"><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
```
{% raw %}<article class="message is-info"><div class="message-header">{% endraw %}
活用 Bulma 美化文章
{% raw %}</div><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
``` js 点击展开代码>folded
{% raw %}<article class="message is-info"><div class="message-header">{% endraw %}
活用 Bulma 美化文章
{% raw %}</div><div class="message-body">{% endraw %}
[Icarus](https://blog.zhangruipeng.me/hexo-theme-icarus/) 主题以白色的简洁为主,但有时候我们希望在文章中用**特别的样式**注明一些内容,*markdown* 语法就不够用了,所以在此分享一下我的高级玩法。
{% raw %}</div></article>{% endraw %}
```
## 你知道的太多了
{% raw %}
<style type="text/css">
.heimu { color: #000; background-color: #000; }
.heimu:hover { color: #fff; }
</style>
{% endraw %}
我们要科学利用网络,提高媒介素养,积极利用网络获取新知。学会信息节食,不沉迷于网络 {% raw %}<span class="heimu">就像我一样2333</span>{% endraw %},还可以积极利用网络为国家和社会发展建言献策{% raw %}<span class="heimu">我就参加过</span>{% endraw %}。
``` js 点击展开代码>folded
{% raw %}
<style type="text/css">
.heimu { color: #000; background-color: #000; }
.heimu:hover { color: #fff; }
</style>
{% endraw %}
我们要科学利用网络,提高媒介素养,积极利用网络获取新知。学会信息节食,不沉迷于网络 {% raw %}<span class="heimu">就像我一样2333</span>{% endraw %},还可以积极利用网络为国家和社会发展建言献策{% raw %}<span class="heimu">我就参加过</span>{% endraw %}。
```
## 点击展开代码
``` js 点击展开代码>folded
``` js 点击展开代码>folded
<p>Hello, Bulma!</p>
```
## 封面来源声明
<a class="tag is-dark is-medium" href="https://bulma.io" target="_blank">
<span class="icon"><i class="fas fa-camera"></i></span>&nbsp;&nbsp;
Bulma Docs
</a>
``` js 点击展开代码>folded
<a class="tag is-dark is-medium" href="https://bulma.io" target="_blank">
<span class="icon"><i class="fas fa-camera"></i></span>&nbsp;&nbsp;
Bulma Docs
</a>
```

121
source/_posts/gridea.md Normal file
View File

@ -0,0 +1,121 @@
---
title: Gridea 魔改使其支持 Gitee Pages
cover: https://pic.rmb.bdstatic.com/bjh/0d9eb92f67ba93b514f2555a70eacebe.png
date: 2020-05-09 11:33:30
tags:
- Gridea
categories:
- 写BUG日常
- 教程
---
Gridea 是一款很好用的博客写作软件。它功能全面但可惜部署不支持国内的 Gitee 代码储存仓库。本篇文章将对 Gridea 进行源码上的修改使其支持 Gridea。
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
本篇文章会手把手进行教学,当然你也可以直接克隆已经做好的[仓库](https://gitee.com/Nofated/gridea)
{% raw %}</div></article>{% endraw %}
## 教程
### 克隆源代码
```
# Github 官方
git clone https:/github.com/getgridea/gridea.git
# FastGit 镜像
git clone https://hub.fastgit.org/getgridea/gridea.git
# Gitee 镜像
git clone https://gitee.com/mirrors/gridea.git
# Gitee
git clone https://gitee.com/fehey/gridea.git
```
以上四个仓库都是可以的。你可以自行选择。
```
# 进入 Gridea 的目录
cd gridea
```
## 修改源码
``` diff src/server/deploy.ts >folded
this.platformAddress = ({ // 18行
github: 'github.com',
coding: 'e.coding.net',
+ gitee: 'gitee.com',
} as any)[setting.platform || 'github']
const preUrl = ({
github: `${setting.username}:${setting.token}`,
coding: `${setting.tokenUsername}:${setting.token}`,
+ gitee: `${setting.username}:${setting.token}`,
} as any)[setting.platform || 'github']
this.remoteUrl = `https://${preUrl}@${this.platformAddress}/${setting.username}/${setting.repository}.git`
```
``` diff src/server/events/deploy.ts>folded
ipcMain.removeAllListeners('remote-detected') // 17行
ipcMain.on('site-publish', async (event: IpcMainEvent, params: any) => {
+ console.log(platform)
const client = ({
'github': deploy,
'coding': deploy,
+ 'gitee': deploy,
'sftp': sftp,
} as any)[platform]
const client = ({ // 38行
'github': deploy,
'coding': deploy,
+ 'gitee': deploy,
'sftp': sftp,
} as any)[platform]
const result = await client.remoteDetect()
event.sender.send('remote-detected', result)
})
```
``` diff src/views/setting/includes/BasicSetting.vue >folded
<a-radio-group name="platform" v-model="form.platform"> // 5行
<a-radio value="github">Github Pages</a-radio>
<a-radio value="coding">Coding Pages</a-radio>
+ <a-radio value="gitee">Gitee Pages</a-radio>
<a-radio value="sftp">SFTP</a-radio>
</a-radio-group>
</a-form-item>
<a-input v-model="form.domain" placeholder="mydomain.com" style="width: calc(100% - 96px);" />
</a-input-group>
</a-form-item>
- <template v-if="['github', 'coding'].includes(form.platform)">
+ <template v-if="['github', 'coding', 'gitee'].includes(form.platform)">
<a-form-item :label="$t('repository')" :labelCol="formLayout.label" :wrapperCol="formLayout.wrapper" :colon="false">
<a-input v-model="form.repository" />
</a-form-item>
export default class BasicSetting extends Vue {
&& form.branch // 134行
&& form.username
&& form.token
- const pagesPlatfomValid = baseValid && (form.platform === 'github' || (form.platform === 'coding' && form.tokenUsername))
+ const pagesPlatfomValid = baseValid && (form.platform === 'gitee' || form.platform === 'github' || (form.platform === 'coding' && form.tokenUsername))
const sftpPlatformValid = ['sftp'].includes(form.platform)
&& form.port
```
## 测试与编译
``` 需要安装 yarn 和 electron
yarn
# 测试
yarn electron:serve
# 生成
yarn electron:build
```

View File

@ -0,0 +1,51 @@
---
title: 折腾你的老 Mac | 给不支持的 Mac 安装 Big Sur
date: 2021-06-08 15:08:54
cover: https://pic.rmb.bdstatic.com/bjh/8122bfd5ae9ef6ed4adbeac8c51d696f.jpeg
tags:
- Mac
- Big Sur
categories:
- 写BUG日常
- 教程
---
Wi-Fi 问题完美解决。
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
特别鸣谢
- [青瓷妈妈的文章](https://zhuanlan.zhihu.com/p/335640700)
本文基础系统为 macOS Mojave 10.14.6
{% raw %}</div></article>{% endraw %}
## Big Sur 下载
<https://www.applex.net/threads/macos-big-sur-11-4-dmg.94267/>
>感谢该网站的分享。从注册到下载全部免费并且不需要任何什么公众号等。可以直接直链下载。
## 创建新分区(可选)
![](https://pic.rmb.bdstatic.com/bjh/f88b2dc2331bc2ebb68742660164d8de.png)
选择合适分区大小并设置为 APFS 格式。
## 创建启动U盘
### U盘格式化
![打开磁盘工具,点击显示,点击所有设备](https://pic.rmb.bdstatic.com/bjh/728a6b7e3ee2452f8b7674bfeb1a7856.png)
![格式化U盘](https://pic.rmb.bdstatic.com/bjh/1d987ff85f140c73e506f25da7abd488.png)
### 刻录U盘
[下载插件](https://codeload.github.com/barrykn/big-sur-micropatcher/zip/main)
[项目的GitHub](https://github.com/barrykn/big-sur-micropatcher)
打开终端
``` bash BASH
sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/upan
```

92
source/_posts/tis.md Normal file
View File

@ -0,0 +1,92 @@
---
title: TIS Trinity Union 图片壁纸
date: 2020-05-15 14:33:53
cover: https://pic.rmb.bdstatic.com/bjh/447cd020c4b832642cd37d8716136cbb.jpeg
tags:
- Minecraft
categories:
- 日常生活
- 玩游戏
---
TIS Trinity Union
国内最大的红石技术向生存服之一 | 国内三个最大的原版技术服合并而来的服务器 | 专注于生电领域的服务器
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
本文章所有内容均源自网络。本站与 TIS Trinity Union 服务器无关
{% raw %}</div></article>{% endraw %}
## 一周年
![朝阳下的土楼](https://pic.rmb.bdstatic.com/bjh/be3635a7db53b391ffbdd9b73a917508.png)
![出生点空置域](https://pic.rmb.bdstatic.com/bjh/b8e2569cf8b28f69700a1e49da43848c.png)
![地铁小镇 塔楼后边是刷冰机](https://pic.rmb.bdstatic.com/bjh/f4f32e666552442b4efe0b89d9c413ac.png)
![二联守卫者农场 为什么叫二联?因为这里曾经有两个海底神殿!](https://pic.rmb.bdstatic.com/bjh/b97839ce7c9ba38d30775ec3077e349b.png)
![海滨小镇](https://pic.rmb.bdstatic.com/bjh/2a992e5f63b8f4c8d5a945eaabbc833c.png)
![海滨小镇夜景](https://pic.rmb.bdstatic.com/bjh/cdc58cf14343370b133fdd05ddecb7a7.png)
![核弹岛 一个由TNT建造成的小岛](https://pic.rmb.bdstatic.com/bjh/3661116d4381b87eb91900f66ba5a3e8.png)
![黄昏下的绿野镇观赏农田](https://pic.rmb.bdstatic.com/bjh/a66be5858b493acb6d76f95fadeb801e.png)
![旧基地](https://pic.rmb.bdstatic.com/bjh/28c086ff9141ccd281f970793859b084.png)
![绿野镇观赏农田](https://pic.rmb.bdstatic.com/bjh/0302ae43aa8c08895f5e75bf3acce79e.png)
![绿野镇远景 朦胧的意境美](https://pic.rmb.bdstatic.com/bjh/6dc8c4e43198801f0acf1b62bbcb3189.png)
![蘑菇牛农场 再也不用愁没有牛肉啦](https://pic.rmb.bdstatic.com/bjh/f5ad0f313816188023a6414cd151d90a.png)
![末地大厅与远处的村民工程](https://pic.rmb.bdstatic.com/bjh/55c303b35007c02655873fc0ac12a5ba.png)
![平顶山采矿机 沙漠之中的开路先锋?](https://pic.rmb.bdstatic.com/bjh/bd02ac517b2a27ad92ab6617266854b8.png)
![全物品内饰](https://pic.rmb.bdstatic.com/bjh/a1b52fb0fa64888b1dbae9de306fdfd9.png)
![沙漠工业区](https://pic.rmb.bdstatic.com/bjh/4aa56a7f90e425f330d09f09c66d8926.png)
![山谷里的夺宝小游戏](https://pic.rmb.bdstatic.com/bjh/eee0bf9e104f5af44a1bae73965a1386.png)
![史莱姆农场](https://pic.rmb.bdstatic.com/bjh/a220393034746d5484970fcd7bd938c5.png)
![史莱姆农场俯视图 是不是很像一块电路板?](https://pic.rmb.bdstatic.com/bjh/33d8083a93c5dc27d38410c3d750fe9b.png)
![刷花机 为什么是心形?因为要给心爱的人送花呀](https://pic.rmb.bdstatic.com/bjh/443a19d9835e0c50f04a5e71e10569e5.png)
![四联女巫塔 效率极高!](https://pic.rmb.bdstatic.com/bjh/0f219e91364378b85935fb24802c9322.png)
![土楼](https://pic.rmb.bdstatic.com/bjh/23961d5602e2a256058272c34e0f8f5e.png)
![土楼的夜景](https://pic.rmb.bdstatic.com/bjh/af043925fd4615f11d9d49bfc5edbad2.png)
![土楼近景](https://pic.rmb.bdstatic.com/bjh/f82cba3d018a80f6d024d400086f402c.png)
![土楼旁边的建筑](https://pic.rmb.bdstatic.com/bjh/0e84e6bafe2fc02df283569a96c8955c.jpeg)
![远处的八角土楼 是仿照世界仅存的最后一座八角土楼建造的!](https://pic.rmb.bdstatic.com/bjh/ed6af96441994765f6053ea96507c17b.png)
![最初的基地](https://pic.rmb.bdstatic.com/bjh/378dea34407d985380df2edcb63486a0.png)
## 二周年
![冰船](https://pic.rmb.bdstatic.com/bjh/12597c0e0e05eb5ab0bc5bf3500cb690.png)
![出生点1](https://pic.rmb.bdstatic.com/bjh/693f89d2dc4556ed058f794b2d33b047.png)
![出生点2](https://pic.rmb.bdstatic.com/bjh/67c723eb4869501681b77e14865a4b63.png)
![大白熊空置域](https://pic.rmb.bdstatic.com/bjh/40e669a6ea35b302da0dba738a5c7a34.png)
![地狱大厅0](https://pic.rmb.bdstatic.com/bjh/739fed8dca9f3efdf7d1e6500307ab18.png)
![地狱大厅1](https://pic.rmb.bdstatic.com/bjh/17b0acb94759d0fb2804f24226fd1589.png)
![地狱大厅2](https://pic.rmb.bdstatic.com/bjh/1262a858fd1202b9d25fbe0c1f52ef7f.png)
![凋灵骷髅塔](https://pic.rmb.bdstatic.com/bjh/fac7d34829a0be678fd9c64863a9609e.png)
![合影](https://pic.rmb.bdstatic.com/bjh/9fad8ea38c5c135b92ad4d37d481c035.png)
![火神号0](https://pic.rmb.bdstatic.com/bjh/d4ba3df6538ac923239f34fe3d1d06ce.png)
![火神号1](https://pic.rmb.bdstatic.com/bjh/6868968816717d466634f2fb65b9fb6e.png)
![火神号2](https://pic.rmb.bdstatic.com/bjh/45504e564c84dcf676b5208c0a0ee62f.png)
![火神号3](https://pic.rmb.bdstatic.com/bjh/4092490751d2316e7d80aa61fe690722.png)
![火神号4](https://pic.rmb.bdstatic.com/bjh/10d9103d24b88e92fe55b5b44db509ad.png)
![绿野镇1](https://pic.rmb.bdstatic.com/bjh/9438b00ffe18b81916bacc7586bc5665.png)
![绿野镇2](https://pic.rmb.bdstatic.com/bjh/0bc2023a7432d40ec268175bdaa1dfb2.png)
![绿野镇3](https://pic.rmb.bdstatic.com/bjh/4a05312113b345ee1765684a190492bd.png)
![末地石农场](https://pic.rmb.bdstatic.com/bjh/36a6e413f75a9f7a3f8dd9497b546ef8.png)
![蜃海0](https://pic.rmb.bdstatic.com/bjh/d60793b30bea185a3664760a14e6721f.png)
![蜃海1](https://pic.rmb.bdstatic.com/bjh/4ea213a5d3aece40cfe34d1e34339fe0.png)
![蜃海2](https://pic.rmb.bdstatic.com/bjh/18bdb7c9366df3aa84af89d591b2c303.png)
![蜃海3](https://pic.rmb.bdstatic.com/bjh/1d43834ef5372d3c57361e4a47511d15.png)
![蜃海4](https://pic.rmb.bdstatic.com/bjh/fcd4877c290844763b565dcba000b86a.png)
![蜃海5](https://pic.rmb.bdstatic.com/bjh/220227a13b21799e84bccbb2e3768188.png)
![蜃海6](https://pic.rmb.bdstatic.com/bjh/f9ec1619d858e302c6612ad896bd606f.png)
![蜃海(内)](https://pic.rmb.bdstatic.com/bjh/82227f18034fbe1f455f4b9b8a66b701.png)
![树场特区](https://pic.rmb.bdstatic.com/bjh/c00a5651268dfe83ce654c4abb5eaca1.png)
![四联女巫塔](https://pic.rmb.bdstatic.com/bjh/a416742325bdb1cdfd9611f5fb8f741a.png)
![索菲空置域](https://pic.rmb.bdstatic.com/bjh/e75e520cd364af5e9d9de2c09b173438.png)
![香子兰空置域](https://pic.rmb.bdstatic.com/bjh/c1d640e264560338db1b9276ce947c5f.png)
![主世界末地岛1](https://pic.rmb.bdstatic.com/bjh/8a30380a80018f53b8b0122c0499f36b.png)
![主世界末地岛2](https://pic.rmb.bdstatic.com/bjh/028029ead25a25cea39c6e54f9b06eba.png)
![主世界猪人塔1](https://pic.rmb.bdstatic.com/bjh/a044d395677f94c1dd1382784a9cce06.png)
![主世界猪人塔2](https://pic.rmb.bdstatic.com/bjh/053bc6ac57609c897f273d645707bf0d.png)
## 其它
![末地村民工程](https://pic.rmb.bdstatic.com/bjh/06c4022b6db7cf5091f7a64f1141892f.jpeg)
![地狱盾构机(临时工程)](https://pic.rmb.bdstatic.com/bjh/95cdd887150a7f88c6b31ad18883b062.jpeg)
![混凝土工厂](https://pic.rmb.bdstatic.com/bjh/0cca4c1940454908db40f56ba39d30b3.jpeg)
![工业基地&员工宿舍](https://pic.rmb.bdstatic.com/bjh/62d99a7432a257407ded3a05cedb4750.jpeg)
![将军亭](https://pic.rmb.bdstatic.com/bjh/91826c88f48b4f0688de90f542c582b7.jpeg)
![沙漠刷怪塔储存系统](https://pic.rmb.bdstatic.com/bjh/240f8ec8c6475fbdf211ff1c8f65324a.jpeg)

View File

@ -0,0 +1,215 @@
---
title: Ubuntu 安装 aria2 并配置
date: 2021-02-27 21:49:11
cover: https://pic.rmb.bdstatic.com/bjh/292af82583715d0ded5a48f96944391e.png
tags:
- Ubuntu
- aria2
- 下载
categories:
- 写BUG日常
- 教程
---
Ubuntu 安装了 [Motrix](https://motrix.app),好用是真好用,但是缺点就是我电脑太卡,启动它老费劲了。所以在这里把安装 aria2 的过程分享出来供大家参考
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
本文章需要你有执行 sudo 的权限
{% raw %}</div></article>{% endraw %}
## 安装
``` BASH BASH
sudo apt-get install aria2
```
## 配置
### 手动创建配置文件
``` BASH BASH
sudo mkdir /etc/aria2 #新建文件夹
sudo touch /etc/aria2/aria2.session #新建session文件
sudo chmod 777 /etc/aria2/aria2.session #设置aria2.session可写
sudo gedit /etc/aria2/aria2.conf #创建配置文件
```
当然你也可以用一键命令行(
``` BASH BASH
sudo mkdir /etc/aria2 && sudo touch /etc/aria2/aria2.session && sudo chmod 777 /etc/aria2/aria2.session && sudo gedit /etc/aria2/aria2.conf
```
### 写入配置文件
如果一切正常的话,你应该已经打开了 Ubuntu 自带的 gedit。现在添加如下配置信息当然你也可以自定义。
``` path /etc/aria2/aria2.conf >folded
## 全局设置 ## ============================================================
# 日志
#log-level=warn
#log=/PATH/.aria2/aria2.log
# 后台运行
#daemon=true
# 下载位置, 默认: 当前启动位置(***)
dir=/home/***/下载
# 从会话文件中读取下载任务(***)
input-file=/etc/aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件(***)
save-session=/etc/aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30
# 断点续传
continue=true
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 客户端伪装
user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
# 禁用IPv6, 默认:false
disable-ipv6=true
# 其他
always-resume=true
check-integrity=true
## 下载位置 ## ============================================================
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=3
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=16
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=64
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
## RPC设置 ## ============================================================
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
#rpc-secret=<TOKEN>
# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key
## BT/PT下载相关 ## ============================================================
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413
# 单个种子最大连接数, 默认:55
#bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false
# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
dht-file-path=/opt/var/aria2/dht.dat
dht-file-path6=/opt/var/aria2/dht6.dat
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 设置 peer id 前缀
peer-id-prefix=-TR2770-
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
bt-max-open-files=16
# Http/FTP 相关
connect-timeout=120
```
## 启动
``` BASH BASH
sudo aria2c --conf-path=/etc/aria2/aria2.conf
```
若没有报错证明安装成功,就可以 Ctrl+C 停止,将其转为后台运行
``` BASH BASH
sudo aria2c --conf-path=/etc/aria2/aria2.conf -D
```
## RPC
命令行肯定是不够的,所以这时候我们需要使用 aria2 的 RPC。
你可以在这里下载 [AriaNg](https://github.com/mayswind/AriaNg/releases),推荐 All-in-one可以直接提取出来放在桌面。不出意外的话打开之后就可以自动对接到 aria2。

97
source/_posts/win-sw.md Normal file
View File

@ -0,0 +1,97 @@
---
title: Windows 系统软件合集
date: 2020-06-05 17:36:23
cover: https://pic.rmb.bdstatic.com/bjh/f1151f93c9b294b73288c0969909bb53.jpeg
tags:
- Windows
categories:
- 写BUG日常
- 资源
---
有的时候安装完 Windows 系统,却不知道应该安装一些什么必装软件,在之后使用时还有可能现找,这很麻烦,所以我在这里就直接收录了一些我认为必要的 Windows 软件。
<!--more-->
{% raw %}<article class="message is-success"><div class="message-body">{% endraw %}
本文章所有收录的软件均源自网络,与本站无关。部分绝版或官网速度慢的软件本站提供不与本站相关的第三方镜像站。
{% raw %}</div></article>{% endraw %}
## 浏览器
|名称|下载|
|:-:|:-:|
|Chrome|[官网下载](https://www.google.cn/chrome/)|
|Microsoft Edge|[官网下载](https://www.microsoft.com/zh-cn/edge)|
|Firefox|[官网下载](http://www.firefox.com.cn/)|
|百分浏览器|[官网下载](https://www.centbrowser.cn/)|
## 解压缩
|名称|下载|
|:-:|:-:|
|7-zip|[官网下载](https://www.7-zip.org/)|
|Bandizip 6.29|[官网下载](https://www.bandisoft.com/bandizip/old/6/)|
|WinRAR|[官网下载](https://www.rarlab.com/download.htm)|
## 安全
|名称|下载|
|:-:|:-:|
|火绒安全软件|[官网下载](https://www.huorong.cn/person5.html)|
|ESET NOD32杀毒软件|[中国科学技术大学网络信息中心下载](http://ustcnet.ustc.edu.cn/2015/0323/c11158a120698/page.htm)|
## 输入法
|名称|下载|
|:-:|:-:|
|搜狗输入法|[官网下载](https://pinyin.sogou.com/)|
|谷歌拼音|[腾讯软件中心下载](https://pc.qq.com/detail/3/detail_97003.html)|
|迅飞输入法|[官网下载](https://srf.xunfei.cn/)|
|必应Bing输入法|[腾讯软件中心下载](https://pc.qq.com/detail/10/detail_8010.html)|
## 聊天工具
|名称|下载|
|:-:|:-:|
|QQ|[官网下载](https://im.qq.com/pcqq/)|
|微信|[官网下载](https://pc.weixin.qq.com/)|
|TIM|[官网下载](https://office.qq.com/download.html)|
|Discord|[官网下载](https://discord.com/download)|
|TeamSpeak3|[官网下载](http://www.ts1.cn/download)|
## 下载工具
|名称|下载|
|:-:|:-:|
|NeatDownloadManager|[官网下载](http://neatdownloadmanager.com/file/NeatDM_setup.exe)|
|Xdown|[官网下载](https://xdown.org/)|
|Motrix|[官网下载](https://motrix.app/)|
## 媒体
|名称|下载|
|:-:|:-:|
|VLC|[官网下载](https://www.videolan.org/vlc/download-windows.html)|
|PotPlayer|[官网下载](http://www.potplayercn.com/download/)|
|Listen 1|[官网下载](http://listen1.github.io/listen1/)|
|2345看图王|[绿化版下载](https://www.lanzous.com/i89x19a)|
## 虚拟机
|名称|下载|
|:-:|:-:|
|VMware Workstation|[官网下载](https://www.vmware.com/go/getworkstation-win)|
|Virtualbox|[官网下载](https://www.virtualbox.org/wiki/Downloads) [清华大学开源软件镜像站下载](https://mirrors.tuna.tsinghua.edu.cn/virtualbox/virtualbox-Win-latest.exe) [北京外国语大学开源软件镜像站下载](https://mirrors.bfsu.edu.cn/virtualbox/virtualbox-Win-latest.exe)|
## 办公
|名称|下载|
|:-:|:-:|
|Office Tool Plus|[官网下载](https://otp.landian.vip/zh-cn/download.html)|
|WPS Office 2019|[官网下载](https://pc.wps.cn/)|
## 实用工具
|名称|下载|
|:-:|:-:|
|腾讯电脑管家桌面整理|[官网下载](https://guanjia.qq.com/product/zmzl/)|
|Everything|[官网下载](https://www.voidtools.com/zh-cn/downloads/)|

56
source/about/index.md Normal file
View File

@ -0,0 +1,56 @@
---
title: 关于
cover: https://bing.biturl.top/?resolution=1920&format=image&index=0&mkt=zh-CN
date: 2020-10-01 00:00:00
---
想了又想,决定还是把关于博客和关于我分开写
{% meting "1398631166" "netease" "song" %}
## 关于博客
这个小博客历经了很多次改版。原定的是一个基于 WordPress 的资源站或者镜像站。但很后来认清事实后还是老老实实写博客。选用 Gridea但最终因为没有我喜欢的主题并且我不会构建重写的 Gridea我最终选择了 Hexo + Icarus 进行写作并沿用至今。
2020年年末时由于种种原因原先写博客的电脑坏了虽然文件没有丢失但是我没有给博客的源文件做备份我也暂时碰不到它于是在2021年初的寒假我开始着手进行博客的重写恢复工作。这期间一开始使用一台 Samsung Galaxy S6但又因为这个手机后来也坏了我没备份我就又用 Ubuntu To Go 和我爸爸原来的老电脑重新写博客。
目前博客有两个域名 https://nofated095.github.io 和 http://nofated.gitee.io 这两个站点分别架设在国际的 Github Pages 和国内的 Gitee Pages上。正在考虑将来购买一个域名并租用服务器进行域名跳转服务。
## 关于我
Hi, 我是 Nofated很高兴可以在这里见到你
### 名称
`Nofated` 是我的正式名称,当然有时你也可能看到诸如 `Nofated095` 等其他名称。目前不统一的的名称存在于我的百度和 MCBBS 账号。
### 学业
我居住在北京正在准备中考很快在2021年下半学期我就要参加生物和地理的中考结束时候我就升入初三该开始没日没夜的学习了。所以可能我会在网络上消失一段时间。
### 游戏
最喜欢的游戏是 Minecraft没有什么理由最开始接触到它是大概小学三四年级的时候。目前热衷于生电领域但是我还很弱目前是两个服务器的成员也许很快就不是了
### 编程
我接触的语言很少很少,目前正在学习 Python3。我最开始正式学习的语言是 HTML5但我现在有时还需要看看菜鸟编程。目前我还没有独自写过任何项目也没有参与编写过任何项目也许这还需要一段时间。
### 习惯
目前日常使用的操作系统是 Ubuntu To Go(Ubuntu 20.10),有时也会用 Windows 系的操作系统或者 macOS。手机是一台 Nokia 230平时就拿来打电话和听音乐闲的没事会看看番剧。
### 番剧
- 《魔物娘的同居生活》\
- 《工作细胞》\
- 《JOJO的奇妙冒险》/
- 《四月是你的谎言》\
- 《工作细胞 BLACK》/
- 《工作细胞第二季》/
\:已刷完
/:没刷完或正在刷
### 性格
不好说也许是最近刚进入青春期的原因人比较nt也不太会安慰人。不喜欢被别人控制想法比较中立。我的话经常不过脑子就说出来。

224
source/friend/index.md Normal file
View File

@ -0,0 +1,224 @@
---
title: 友情链接
cover: https://bing.biturl.top/?resolution=1920&format=image&index=0&mkt=zh-CN
date: 2020-10-01 00:00:00
---
欢迎来和我互换友链呐从今天起我们就是朋友啦2333
当然想要互换也是有一定规则的哦
- 欢迎技术类博客交换,但我可是会对你的博客审查的哦,你的博客可不能含有和色情、暴力、政治敏感的元素哦。
- 切忌你的文章可以有转载但是不能剽窃别人的文章哦。转载别忘了声明一下2333虽然这个我不会查但是我觉得这是我们写博客的原则。如果你的博客原创内容较多我会优先考虑哦。
看完了如果你确定要申请的话就在评论留言提供你的站点名称、站点链接、站点描述、站点LOGO。
排名不分先后,如果你要更新信息后请留言告知。
当然你要保持你的博客更新哦。会酌情清理很久很久不更新的、不符合要求的友链,我就不再另行通知啦。
这是我的站点信息
|key|value|
|:-:|:-:|
|站点名称|Nofated's Blog|
|站点链接|https://nofated095.github.io 或 http://nofated.gitee.io|
|站点描述|I hope to be with you everyday.|
|站点LOGO|https://pic.rmb.bdstatic.com/bjh/020a46e8318d66b55d73afe31805d653.jpeg|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mdui@1.0.0/dist/css/mdui.min.css">
<script src="https://cdn.jsdelivr.net/npm/mdui@1.0.0/dist/js/mdui.min.js"></script>
<body class="mdui-loaded">
<div class="mdui-container-fluid">
<div class="mdui-row">
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.xiaojin233.cn" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://cdn.jsdelivr.net/gh/jinzhijie/jinzhijie.github.io@master/images/avatar.png">
<div class="mdui-card-header-title">Xiao_Jin' Blog</div>
<div class="mdui-card-header-subtitle">记录生活,分享有趣</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://xiaohaoxh.cn/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://pic.rmb.bdstatic.com/bjh/ee44729dbb5e8dc1f8cc74ddee069824.jpeg">
<div class="mdui-card-header-title">XiaohaoのBlog</div>
<div class="mdui-card-header-subtitle">一个深圳初中生的原创生活书~</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.restent.win" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://cdn.jsdelivr.net/gh/Restent/Restent/avatar.jpg">
<div class="mdui-card-header-title">Restent Blog</div>
<div class="mdui-card-header-subtitle">I need to learn to let myself go.</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://www.mashirl.com/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://cdn.jsdelivr.net/gh/Mashirl/Images/avatar.jpg">
<div class="mdui-card-header-title">Mashirl's Blog</div>
<div class="mdui-card-header-subtitle">予 世界温柔以待 惟愿 时光静好</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.moeworld.tech/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://blog.moeworld.tech/wp-content/themes/kratos-pjax-master/static/images/photo.jpg">
<div class="mdui-card-header-title">空域</div>
<div class="mdui-card-header-subtitle">探索更大的世界</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://ivampiresp.com/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://fdn.geekzu.org/avatar/9116fc3de8f9a46668beb1a6b7dbcbcd">
<div class="mdui-card-header-title">iVampireSP的物语</div>
<div class="mdui-card-header-subtitle">终究没有结束呐</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.charlieyu4994.cn/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://blog.charlieyu4994.cn/images/avatar.png">
<div class="mdui-card-header-title">CharlieYu4994的博客</div>
<div class="mdui-card-header-subtitle">就只是博客而已</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://www.littleqiu.net/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://www.littleqiu.net/images/Avatar.png">
<div class="mdui-card-header-title">DreamCity</div>
<div class="mdui-card-header-subtitle">愿你有一天,能与你最重要的人重逢</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.bangbang93.com/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://tva3.sinaimg.cn/crop.0.0.200.200.200/56e0fc78jw1e8qgp5bmzyj2050050aa8.jpg">
<div class="mdui-card-header-title">bangbang93.blog()</div>
<div class="mdui-card-header-subtitle">bangbang93常驻据点</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://diygod.me/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://cdn.jsdelivr.net/gh/DIYgod/diygod.me@gh-pages/images/DIYgod-avatar.webp">
<div class="mdui-card-header-title">Hi, DIYGod</div>
<div class="mdui-card-header-subtitle">写代码是热爱,写到世界充满爱</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://blog.becomingcelia.com/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://blog.becomingcelia.com/zb_users/theme/suiranx_air/image/favicon.ico">
<div class="mdui-card-header-title">Celia的博客</div>
<div class="mdui-card-header-subtitle">读万卷书,行万里路</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://shuiyunxc.gitee.io/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://shuiyunxc.gitee.io/images/avatar.png">
<div class="mdui-card-header-title">独行秀才的老窝</div>
<div class="mdui-card-header-subtitle">专注于黑苹果安装维护</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://www.runningcheese.com/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://www.runningcheese.com/wp-content/uploads/2019/07/11/2019071115110119.png">
<div class="mdui-card-header-title">奔跑中的奶酪</div>
<div class="mdui-card-header-subtitle">有智,有趣,有爱</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://www.52ecy.cn/" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://tvax4.sinaimg.cn/crop.0.0.640.640.180/78350c19ly8fjzdg8pbsqj20hs0hsmyu.jpg">
<div class="mdui-card-header-title">阿珏博客</div>
<div class="mdui-card-header-subtitle">逐梦,逐二次元,就如同你所看到的一样</div>
</div>
</div>
</a>
</div>
</div>
</div>
</body>
该页面采用了 `Material Design` 的设计,下面是示例
``` HTML MDUI>folded
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mdui@1.0.0/dist/css/mdui.min.css"> // 加载主题文件
<script src="https://cdn.jsdelivr.net/npm/mdui@1.0.0/dist/js/mdui.min.js"></script>
<body class="mdui-loaded">
<div class="mdui-container-fluid">
<div class="mdui-row">
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://example.com" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://example.com/images/avatar.png">
<div class="mdui-card-header-title">YourNamehere</div>
<div class="mdui-card-header-subtitle">YourTexthere</div>
</div>
</div>
</a>
</div>
<div class="mdui-col-xs-12 mdui-col-sm-6"><br>
<a href="https://example1.com" target="_blank">
<div class="mdui-card mdui-hoverable mdui-ripple">
<div class="mdui-card-header">
<img class="mdui-card-header-avatar" src="https://example1.com/images/avatar.png">
<div class="mdui-card-header-title">YourNamehere</div>
<div class="mdui-card-header-subtitle">YourTexthere</div>
</div>
</div>
</a>
</div>
</div>
</div>
</body>
```

17
source/media/index.md Normal file
View File

@ -0,0 +1,17 @@
---
title: 媒体
cover: https://bing.biturl.top/?resolution=1920&format=image&index=0&mkt=zh-CN
date: 2020-10-01 00:00:00
---
## 我喜欢的音乐
{% meting "5299711328" "netease" "playlist" %}
## 随便收藏的歌
{% meting "2893951019" "netease" "playlist" %}
## 来玩游戏啊awa
{% meting "3051358227" "netease" "playlist" %}

0
themes/.gitkeep Normal file
View File

1
themes/icarus/.eslintignore Executable file
View File

@ -0,0 +1 @@
node_modules/

68
themes/icarus/.eslintrc.json Executable file
View File

@ -0,0 +1,68 @@
{
"extends": [
"hexo",
"plugin:react/recommended",
"plugin:json/recommended"
],
"settings": {
"node": {
"tryExtensions": [
".js",
".jsx",
".json"
]
},
"react": {
"version": "16.0"
}
},
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"react/jsx-uses-vars": "error",
"indent": [
"error",
4,
{
"SwitchCase": 1
}
],
"react/no-unknown-property": [
"error",
{
"ignore": [
"class",
"onclick",
"onload",
"onsubmit",
"crossorigin"
]
}
],
"react/react-in-jsx-scope": [
"off"
],
"react/prop-types": [
"off"
],
"react/display-name": [
"off"
],
"react/jsx-key": [
"off"
],
"react/jsx-no-target-blank": [
"error",
{
"allowReferrer": true
}
]
}
}

View File

@ -0,0 +1,39 @@
---
name: Bug反馈
about: 请按照模板填写Bug反馈否则你的Issue可能会被直接关闭。
title: [Bug] 问题概述
labels: ''
assignees: ''
---
> 确保你在提交Bug反馈之前仔细阅读了[Hexo文档](https://hexo.io/zh-cn/)[Icarus用户指南](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/),和[GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues)来了解你的问题是否已经被他人提出过。
**Bug描述**
简洁清晰地描述你遇到的Bug是什么。
**系统与环境**
列出你的Hexo和Icarus的版本和配置。
- Hexo操作系统和Node.js的版本使用`hexo version`命令来查看)
- 站点配置文件`_config.yml`
- 主题配置文件`_config.icarus.yml`或`themes/icarus/_config.yml`
- 其他额外的配置文件文章front-matter`_config.post.yml`,或`_config.page.yml`
- 浏览器版本如Firefox 70.0Chrome Android 80.0
**复现方式**
列出复现这个Bug的步骤
1. 访问‘...
2. 点击’...
3. 下拉到‘...
4. 出现‘...’的错误
**期望行为**
简洁清晰地描述没有这个情况下你期望得到的结果。
**截图**
如果可以的话,请附上几张截图来帮助说明你遇到的问题。
**额外上下文**
附上与问题有关的其他上下文信息。

View File

@ -0,0 +1,39 @@
---
name: Bug Report
about: Please follow this template if you are reporting a bug, or your issue may be closed without further notice.
title: [Bug] Bug summary
labels: ''
assignees: ''
---
> Make sure you go through the [Hexo docs](https://hexo.io), [Icarus user manual](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus-User-Guide/), and [GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues) to see if the bug you are reporting has been already addressed by others.
**Describe the bug**
A clear and concise description of what the bug is.
**System and Environment**
The version and configuration of Hexo and Icarus.
- Hexo, OS, and node version (use `hexo version` command to view these information)
- Site configuration file `_config.yml`
- Theme configuration file `_config.icarus.yml` or `themes/icarus/_config.yml`
- Any additional theme configuration files (post front-matter, `_config.post.yml`, or `_config.page.yml`)
- Browser and version (e.g., Firefox 70.0, Chrome Android 80.0)
**To Reproduce**
Steps to reproduce the behavior, such as:
1. Go to '...'
2. Click on '...'
3. Scroll down to '...'
4. '...' error appears
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,20 @@
blank_issues_enabled: false
contact_links:
- name: Gitter
url: https://gitter.im/hexo-theme-icarus/community
about: Redirect your Icarus usage questions to Gitter.
- name: Gitter
url: https://gitter.im/hexo-theme-icarus/community
about: 与Icarus使用相关的问题请转至这里。
- name: Bug Report
url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=bug_report.md
about: Please follow this template if you are reporting a bug, or your issue may be closed without further notice.
- name: Bug反馈
url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=Bug反馈.md
about: 请按照模板填写Bug反馈否则你的Issue可能会被直接关闭。
- name: Feature Request
url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=feature_request.md
about: Please follow this template if you are requesting a new feature, or your issue may be closed without further notice.
- name: 功能建议
url: https://github.com/ppoffice/hexo-theme-icarus/issues/new?template=功能建议.md
about: 请按照模板填写功能建议否则你的Issue可能会被直接关闭。

View File

@ -0,0 +1,26 @@
---
name: Feature Request
about: Please follow this template if you are requesting a new feature, or your issue may be closed without further notice.
title: [FEAT] Feature request summary
labels: ''
assignees: ''
---
> Make sure you go through the [Hexo docs](https://hexo.io), [Icarus user manual](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus-User-Guide/), and [GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues) to see if the feature you are requesting has been already addressed by others.
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is (e.g., I'm always frustrated when [...]).
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,26 @@
---
name: 功能建议
about: 请按照模板填写功能建议否则你的Issue可能会被直接关闭。
title: [FEAT] 功能建议概述
labels: ''
assignees: ''
---
> 确保你在提交功能建议之前仔细阅读了[Hexo文档](https://hexo.io/zh-cn/)[Icarus用户指南](https://ppoffice.github.io/hexo-theme-icarus/tags/Icarus%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97/),和[GitHub issues](https://github.com/ppoffice/hexo-theme-icarus/issues)来了解你的建议是否已经被他人提出过。
**你的功能建议与某个使用问题相关么?请详述。**
简洁清晰地描述你遇到的问题是什么(如:我在使用...的时候遇到了...)。
**描述你想要的解决方案**
简洁清晰地描述你想要的解决方案可以达到的效果。
**描述你考虑过的替代办法**
简洁清晰地描述你考虑过的替代解决方案或是新功能。
**额外上下文**
附上与功能请求有关的其他上下文信息或者截图。

View File

@ -0,0 +1,30 @@
---
name: Pull Request
about: Suggest a code change to this project.
title: ''
labels: ''
assignees: ''
---
**Note 0**
Please review [the contributing guide](https://github.com/ppoffice/hexo-theme-icarus/blob/master/CONTRIBUTING.md) before making this pull request.
**Note 1**
Please break up your pull request into multiple smaller requests if it contains multiple bug fixes
or new features.
Each pull request should have one bug fix or new feature only for better code maintainability.
**Note 2**
Many components of this theme, including core functions, some Hexo extensions, widgets and plugins,
have been moved to [ppoffice/hexo-component-inferno](https://github.com/ppoffice/hexo-component-inferno).
Please make a pull request to that repository instead of this one if your changes are related to
the above components.
**Detailed description**
> Please use the [Icarus issue template](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.github/ISSUE_TEMPLATE/bug_report.md) if it is a bug fix.
> Please use the [Icarus feature request template](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.github/ISSUE_TEMPLATE/feature_request.md) if it is a bug fix.

6
themes/icarus/.github/dependabot.yml vendored Executable file
View File

@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'daily'

32
themes/icarus/.github/stale.yml vendored Executable file
View File

@ -0,0 +1,32 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 14
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- bug:core
- bug:extension
- bug:general
- feature:core
- feature:extension
- feature:general
- tutorial:v1
- tutorial:v2
- tutorial:v3
- tutorial:v4
- tutorial:v5
- tutorial:v6
- tutorial:v7
- tutorial:v8
- tutorial:v9
- Gitalk
- utterances
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@ -0,0 +1,20 @@
name: GitHub Release
on:
push:
tags:
- "*"
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
prerelease: false

15
themes/icarus/.github/workflows/lint.yml vendored Executable file
View File

@ -0,0 +1,15 @@
name: Code Linting
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- run: npm install
- run: >
npm install $(node -e "const deps=require('./package.json').peerDependencies;
console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- run: npm run lint

View File

@ -0,0 +1,18 @@
name: Node.js Package
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

39
themes/icarus/.github/workflows/test.yml vendored Executable file
View File

@ -0,0 +1,39 @@
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [12, 14]
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
repository: hexojs/hexo-starter
- uses: actions/checkout@v2
with:
path: themes/icarus
- uses: actions/checkout@v2
with:
repository: SukkaLab/hexo-many-posts
path: source/_posts/hexo-many-posts
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- uses: actions/cache@v1
with:
path: node_modules
key: npm-cache
restore-keys: npm-cache
- run: npm install
- run: >
npm install $(node -e "const deps=require('./themes/icarus/package.json').dependencies;
console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- run: >
npm install $(node -e "const deps=require('./themes/icarus/package.json').peerDependencies;
console.log(Object.keys(deps).map(key=>key+'@'+deps[key]).join(' '));")
- run: npx hexo config theme icarus
- run: time NODE_ENV=production npx hexo g -b

116
themes/icarus/.gitignore vendored Executable file
View File

@ -0,0 +1,116 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
_config*.yml*
yarn.lock
# Intellij Idea config file
.idea
*.ipr
*.iws
*.iml

5
themes/icarus/.npmignore Executable file
View File

@ -0,0 +1,5 @@
.github/
.eslintignore
.eslintrc.json
.travis.yml
yarn.lock

40
themes/icarus/CONTRIBUTING.md Executable file
View File

@ -0,0 +1,40 @@
# Contributing Guidelines
## Code styles
Please refer to the [.eslintrc.json](https://github.com/ppoffice/hexo-theme-icarus/blob/master/.eslintrc.json).
You can also use `npm run lint` or `yarn lint` to fix code style issues.
## Project versioning
We use [SemVer](http://semver.org/) for versioning.
Any changes to the code base should not be released using an existing version.
## Commit message format
The commit message should follow the [Bluejava commit message format](https://github.com/bluejava/git-commit-guide).
The supported scopes are:
- **core** for changes related to Hexo extensions and theme-specific functions
- **comment** for comment plugin layout, schema, style, or script changes
- **share** for share plugin layout, schema, style, or script changes
- **donate** for donation plugin layout, schema, style, or script changes
- **search** for search plugin layout, schema, style, or script changes
- **widget** for widget layout, schema, style, or script changes
- **plugin** for other plugin layout, schema, style, or script changes
- **i18n** for adding or updating translations
- **test** for testing or linting-related commits
- **build** for build scripts, CI, other development or deployment related commits
- use __\*__ or leave empty to refer to commits that do not have a clear scope
## Submit changes
1. Fork this repository, make changes to it, and run it against some actual Hexo sites to see if
anything is broken.
You should also run `npm run lint` or `yarn lint` to find and fix any code formatting issue.
2. Submit a pull request to our repository. Please make sure you followed the instructions
above.
3. We will review the pull request regularly and inform you of our questions and any changes
that need to be made before we can merge your pull request.
4. We expect your response within two weeks, after which your pull request may be closed if
no activity is shown.

21
themes/icarus/LICENSE Executable file
View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2020 PPOffice
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

158
themes/icarus/README.md Executable file
View File

@ -0,0 +1,158 @@
<p align="center" class="mb-2">
<img class="not-gallery-item" height="48" src="https://ppoffice.github.io/hexo-theme-icarus/img/logo.svg">
<br> A simple, delicate, and modern theme for the static site generator Hexo.
<br>
<a href="https://ppoffice.github.io/hexo-theme-icarus/">Preview</a> |
<a href="https://ppoffice.github.io/hexo-theme-icarus/categories/">Documentation</a> |
<a href="https://gitter.im/hexo-theme-icarus/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge">Chat on Gitter</a>
<br>
</p>
![](https://ppoffice.github.io/hexo-theme-icarus/gallery/preview.png?1 "Icarus Preview")
## :cd: Installation
```shell
$ npm install hexo-theme-icarus
$ hexo config theme icarus
```
Please refer to [Getting Started with Icarus](https://ppoffice.github.io/hexo-theme-icarus/uncategorized/getting-started-with-icarus/)
for more details.
## :gift: Features
### Cyberpunk Theme Variant
Tap into the future cyber world with the newly added Cyberpunk theme variant.
Inspired by [Cyberpunk 2077](https://www.cyberpunk.net).
![Icarus Cyberpunk](https://ppoffice.github.io/hexo-theme-icarus/gallery/screenshots/cyberpunk.png "Icarus Cyberpunk")
### Extensive Plugin Support
Icarus includes plentiful search, comment, sharing and other plugins out of the box that makes your
blog feature-rich and powerful.
**[Comment](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment/)**
Changyan &middot; Disqus &middot; DisqusJS &middot; Facebook &middot; Gitalk &middot; Gitment &middot;
Isso &middot; LiveRe &middot; Utterance &middot; Valine
**[Donate Button](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Donation/)**
Afdian.net &middot; Alipay &middot; Buy me a coffee &middot; Patreon &middot; Paypal &middot; Wecat
**[Search](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search/)**
Algolia &middot; Baidu &middot; Google CSE &middot; Insight
**[Share](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share/)**
AddThis &middot; AddToAny &middot; Baidu Share &middot; Share.js &middot; ShareThis
**[Widgets](https://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/)**
Google Adsense &middot; Archives &middot; Categories &middot; External Site Links &middot;
Recent Posts &middot; Google Feedburner &middot; Tags &middot; Table of Contents
**[Analytics](https://ppoffice.github.io/hexo-theme-icarus/Plugins/Analytics/icarus-user-guide-web-analytics-plugins/)**
Baidu Statistics &middot; Bing Webmaster &middot; BuSuanZi Web Counter &middot; CNZZ Statistics &middot;
Google Analytics &middot; Hotjar &middot; StatCounter &middot; Twitter Conversion Tracking
**[Other Plugins](https://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/)**
Cookie Consent &middot; LightGallery &middot; Justified Gallery &middot; KaTeX &middot; MathJax &middot;
Oudated Browser &middot; Page Loading Animations
### Colorful Code Highlight
Icarus directly import stylesheets from the [highlight.js](https://highlightjs.org/) package and makes more than
90 code highlight themes available to you.
<table>
<tr>
<th>Atom One Light</th>
<th>Monokai</th>
<th>Kimbie Dark</th>
</tr>
<tr>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/code-highlight/atom-one-light.png?2"></td>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/code-highlight/monokai.png?2"></td>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/code-highlight/kimbie-dark.png?2"></td>
</tr>
</table>
### Flexible Theme Configuration
Icarus allows you to configure your site on a per-page or per-layout basis.
<div>
<table>
<tr>
<th>_config.yml</th>
<th>post.md</th>
<th>_config.page.yml</th>
</tr>
<tr>
<td>
<pre>widgets:
- type: profile
position: left
- type: recent_posts
position: right</pre>
</td>
<td>
<pre>widgets:
- type: profile
position: left
- type: recent_posts
position: left</pre>
</td>
<td>
<pre>widgets: null
</pre>
</td>
</tr>
<tr>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/screenshots/default-config.png"></td>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/screenshots/post-config.png"></td>
<td><img width="266" src="https://ppoffice.github.io/hexo-theme-icarus/gallery/screenshots/layout-config.png"></td>
</tr>
</table>
</div>
### Responsive Layout
Give your audiences best viewing experience with Icarus's mobile-friendly responsive layout.
![Responsive Layout](https://ppoffice.github.io/hexo-theme-icarus/gallery/responsive.png)
## :hammer: Development
This project is built with
- [Hexo](https://hexo.io/)
- [Inferno.js](https://infernojs.org/)
- [Stylus](https://stylus-lang.com/)
- [Bulma](https://bulma.io/)
Please refer to the [documentation](https://ppoffice.github.io/hexo-theme-icarus/categories/) and
[contributing guide](https://github.com/ppoffice/hexo-theme-icarus/blob/master/CONTRIBUTING.md) for implementation details.
## :tada: Contribute
If you feel like to help us build a better Icarus, you can
:black_nib: [Submit a tutorial](https://github.com/ppoffice/hexo-theme-icarus/new/site/source/_posts) |
:earth_asia: [Add a translation](https://github.com/ppoffice/hexo-theme-icarus/tree/master/languages) |
:triangular_flag_on_post: [Report a bug](https://github.com/ppoffice/hexo-theme-icarus/issues/new) |
:electric_plug: [Suggest a new feature](https://github.com/ppoffice/hexo-theme-icarus/pulls)
## :memo: License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/ppoffice/hexo-theme-icarus/blob/master/LICENSE) file for details.

107
themes/icarus/include/config.js Executable file
View File

@ -0,0 +1,107 @@
/* eslint no-process-exit: "off" */
const fs = require('fs');
const path = require('path');
const util = require('util');
const crypto = require('crypto');
const logger = require('hexo-log')();
const yaml = require('hexo-component-inferno/lib/util/yaml');
const { Migrator } = require('hexo-component-inferno/lib/core/migrate');
const { SchemaLoader } = require('hexo-component-inferno/lib/core/schema');
const { yellow } = require('./util/console');
function loadThemeConfig(hexo, cfgPaths) {
const configs = cfgPaths.map(cfgPath => fs.readFileSync(cfgPath))
.map(cfgPath => yaml.parse(cfgPath));
return Object.assign({}, ...configs, hexo.config.theme_config);
}
function generateThemeConfigFile(schema, cfgPath) {
const defaultValue = schema.getDefaultValue();
fs.writeFileSync(cfgPath, defaultValue.toYaml());
}
function hashConfigFile(cfgPath) {
const content = fs.readFileSync(cfgPath);
return crypto.createHash('md5').update(content).digest('hex');
}
function checkConfig(hexo) {
if (!process.argv.includes('--icarus-dont-check-config')) {
logger.info('=== Checking theme configurations ===');
const siteCfgFile = path.join(hexo.base_dir, '_config.yml');
const themeSiteCfg = path.join(hexo.base_dir, '_config.icarus.yml');
const themeDirCfg = path.join(hexo.theme_dir, '_config.yml');
const themeCfgPaths = [themeDirCfg, themeSiteCfg].filter(cfgPath => fs.existsSync(cfgPath));
const themeSiteCfgExample = themeSiteCfg + '.example';
const schemaDir = path.join(hexo.theme_dir, 'include/schema/');
const loader = SchemaLoader.load(require(path.join(schemaDir, 'config.json')), schemaDir);
const schema = loader.getSchema('/config.json');
if (!process.argv.includes('--icarus-dont-generate-config')) {
if (!themeCfgPaths.length) {
logger.warn('None of the following configuration files is found:');
logger.warn(`- ${yellow(themeSiteCfg)}`);
logger.warn(`- ${yellow(themeDirCfg)}`);
logger.info('Generating theme configuration file...');
generateThemeConfigFile(schema, themeSiteCfg);
themeCfgPaths.push(themeSiteCfg);
logger.info(`${yellow(themeSiteCfg)} created successfully.`);
logger.info('To skip configuration generation, use "--icarus-dont-generate-config".');
}
}
let cfg = loadThemeConfig(hexo, themeCfgPaths);
if (!process.argv.includes('--icarus-dont-upgrade-config')) {
const migrator = new Migrator(require(path.join(hexo.theme_dir, 'include/migration/head')));
if (cfg.version && migrator.isOudated(cfg.version)) {
logger.warn(`Your theme configuration is outdated (${cfg.version} < ${migrator.getLatestVersion()}).`);
logger.info('To skip the configuration upgrade, use "--icarus-dont-upgrade-config".');
logger.info('Backing up theme configuration files...');
for (const cfgPath of themeCfgPaths) {
const backupPath = cfgPath + '.' + hashConfigFile(cfgPath);
const relCfgPath = path.relative(hexo.base_dir, cfgPath);
const relBackupPath = path.relative(hexo.base_dir, backupPath);
fs.renameSync(cfgPath, backupPath);
logger.info(`${yellow(relCfgPath)} => ${yellow(relBackupPath)}`);
}
logger.info('Upgrading theme configurations...');
cfg = migrator.migrate(cfg);
fs.writeFileSync(themeSiteCfg, yaml.stringify(cfg));
logger.info(`Theme configurations are written to ${yellow(themeSiteCfg)}.`);
generateThemeConfigFile(schema, themeSiteCfgExample);
logger.info(`Example configurations is at ${yellow(themeSiteCfgExample)}.`);
}
}
const validation = schema.validate(cfg);
if (validation !== true) {
logger.warn('Theme configurations failed one or more checks.');
logger.warn('Icarus may still run, but you will encounter unexcepted results.');
logger.warn('Here is some information for you to correct the configuration file.');
logger.warn(util.inspect(validation));
}
const rootCfg = yaml.parse(fs.readFileSync(siteCfgFile));
if (rootCfg.theme_config) {
logger.warn(`"theme_config" found in ${yellow(siteCfgFile)}.`);
logger.warn(`Please remove theme configurations from ${yellow(siteCfgFile)}.`);
}
}
}
module.exports = hexo => {
try {
checkConfig(hexo);
} catch (e) {
logger.error(e);
logger.error('Theme configuration checking failed.');
logger.info('You may use \'--icarus-dont-check-config\' to skip configuration checking.');
process.exit(-1);
}
};

View File

@ -0,0 +1,34 @@
/* eslint no-process-exit: "off" */
const semver = require('semver');
const logger = require('hexo-log')();
const packageInfo = require('../package.json');
const { yellow, red, green } = require('./util/console');
module.exports = hexo => {
function checkDependency(name, reqVer) {
try {
require.resolve(name);
const version = require(name + '/package.json').version;
if (!semver.satisfies(version, reqVer)) {
logger.error(`Package ${yellow(name)}'s version (${yellow(version)}) does not satisfy the required version (${red(reqVer)}).`);
return false;
}
return true;
} catch (e) {
logger.error(`Package ${yellow(name)} is not installed.`);
}
return false;
}
logger.info('=== Checking package dependencies ===');
const dependencies = Object.assign({}, packageInfo.peerDependencies, packageInfo.dependencies);
const missingDeps = Object.keys(dependencies)
.filter(name => !checkDependency(name, dependencies[name]));
if (missingDeps && missingDeps.length) {
logger.error('Please install the missing dependencies your Hexo site root directory:');
logger.error(green('npm install --save ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' ')));
logger.error('or:');
logger.error(green('yarn add ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' ')));
process.exit(-1);
}
};

View File

@ -0,0 +1 @@
module.exports = require('./v3_v4');

View File

@ -0,0 +1,102 @@
const logger = require('hexo-log')();
const deepmerge = require('deepmerge');
const Migration = require('hexo-component-inferno/lib/core/migrate').Migration;
module.exports = class extends Migration {
constructor() {
super('3.0.0', null);
}
upgrade(config) {
const result = deepmerge({}, config);
result.head = {
favicon: config.favicon || null,
canonical_url: config.canonical_url || null,
open_graph: config.open_graph || null,
meta: config.meta || null,
rss: config.rss || null
};
delete result.favicon;
delete result.canonical_url;
delete result.open_graph;
delete result.meta;
delete result.rss;
if (result.logo === '/images/logo.svg') {
result.logo = result.logo.replace(/^\/images/, '/img');
}
if (result.head.favicon === '/img/favicon.svg') {
result.head.favicon = result.head.favicon.replace(/^\/images/, '/img');
}
if (result.search && Object.prototype.hasOwnProperty.call(result.search, 'type')) {
switch (result.search.type) {
case 'google-cse':
result.search.type = 'google_cse';
break;
}
}
if (result.comment && Object.prototype.hasOwnProperty.call(result.comment, 'type')) {
switch (result.comment.type) {
case 'changyan':
result.comment.app_id = config.comment.appid;
delete result.comment.appid;
break;
}
}
if (Array.isArray(result.donate) && result.donate.length) {
result.donates = result.donate;
delete result.donate;
}
if (Array.isArray(result.widgets) && result.widgets.length) {
for (const widget of result.widgets) {
if (Object.prototype.hasOwnProperty.call(widget, 'type')) {
switch (widget.type) {
case 'archive':
widget.type = 'archives';
break;
case 'category':
widget.type = 'categories';
break;
case 'tag':
widget.type = 'tags';
break;
case 'tagcloud':
logger.warn('The tagcloud widget has been removed from Icarus in version 3.0.0.');
logger.warn('Please remove it from your configuration file.');
break;
}
}
}
}
if (result.plugins && typeof result.plugins === 'object') {
for (const name in result.plugins) {
switch (name) {
case 'outdated-browser':
result.plugins.outdated_browser = result.plugins[name];
delete result.plugins[name];
break;
case 'back-to-top':
result.plugins.back_to_top = result.plugins[name];
delete result.plugins[name];
break;
case 'baidu-analytics':
result.plugins.baidu_analytics = result.plugins[name];
delete result.plugins[name];
break;
case 'google-analytics':
result.plugins.google_analytics = result.plugins[name];
delete result.plugins[name];
break;
}
}
}
return result;
}
};

View File

@ -0,0 +1,14 @@
const Migration = require('hexo-component-inferno/lib/core/migrate').Migration;
module.exports = class extends Migration {
constructor() {
super('4.0.0', null);
}
upgrade(config) {
if (typeof config.article === 'object') {
delete config.article.thumbnail;
}
return config;
}
};

View File

@ -0,0 +1,15 @@
const logger = require('hexo-log')();
module.exports = hexo => {
logger.info('=== Registering Hexo extensions ===');
require('hexo-component-inferno/lib/hexo/filter/locals')(hexo);
require('hexo-component-inferno/lib/hexo/generator/assets')(hexo);
require('hexo-component-inferno/lib/hexo/generator/insight')(hexo);
require('hexo-component-inferno/lib/hexo/generator/categories')(hexo);
require('hexo-component-inferno/lib/hexo/generator/category')(hexo);
require('hexo-component-inferno/lib/hexo/generator/manifest')(hexo);
require('hexo-component-inferno/lib/hexo/generator/tags')(hexo);
require('hexo-component-inferno/lib/hexo/helper/cdn')(hexo);
require('hexo-component-inferno/lib/hexo/helper/page')(hexo);
require('hexo-component-inferno/lib/core/view').init(hexo);
};

View File

View File

@ -0,0 +1,64 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/article.json",
"description": "Article related configurations",
"type": "object",
"properties": {
"highlight": {
"type": "object",
"description": "Code highlight settings",
"properties": {
"theme": {
"type": "string",
"description": "Code highlight themes\nhttps://github.com/highlightjs/highlight.js/tree/master/src/styles",
"default": "atom-one-light",
"nullable": true
},
"clipboard": {
"type": "boolean",
"description": "Show copy code button",
"default": true,
"nullable": true
},
"fold": {
"type": "string",
"description": "Default folding status of the code blocks. Can be \"\", \"folded\", \"unfolded\"",
"enum": [
"",
"folded",
"unfolded"
],
"default": "unfolded",
"nullable": true
}
},
"nullable": true
},
"readtime": {
"type": "boolean",
"description": "Whether to show estimated article reading time",
"default": true,
"nullable": true
},
"licenses": {
"$ref": "/misc/poly_links.json",
"description": "Article licensing block",
"examples": [
{
"Creative Commons": {
"icon": "fab fa-creative-commons",
"url": "https://creativecommons.org/"
},
"Attribution": {
"icon": "fab fa-creative-commons-by",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"Noncommercial": {
"icon": "fab fa-creative-commons-nc",
"url": "https://creativecommons.org/licenses/by-nc/4.0/"
}
}
]
}
}
}

View File

@ -0,0 +1,38 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/comment.json",
"description": "Comment plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Comment/",
"type": "object",
"oneOf": [
{
"$ref": "/comment/disqus.json"
},
{
"$ref": "/comment/changyan.json"
},
{
"$ref": "/comment/disqusjs.json"
},
{
"$ref": "/comment/facebook.json"
},
{
"$ref": "/comment/gitalk.json"
},
{
"$ref": "/comment/gitment.json"
},
{
"$ref": "/comment/isso.json"
},
{
"$ref": "/comment/livere.json"
},
{
"$ref": "/comment/utterances.json"
},
{
"$ref": "/comment/valine.json"
}
]
}

View File

@ -0,0 +1,29 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/donates.json",
"description": "Donate plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Donation/",
"type": "array",
"items": {
"type": "object",
"oneOf": [
{
"$ref": "/donate/afdian.json"
},
{
"$ref": "/donate/alipay.json"
},
{
"$ref": "/donate/buymeacoffee.json"
},
{
"$ref": "/donate/patreon.json"
},
{
"$ref": "/donate/paypal.json"
},
{
"$ref": "/donate/wechat.json"
}
]
}
}

View File

@ -0,0 +1,28 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/footer.json",
"description": "Page footer configurations",
"type": "object",
"properties": {
"links": {
"$ref": "/misc/poly_links.json",
"description": "Links to be shown on the right of the footer section",
"examples": [
{
"Creative Commons": {
"icon": "fab fa-creative-commons",
"url": "https://creativecommons.org/"
},
"Attribution 4.0 International": {
"icon": "fab fa-creative-commons-by",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"Download on GitHub": {
"icon": "fab fa-github",
"url": "https://github.com/ppoffice/hexo-theme-icarus"
}
}
]
}
}
}

View File

@ -0,0 +1,31 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/head.json",
"description": "Page metadata configurations",
"type": "object",
"properties": {
"favicon": {
"type": "string",
"description": "URL or path to the website's icon",
"default": "/img/favicon.svg",
"nullable": true
},
"manifest": {
"$ref": "/misc/manifest.json"
},
"open_graph": {
"$ref": "/misc/open_graph.json"
},
"structured_data": {
"$ref": "/misc/structured_data.json"
},
"meta": {
"$ref": "/misc/meta.json"
},
"rss": {
"type": "string",
"description": "URL or path to the website's RSS atom.xml",
"nullable": true
}
}
}

View File

@ -0,0 +1,40 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/navbar.json",
"description": "Page top navigation bar configurations",
"type": "object",
"properties": {
"menu": {
"type": "object",
"description": "Navigation menu items",
"patternProperties": {
".+": {
"type": "string",
"description": "URL or path of the menu link"
}
},
"examples": [
{
"Home": "/",
"Archives": "/archives",
"Categories": "/categories",
"Tags": "/tags",
"About": "/about"
}
],
"nullable": true
},
"links": {
"$ref": "/misc/poly_links.json",
"description": "Links to be shown on the right of the navigation bar",
"examples": [
{
"Download on GitHub": {
"icon": "fab fa-github",
"url": "https://github.com/ppoffice/hexo-theme-icarus"
}
}
]
}
}
}

View File

@ -0,0 +1,56 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/plugins.json",
"description": "Plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/",
"type": "object",
"properties": {
"animejs": {
"$ref": "/plugin/animejs.json"
},
"back_to_top": {
"$ref": "/plugin/back_to_top.json"
},
"baidu_analytics": {
"$ref": "/plugin/baidu_analytics.json"
},
"bing_webmaster": {
"$ref": "/plugin/bing_webmaster.json"
},
"busuanzi": {
"$ref": "/plugin/busuanzi.json"
},
"cnzz": {
"$ref": "/plugin/cnzz.json"
},
"cookie_consent": {
"$ref": "/plugin/cookie_consent.json"
},
"gallery": {
"$ref": "/plugin/gallery.json"
},
"google_analytics": {
"$ref": "/plugin/google_analytics.json"
},
"hotjar": {
"$ref": "/plugin/hotjar.json"
},
"katex": {
"$ref": "/plugin/katex.json"
},
"mathjax": {
"$ref": "/plugin/mathjax.json"
},
"outdated_browser": {
"$ref": "/plugin/outdated_browser.json"
},
"progressbar": {
"$ref": "/plugin/progressbar.json"
},
"statcounter": {
"$ref": "/plugin/statcounter.json"
},
"twitter_conversion_tracking": {
"$ref": "/plugin/twitter_conversion_tracking.json"
}
}
}

View File

@ -0,0 +1,26 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/providers.json",
"description": "CDN provider settings\nhttps://ppoffice.github.io/hexo-theme-icarus/Configuration/Theme/speed-up-your-site-with-custom-cdn/",
"type": "object",
"properties": {
"cdn": {
"type": "string",
"description": "Name or URL template of the JavaScript and/or stylesheet CDN provider",
"default": "jsdelivr",
"nullable": true
},
"fontcdn": {
"type": "string",
"description": "Name or URL template of the webfont CDN provider",
"default": "google",
"nullable": true
},
"iconcdn": {
"type": "string",
"description": "Name or URL of the fontawesome icon font CDN provider",
"default": "fontawesome",
"nullable": true
}
}
}

View File

@ -0,0 +1,20 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/search.json",
"description": "Search plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Search/",
"type": "object",
"oneOf": [
{
"$ref": "/search/insight.json"
},
{
"$ref": "/search/baidu.json"
},
{
"$ref": "/search/google_cse.json"
},
{
"$ref": "/search/algolia.json"
}
]
}

View File

@ -0,0 +1,23 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/share.json",
"description": "Share plugin configurations\nhttps://ppoffice.github.io/hexo-theme-icarus/categories/Plugins/Share/",
"type": "object",
"oneOf": [
{
"$ref": "/share/sharethis.json"
},
{
"$ref": "/share/addthis.json"
},
{
"$ref": "/share/addtoany.json"
},
{
"$ref": "/share/bdshare.json"
},
{
"$ref": "/share/sharejs.json"
}
]
}

View File

@ -0,0 +1,30 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/sidebar.json",
"description": "Sidebar configurations.\nPlease be noted that a sidebar is only visible when it has at least one widget",
"type": "object",
"properties": {
"left": {
"type": "object",
"description": "Left sidebar configurations",
"properties": {
"sticky": {
"type": "boolean",
"description": "Whether the sidebar sticks to the top when page scrolls",
"default": false
}
}
},
"right": {
"type": "object",
"description": "Right sidebar configurations",
"properties": {
"sticky": {
"type": "boolean",
"description": "Whether the sidebar sticks to the top when page scrolls",
"default": false
}
}
}
}
}

View File

@ -0,0 +1,48 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/common/widgets.json",
"description": "Sidebar widget configurations\nhttp://ppoffice.github.io/hexo-theme-icarus/categories/Widgets/",
"type": "array",
"items": {
"type": "object",
"properties": {
"position": {
"type": "string",
"description": "Where should the widget be placed, left sidebar or right sidebar",
"default": "left"
}
},
"oneOf": [
{
"$ref": "/widget/profile.json"
},
{
"$ref": "/widget/toc.json"
},
{
"$ref": "/widget/links.json"
},
{
"$ref": "/widget/categories.json"
},
{
"$ref": "/widget/recent_posts.json"
},
{
"$ref": "/widget/archives.json"
},
{
"$ref": "/widget/tags.json"
},
{
"$ref": "/widget/subscribe_email.json"
},
{
"$ref": "/widget/adsense.json"
}
],
"required": [
"position"
]
}
}

View File

@ -0,0 +1,78 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/config.json",
"description": "The configuration file definition",
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "Version of the configuration file",
"default": "4.0.0"
},
"variant": {
"type": "string",
"description": "Icarus theme variant, can be \"default\" or \"cyberpunk\"",
"enum": [
"default",
"cyberpunk"
],
"default": "default"
},
"logo": {
"type": [
"string",
"object"
],
"description": "Path or URL to the website's logo",
"default": "/img/logo.svg",
"properties": {
"text": {
"type": "string",
"description": "Text to be shown in place of the logo image"
}
},
"required": [
"text"
]
},
"head": {
"$ref": "/common/head.json"
},
"navbar": {
"$ref": "/common/navbar.json"
},
"footer": {
"$ref": "/common/footer.json"
},
"article": {
"$ref": "/common/article.json"
},
"search": {
"$ref": "/common/search.json"
},
"comment": {
"$ref": "/common/comment.json"
},
"donates": {
"$ref": "/common/donates.json"
},
"share": {
"$ref": "/common/share.json"
},
"sidebar": {
"$ref": "/common/sidebar.json"
},
"widgets": {
"$ref": "/common/widgets.json"
},
"plugins": {
"$ref": "/common/plugins.json"
},
"providers": {
"$ref": "/common/providers.json"
}
},
"required": [
"version"
]
}

View File

View File

View File

@ -0,0 +1,7 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/plugin/animejs.json",
"description": "Enable page startup animations",
"type": "boolean",
"default": true
}

View File

@ -0,0 +1,7 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/plugin/back_to_top.json",
"description": "Show the \"back to top\" button",
"type": "boolean",
"default": true
}

View File

View File

View File

@ -0,0 +1,92 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/widget/profile.json",
"description": "Profile widget configurations",
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "profile",
"nullable": true
},
"author": {
"type": "string",
"description": "Author name",
"examples": [
"Your name"
],
"nullable": true
},
"author_title": {
"type": "string",
"description": "Author title",
"examples": [
"Your title"
],
"nullable": true
},
"location": {
"type": "string",
"description": "Author's current location",
"examples": [
"Your location"
],
"nullable": true
},
"avatar": {
"type": "string",
"description": "URL or path to the avatar image",
"nullable": true
},
"avatar_rounded": {
"type": "boolean",
"description": "Whether show the rounded avatar image",
"default": false,
"nullable": true
},
"gravatar": {
"type": "string",
"description": "Email address for the Gravatar",
"nullable": true
},
"follow_link": {
"type": "string",
"description": "URL or path for the follow button",
"examples": [
"https://github.com/ppoffice"
],
"nullable": true
},
"social_links": {
"$ref": "/misc/poly_links.json",
"description": "Links to be shown on the bottom of the profile widget",
"examples": [
{
"Github": {
"icon": "fab fa-github",
"url": "https://github.com/ppoffice"
},
"Facebook": {
"icon": "fab fa-facebook",
"url": "https://facebook.com"
},
"Twitter": {
"icon": "fab fa-twitter",
"url": "https://twitter.com"
},
"Dribbble": {
"icon": "fab fa-dribbble",
"url": "https://dribbble.com"
},
"RSS": {
"icon": "fas fa-rss",
"url": "/"
}
}
]
}
},
"required": [
"type"
]
}

View File

@ -0,0 +1,194 @@
/* ---------------------------------
* Article Summary and Content
* --------------------------------- */
$article-font-size ?= 1.1rem
article
&.media
color: $text-light
a
color: inherit
&:hover
color: $primary
.image
width: 64px
height: 64px
img
object-fit: cover
width: 100%
height: 100%
.title
@extend .is-size-6
margin-bottom: .25em
.date, .categories
@extend .is-size-7
.categories
@extend .is-uppercase
.media-content
color: $text-light
.title
margin: 0
line-height: inherit
&.article
.article-meta, .article-tags
color: $text-light
.article-meta
overflow-x: auto
margin-bottom: .5rem
.article-more
@extend .button.is-light
.content
word-wrap: break-word
font-size: $article-font-size
h1
font-size: 1.75em
h2
font-size: 1.5em
h3
font-size: 1.25em
h4
font-size: 1.125em
h5
font-size: 1em
pre
font-size: .85em
code
padding: 0
background: transparent
overflow-wrap: break-word
blockquote
&.pullquote
float: right
max-width: 50%
font-size: 1.15rem
position: relative
footer
strong + cite
margin-left: .5em
.message.message-immersive
border-radius: 0
margin: 0 0 - $card-content-padding $card-content-padding 0 - $card-content-padding
.message-body
border: none
.rtl
direction: rtl
.level
&, &.is-mobile
.level-item:not(:last-child)
margin-left: .75rem
margin-right: 0
// Overflow table
.table-overflow
overflow-x: auto
table
width: auto !important
th
word-break: keep-all
// Video container
.video-container
position: relative
padding-bottom: 56.25%
padding-top: 25px
height: 0
iframe
position: absolute
top: 0
left: 0
width: 100%
height: 100%
.article-licensing
position: relative
z-index: 1
box-shadow: none
background: $white-ter
border-radius: $radius
overflow: hidden
&:after
position: absolute
z-index: -1
right: -50px
top: -87.87px
content: '\f25e'
font-size: 200px
font-family: 'Font Awesome 5 Brands'
opacity: .1
.level-left
flex-wrap: wrap
max-width: 100%
.licensing-title
@extend .mb-3
line-height: 1.2
p:not(:last-child)
@extend .mb-1
a
@extend .is-size-7, .has-text-grey
.licensing-meta
.level-item
@extend .mr-4
.icons
.icon
@extend .ml-1
width: 1.2em
height: 1.2em
font-size: 1.2em
vertical-align: bottom
h6
@extend .is-size-7
a
color: inherit
a
&.article-nav-prev
span
text-align: left
flex-shrink: 1
word-wrap: break-word
white-space: normal
&.article-nav-next
span
text-align: right
flex-shrink: 1
word-wrap: break-word
white-space: normal

View File

@ -0,0 +1,99 @@
bulma-stylus-root = '../../../../node_modules/bulma-stylus/stylus'
/* ---------------------------------
* Override Bulma CSS Framework
* --------------------------------- */
$body-size ?= 14px
$body-background-color ?= #f7f7f7
$family-sans-serif ?= Ubuntu, Roboto, 'Open Sans', 'Microsoft YaHei', sans-serif
$family-code ?= 'Source Code Pro', monospace, 'Microsoft YaHei'
$size-7 ?= .85rem
$size-small ?= .75rem
$primary ?= $blue
$custom-colors ?= {
grey-lightest: {
'1': $grey-lightest
'2': $grey-darker
}
}
$navbar-item-active-color ?= $primary
$footer-background-color ?= $scheme-main
$gap ?= 64px
$tablet ?= 769px
$desktop ?= 1088px
$widescreen ?= 1280px
$fullhd ?= 1472px
$shadow ?= 0 4px 10px rgba(0, 0, 0, 0.05)
$title-weight ?= $weight-normal
$control-height ?= 2.25em
$button-padding-vertical ?= calc(0.375em - 1px)
$card-radius ?= $radius
$card-media-margin ?= 0.75rem
$card-shadow ?= $shadow, 0 0 1px rgba(0, 0, 0, 0.1)
$menu-item-active-color ?= $link
$menu-item-active-background-color ?= hsl(219, 70%, 96%)
$content-heading-weight ?= $weight-normal
$logo-height ?= 1.75rem
// FIXME: https://github.com/groenroos/bulma-stylus/issues/11
@import bulma-stylus-root + '/utilities/initial-variables'
@import bulma-stylus-root + '/utilities/functions'
@import bulma-stylus-root + '/utilities/derived-variables'
$colors = merge($colors, $custom-colors)
@import bulma-stylus-root + '/utilities/animations'
@import bulma-stylus-root + '/utilities/mixins'
@import bulma-stylus-root + '/utilities/controls'
@import bulma-stylus-root + '/base/_all'
@import bulma-stylus-root + '/components/_all'
@import bulma-stylus-root + '/elements/_all'
@import bulma-stylus-root + '/form/_all'
@import bulma-stylus-root + '/grid/_all'
@import bulma-stylus-root + '/layout/_all'
html
height: 100%
-webkit-text-size-adjust: 100%
-moz-text-size-adjust: 100%
-ms-text-size-adjust: 100%
text-size-adjust: 100%
body
min-height: 100%
display: flex
flex-direction: column
body > .section
flex-grow: 1
+desktop()
::-webkit-scrollbar
width: 8px
height: 8px
::-webkit-scrollbar-track
border-radius: 3px
background: rgba(0,0,0,0.06)
box-shadow: inset 0 0 5px rgba(0,0,0,0.1)
::-webkit-scrollbar-thumb
border-radius: 3px
background: rgba(0,0,0,0.12)
box-shadow: inset 0 0 10px rgba(0,0,0,0.2)
::-webkit-scrollbar-thumb:hover
background: rgba(0,0,0,0.24)

View File

@ -0,0 +1,8 @@
/* ---------------------------------
* Buttons
* --------------------------------- */
.button
&.is-transparent
color: inherit
background: transparent
border-color: transparent

View File

@ -0,0 +1,18 @@
/* ---------------------------------
* Card
* --------------------------------- */
.card
overflow: visible
border-radius: $card-radius
& + .card, & + .column-right-shadow
margin-top: 1.5rem
.card-image
overflow: hidden
border-top-left-radius: $card-radius
border-top-right-radius: $card-radius
.media + .media
border: none
margin-top: 0

View File

@ -0,0 +1,105 @@
/* ---------------------------------
* Code Highlight
* --------------------------------- */
$codeblock-caption-bg ?= rgba(200, 200, 200, .15)
figure.highlight
padding: 0
width: 100%
position: relative
margin: 1em 0 1em !important
border-radius: $radius
&.folded
.highlight-body
height: 0
.copy
opacity: .7
pre, table tr:hover
color: inherit
background: transparent
table
width: auto
tr td
border: none
tr:not(:first-child) td
padding-top: 0
tr:not(:last-child) td
padding-bottom: 0
pre
padding: 0
overflow: visible
.line, code .hljs
line-height: 1.5rem
figcaption, .gutter
background: $codeblock-caption-bg
figcaption
margin: 0 !important
padding: .3em 0em .3em .75em
font-style: normal
font-size: .8em
*
color: inherit
span
font-weight: 500
font-family: $family-code
.level-left *:not(:last-child)
margin-right: .5em
.level-right *:not(:first-child)
margin-left: .5em
.fold
cursor: pointer
&.level
overflow: auto
.level-right
a
padding: 0em .75em
.highlight-body
overflow: auto
.gutter
text-align: right
.tag, .title, .number, .section
display: inherit
font: inherit
margin: inherit
padding: inherit
background: inherit
height: inherit
text-align: inherit
vertical-align: inherit
min-width: inherit
border-radius: inherit
/* ---------------------------------
* Fix Gist Snippet
* --------------------------------- */
.gist
table
tr:hover
background: transparent
td
border: none
.file
all: initial

View File

@ -0,0 +1,58 @@
/* ---------------------------------
* Donate Buttons
* --------------------------------- */
$donate-qrcode-max-width ?= 280px
$donate-qrcode-shadow ?= $card-shadow
$donate-qrcode-box-radius ?= $card-radius
$donate-button-colors ?= {
'afdian': rgb(136, 95, 217),
'alipay': rgb(0, 160, 232),
'buymeacoffee': rgb(255, 221, 0),
'paypal': rgb(254, 183, 0),
'patreon': rgb(255, 66, 77),
'wechat': rgb(26, 173, 25),
}
.donate
position: relative
.qrcode
display: none
position: absolute
z-index: 99
bottom: 2.5em
line-height: 0
overflow: hidden
box-shadow: $donate-qrcode-shadow
border-radius: $donate-qrcode-box-radius
img
max-width: $donate-qrcode-max-width
&:hover
.qrcode
display: block
&:first-child:not(:last-child)
.qrcode
left: -.75rem
&:last-child:not(:first-child)
.qrcode
right: -.75rem
for $name, $color in $donate-button-colors
&[data-type={'"' + $name + '"'}]
color: findColorInvert($color)
background-color: $color
border-color: transparent
&:active
background-color: darken($color, 5%)
&:hover
background-color: darken($color, 2.5%)
&:focus:not(:active)
box-shadow: 0 0 0 .125em rgba($color, .25)

View File

@ -0,0 +1,20 @@
/* ---------------------------------
* Page Footer
* --------------------------------- */
footer.footer
.level-start
+mobile()
text-align: center
.level-end
.field
flex-wrap: wrap
align-items: center
+mobile()
justify-content: center
margin-top: 1rem
.footer-logo
img
max-height: $logo-height

View File

@ -0,0 +1,162 @@
/* ---------------------------------
* Spacing helpers
* --------------------------------- */
$spacer ?= 1rem
$spacers ?= 0, $spacer * .25, $spacer * .5, $spacer, $spacer * 1.5, $spacer * 3
for n in (0 .. 5)
.ml-{n}
margin-left: $spacers[n] !important
.mr-{n}
margin-right: $spacers[n] !important
.mx-{n}
@extend .ml-{n}, .mr-{n}
.ml-n{n}
margin-left: - $spacers[n] !important
.mr-n{n}
margin-right: - $spacers[n] !important
.mx-n{n}
@extend .ml-n{n}, .mr-n{n}
.mt-{n}
margin-top: $spacers[n] !important
.mb-{n}
margin-bottom: $spacers[n] !important
.my-{n}
@extend .mt-{n}, .mb-{n}
.mt-n{n}
margin-top: - $spacers[n] !important
.mb-n{n}
margin-bottom: - $spacers[n] !important
.my-n{n}
@extend .mt-n{n}, .mb-n{n}
.pl-{n}
padding-left: $spacers[n] !important
.pr-{n}
padding-right: $spacers[n] !important
.px-{n}
@extend .pl-{n}, .pr-{n}
.pl-n{n}
padding-left: - $spacers[n] !important
.pr-n{n}
padding-right: - $spacers[n] !important
.px-n{n}
@extend .pl-n{n}, .pr-n{n}
.pt-{n}
padding-top: $spacers[n] !important
.pb-{n}
padding-bottom: $spacers[n] !important
.py-{n}
@extend .pt-{n}, .pb-{n}
.pt-n{n}
padding-top: - $spacers[n] !important
.pb-n{n}
padding-bottom: - $spacers[n] !important
.py-n{n}
@extend .pt-n{n}, .pb-n{n}
.ml-auto
margin-left: auto !important
.mr-auto
margin-right: auto !important
.mx-auto
@extend .ml-auto, .mr-auto
.mt-auto
margin-top: auto !important
.mb-auto
margin-bottom: auto !important
.my-auto
@extend .mt-auto, .mb-auto
.pl-auto
margin-left: auto !important
.pr-auto
margin-right: auto !important
.px-auto
@extend .pl-auto, .pr-auto
.pt-auto
margin-top: auto !important
.pb-auto
margin-bottom: auto !important
.py-auto
@extend .pt-auto, .pb-auto
/* ---------------------------------
* Flex helpers
* --------------------------------- */
for n in (0 .. 5)
.order-{n}
order: n !important
.justify-content-start
justify-content: start !important
.justify-content-center
justify-content: center !important
.flex-shrink-1
flex-shrink: 1 !important
/* ---------------------------------
* Color helpers
* --------------------------------- */
.link-muted
color: inherit
&:hover
color: $primary !important
/* ---------------------------------
* Image helpers
* --------------------------------- */
.image
&.is-7by3
padding-top: 42.8%
img
bottom: 0
left: 0
position: absolute
right: 0
top: 0
.avatar
height: 100%
object-fit: cover
.fill
object-fit: cover
width: 100% !important
height: 100% !important

View File

@ -0,0 +1,53 @@
/* ---------------------------------
* Top Navigation
* --------------------------------- */
$navbar-item-padding-v ?= 1.25rem
$navbar-item-padding-h ?= .75rem
$navbar-item-margin-v ?= 0
$navbar-item-margin-h ?= 0
.navbar-main
box-shadow: $shadow
.navbar-menu, .navbar-start, .navbar-end
align-items: stretch
display: flex
padding: 0
flex-shrink: 0
.navbar-menu
flex-grow: 1
flex-shrink: 0
overflow-x: auto
.navbar-start
justify-content: flex-start
margin-right: auto
.navbar-end
justify-content: flex-end
margin-left: auto
.navbar-item
display: flex
align-items: center
padding: $navbar-item-padding-v $navbar-item-padding-h
margin: $navbar-item-margin-v $navbar-item-margin-h
&.is-active
background-color: transparent
+until($navbar-breakpoint)
.navbar-menu
justify-content: center
box-shadow: none
.navbar-start
margin-right: 0
.navbar-end
margin-left: 0
.navbar-logo
img
max-height: $logo-height

View File

@ -0,0 +1,32 @@
/* ---------------------------------
* Pagination and Post Navigation
* --------------------------------- */
$pagination-box-shadow ?= $card-shadow
$pagination-background-color ?= $button-background-color
$post-navigation-fg ?= $grey
.pagination
@extend .pagination.is-centered
margin-top: 1.5rem
.pagination-link,
.pagination-ellipsis,
.pagination-previous,
.pagination-next
a
color: $pagination-color
.pagination-link,
.pagination-previous,
.pagination-next
border: none
background: $pagination-background-color
box-shadow: $pagination-box-shadow
.pagination-link.is-current
background: $pagination-current-background-color
.post-navigation
color: $post-navigation-fg
flex-wrap: wrap
justify-content: space-around
.level-item
margin-bottom: 0

View File

@ -0,0 +1,128 @@
/* ---------------------------------
* Back to Top Button
* --------------------------------- */
#back-to-top
position: fixed
opacity: 0
outline: none
padding: 8px 0
line-height: 24px
border-radius: $card-radius
transform: translateY(120px)
transition: .4s ease opacity, .4s ease width, .4s ease transform, .4s ease border-radius
&.is-rounded
border-radius: 50%
&.fade-in
opacity: 1
&.rise-up
transform: translateY(0)
/* ---------------------------------
* Gallery Plugin
* --------------------------------- */
.gallery-item
.caption
color: $grey
/* ---------------------------------
* Page Loading Progressbar
* --------------------------------- */
.pace
user-select: none
pointer-events: none
.pace-progress
top: 0
right: 100%
width: 100%
height: 2px
z-index: 2000
position: fixed
background: $primary
.pace-inactive
display: none
/* ---------------------------------
* Fix FontAwesome Icons
* --------------------------------- */
.fa, .fab, .fal, .far, .fas
line-height: inherit
/* ---------------------------------
* MathJax and KaTeX
* --------------------------------- */
.MathJax, .katex-display
overflow-x: auto
overflow-y: hidden
.katex
white-space: nowrap
.katex-display
margin-top: -1em !important
.katex-html
padding-top: 1em
.tag
align-items: unset
background-color: unset
border-radius: unset
color: unset
display: unset
font-size: unset
height: unset
justify-content: unset
line-height: unset
padding-left: unset
padding-right: unset
white-space: unset
/* ---------------------------------
* Cookie Consent
* --------------------------------- */
.cc-window, .cc-revoke
font-size: 1.1rem !important
font-family: $family-sans-serif !important
.cc-window
color: $text !important
background-color: $scheme-main !important
&.cc-floating
border-radius: $card-radius
box-shadow: $card-shadow
&.cc-banner
background-color: darken($scheme-main, 2.5%) !important
&.cc-theme-block, &.cc-theme-classic
.cc-compliance > .cc-btn
border-radius: $radius-rounded
.cc-compliance > .cc-btn
font-weight: 400
border: none
color: $primary-invert
background-color: $primary
&:hover, &:focus
background-color: darken($primary, 2.5%)
&.cc-deny
&:hover
color: $primary
text-decoration: none
.cc-revoke
padding: .5rem 1rem !important
color: $primary-invert !important
background-color: $primary !important
&:hover
text-decoration: none !important
background-color: darken($primary, 2.5%)

View File

@ -0,0 +1,32 @@
/* ---------------------------------
* Responsive Layout
* --------------------------------- */
+widescreen()
.is-1-column .container, .is-2-column .container
max-width: $desktop - 2 * $gap
width: $desktop - 2 * $gap
+fullhd()
.is-2-column .container
max-width: $widescreen - 2 * $gap
width: $widescreen - 2 * $gap
.is-1-column .container
max-width: $desktop - 2 * $gap
width: $desktop - 2 * $gap
+tablet()
.is-sticky
position: -webkit-sticky
position: sticky
top: 1.5rem
z-index: 99
.column-main, .column-left, .column-right, .column-right-shadow
&.is-sticky
top: .75rem
align-self: flex-start
+mobile()
.section
padding: 1.5rem 1rem

View File

@ -0,0 +1,204 @@
/* ---------------------------------
* Search Box
* --------------------------------- */
// container sizes
$searchbox-container-width ?= 540px
$searchbox-container-margin ?= 100px
$searchbox-breakpoint-width ?= 559px
$searchbox-breakpoint-height ?= 479px
// overlay and container styles
$searchbox-box-shadow ?= $card-shadow
$searchbox-border-radius ?= $radius
$searchbox-bg-overlay ?= $modal-background-background-color
$searchbox-bg-container ?= $white-ter
$searchbox-border ?= $border
// header styles
$searchbox-bg-input ?= $white
$searchbox-bg-close-hover ?= $searchbox-bg-container
$searchbox-bg-close-active ?= $grey-lighter
// body styles
$searchbox-fg-result-header ?= $grey-light
$searchbox-fg-result-item-secondary ?= $grey-light
$searchbox-bg-result-item-hover ?= $searchbox-bg-input
$searchbox-fg-result-item-active ?= findColorInvert($primary)
$searchbox-bg-result-item-active ?= $primary
$searchbox-bg-result-item-highlight ?= $yellow
// footer styles
$searchbox-bg-pagination-item ?= $searchbox-bg-input
$searchbox-bg-pagination-item-hover ?= $searchbox-bg-container
$searchbox-fg-pagination-item-active ?= findColorInvert($primary)
$searchbox-bg-pagination-item-active ?= $primary
$searchbox-bg-pagination-item-disabled ?= $searchbox-bg-container
.searchbox
display: none
top: 0
left: 0
width: 100%
height: 100%
z-index: 100
font-size: 1rem
line-height: 0
background: $searchbox-bg-overlay
&.show
display: flex
a, a:hover
color: inherit
text-decoration: none
input
font-size: 1rem
border: none
outline: none
box-shadow: none
border-radius: 0
&, .searchbox-container
position: fixed
align-items: center
flex-direction: column
line-height: 1.25em
.searchbox-container
z-index: 101
display: flex
overflow: hidden
box-shadow: $searchbox-box-shadow
border-radius: $searchbox-border-radius
background-color: $searchbox-bg-container
width: $searchbox-container-width
top: $searchbox-container-margin
bottom: $searchbox-container-margin
.searchbox-header, .searchbox-body, .searchbox-footer
width: 100%
.searchbox-header
display: flex
flex-direction: row
line-height: 1.5em
font-weight: normal
background-color: $searchbox-bg-input
// fix Chrome 71 height issue
// https://github.com/ppoffice/hexo-theme-icarus/issues/719
min-height: 3rem
.searchbox-input-container
display: flex
flex-grow: 1
.searchbox-input
flex-grow: 1
color: inherit
box-sizing: border-box
padding: .75em 0 .75em 1.25em
background: $searchbox-bg-input
.searchbox-close
display: inline-block
font-size: 1.5em
padding: .5em .75em
cursor: pointer
&:hover
background: $searchbox-bg-close-hover
&:active
background: $searchbox-bg-close-active
.searchbox-body
flex-grow: 1
overflow-y: auto
border-top: 1px solid $searchbox-border
.searchbox-result-section header, .searchbox-result-item
padding: .75em 1em
.searchbox-result-section
border-bottom: 1px solid $searchbox-border
header
color: $searchbox-fg-result-header
.searchbox-result-item
display: flex
flex-direction: row
&:not(.disabled):not(.active):not(:active):hover
background-color: $searchbox-bg-result-item-hover
&:active, &.active
color: $searchbox-fg-result-item-active
background-color: $searchbox-bg-result-item-active
em
font-style: normal
background: $searchbox-bg-result-item-highlight
.searchbox-result-icon
margin-right: 1em
.searchbox-result-content
overflow: hidden
.searchbox-result-title, .searchbox-result-preview
display: block
overflow: hidden
white-space: nowrap
text-overflow: ellipsis
.searchbox-result-title-secondary
color: $searchbox-fg-result-item-secondary
.searchbox-result-preview
margin-top: .25em
.searchbox-result-item:not(:active):not(.active)
.searchbox-result-preview
color: $searchbox-fg-result-item-secondary
.searchbox-footer
padding: .5em 1em
.searchbox-pagination
margin: 0
padding: 0
list-style: none
text-align: center
.searchbox-pagination-item
margin: 0 .25rem
.searchbox-pagination-item, .searchbox-pagination-link
display: inline-block
.searchbox-pagination-link
overflow: hidden
padding: .5em .8em
box-shadow: $searchbox-box-shadow
border-radius: $searchbox-border-radius
background-color: $searchbox-bg-pagination-item
.searchbox-pagination-item.active
.searchbox-pagination-link
color: $searchbox-fg-pagination-item-active
background-color: $searchbox-bg-pagination-item-active
.searchbox-pagination-item.disabled
.searchbox-pagination-link
cursor: not-allowed
background-color: $searchbox-bg-pagination-item-disabled
.searchbox-pagination-item:not(.active):not(.disabled)
.searchbox-pagination-link:hover
background-color: $searchbox-bg-pagination-item-hover
@media screen and (max-width: $searchbox-breakpoint-width), screen and (max-height: $searchbox-breakpoint-height)
.searchbox .searchbox-container
top: 0
left: 0
width: 100%
height: 100%
border-radius: 0

View File

@ -0,0 +1,38 @@
/* ---------------------------------
* Archive Timeline
* --------------------------------- */
$timeline-fg-line ?= $grey-lighter
$timeline-bg-line ?= $card-background-color
.timeline
margin-left: 1rem
padding: 1rem 0 0 1.5rem
border-left: 1px solid $timeline-fg-line
.media
position: relative
&:before, &:last-child:after
content: ''
display: block
position: absolute
left: calc(-.375rem - 1.5rem - .25px)
&:before
width: .75rem
height: .75rem
top: calc(1rem + 1.5 * .85rem / 2 - .75rem / 2)
background: $timeline-fg-line
border-radius: 50%
&:first-child:before
top: calc(1.5 * .85rem / 2 - .75rem / 2)
&:last-child:after
width: .75rem
top: calc(1rem + 1.5 * .85rem / 2 + .75rem / 2)
bottom: 0
background: $timeline-bg-line
&:first-child:last-child:after
top: calc(1.5 * .85rem / 2 + .75rem / 2)

View File

@ -0,0 +1,65 @@
.widget
.menu-list
li
ul
margin-right: 0
.level
margin-bottom: 0
.level-left, .level-right, .level-item
flex-shrink: 1
.level-left, .level-right
align-items: flex-start
.tag
background: $light-grey
color: $white-invert
.tags
.tag:first-child
background: $primary
color: $primary-invert
.tag:last-child
background: $light-grey
color: $white-invert
.level.is-multiline
flex-wrap: wrap
/* ---------------------------------
* Table of Content Widget
* --------------------------------- */
+mobile()
.widget.card#toc
display: none
position: fixed
margin: 1rem
left: 0
right: 0
bottom: 0
z-index: 100
.card-content
padding: 0
.menu
padding: 1.5rem
max-height: calc(100vh - 2rem)
overflow-y: auto
#toc-mask
display: none
position: fixed
top: 0
left: 0
right: 0
bottom: 0
z-index: 99
background: rgba(0, 0, 0, .7)
.widget.card#toc, #toc-mask
&.is-active
display: block

View File

@ -0,0 +1,15 @@
let chalk;
try {
chalk = require('chalk'); // eslint-disable-line node/no-extraneous-require
} catch (e) { }
module.exports = new Proxy({}, {
get(obj, prop) {
if (chalk) {
return chalk[prop];
}
return function() {
return arguments.length === 1 ? arguments[0] : arguments;
};
}
});

65
themes/icarus/languages/de.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Archiv'
other: 'Archive'
category:
one: 'Kategorie'
other: 'Kategorien'
tag:
one: 'Tag'
other: 'Tags'
post:
one: 'Seite'
other: 'Seiten'
page:
one: 'Page'
other: 'Pages'
prev: 'Zurück'
next: 'Weiter'
widget:
follow: 'Folgen'
recents: 'Letzte Einträge'
links: 'Links'
catalogue: 'Katalog'
subscribe_email: 'Abonnieren Sie Updates'
subscribe: 'Abonnieren'
adsense: 'Werbung'
article:
created_at: 'Gepostet vor&nbsp;%s'
updated_at: 'Aktualisiert vor&nbsp;%s'
more: 'Mehr lesen'
comments: 'Kommentare'
read_time: '%s lesen'
word_count:
one: 'Über %d Wort'
other: 'Über %d Wörter'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Gefällt Ihnen der Artikel? Unterstützen Sie den Autor mit'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Kauf mir einen Kaffee'
plugin:
backtotop: 'Zurück nach oben'
visit_count: '%s&nbsp;Besuche'
visitor_count: 'Von %s Nutzern besucht'
cookie_consent:
message: Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern.
dismiss: Verstanden!
allow: Cookies zulassen
deny: Ablehnen
link: Mehr erfahren
policy: Cookie-Richtlinie
search:
search: 'Suche'
hint: 'Tippen Sie etwas...'
no_result: 'Keine Ergebnisse für'
untitled: '(Ohne Titel)'
empty_preview: '(Keine Vorschau)'

65
themes/icarus/languages/en.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Archive'
other: 'Archives'
category:
one: 'Category'
other: 'Categories'
tag:
one: 'Tag'
other: 'Tags'
post:
one: 'Post'
other: 'Posts'
page:
one: 'Page'
other: 'Pages'
prev: 'Previous'
next: 'Next'
widget:
follow: 'Follow'
recents: 'Recents'
links: 'Links'
catalogue: 'Catalogue'
subscribe_email: 'Subscribe for updates'
subscribe: 'Subscribe'
adsense: 'Advertisement'
article:
created_at: 'Posted&nbsp;%s'
updated_at: 'Updated&nbsp;%s'
more: 'Read more'
comments: 'Comments'
read_time: '%s read'
word_count:
one: 'About %d word'
other: 'About %d words'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Like this article? Support the author with'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Buy me a coffee'
plugin:
backtotop: 'Back to top'
visit_count: '%s&nbsp;visits'
visitor_count: 'Visited by %s users'
cookie_consent:
message: This website uses cookies to improve your experience.
dismiss: Got it!
allow: Allow cookies
deny: Decline
link: Learn more
policy: Cookie Policy
search:
search: 'Search'
hint: 'Type something...'
no_result: 'No results for'
untitled: '(Untitled)'
empty_preview: '(No preview)'

66
themes/icarus/languages/es.yml Executable file
View File

@ -0,0 +1,66 @@
#By SrWoOoW
common:
archive:
one: 'Archivo'
other: 'Archivos'
category:
one: 'Categoría'
other: 'Categorías'
tag:
one: 'Etiqueta'
other: 'Etiquetas'
post:
one: 'Entrada'
other: 'Entradas'
page:
one: 'Página'
other: 'Páginas'
prev: 'Anterior'
next: 'Siguiente'
widget:
follow: 'SEGUIR'
recents: 'Recientes'
links: 'Enlaces'
catalogue: 'Catálogo'
subscribe_email: 'Suscríbete para recibir actualizaciones'
subscribe: 'Suscribir'
adsense: 'Anuncio'
article:
created_at: 'Publicado hace&nbsp;%s'
updated_at: 'Actualizado hace&nbsp;%s'
more: 'Leer más'
comments: 'Comentarios'
read_time: '%s de lectura'
word_count:
one: 'Aproximadamente %d palabra'
other: 'Aproximadamente %d palabras'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: '¿Te gusta este artículo? Apoya al autor con'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Cómprame un café'
plugin:
backtotop: 'Volver arriba'
visit_count: '%s&nbsp;visitas'
visitor_count: 'Visitado por %s usuarios'
cookie_consent:
message: Este sitio web utiliza cookies para mejorar su experiencia.
dismiss: ¡Entendido!
allow: Permitir cookies
deny: Descenso
link: Aprende más
policy: Política de cookies
search:
search: 'Buscar'
hint: 'Teclea algo...'
no_result: 'No hay resultados para'
untitled: '(Sin título)'
empty_preview: '(Sin vista previa)'

65
themes/icarus/languages/fr.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Archive'
other: 'Archives'
category:
one: 'Catégorie'
other: 'Catégories'
tag:
one: 'Tag'
other: 'Tags'
post:
one: 'Article'
other: 'Articles'
page:
one: 'Page'
other: 'Pages'
prev: 'Préc'
next: 'Suiv'
widget:
follow: 'Suivre'
recents: 'Récents'
links: 'Liens'
catalogue: 'Catalogue'
subscribe_email: 'Abonnez-vous aux mises à jour'
subscribe: 'Abonnez-vous'
adsense: 'Annonce'
article:
created_at: 'Publié il y a&nbsp;%s'
updated_at: 'Mis à jour il y a&nbsp;%s'
more: 'Lire la suite'
comments: 'Commentaires'
read_time: '%s de lecture'
word_count:
one: 'Environ %d mot'
other: 'Environ %d mots'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: "Vous aimez cet article? Soutenez l'auteur avec"
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Achetez-moi un café'
plugin:
backtotop: 'Retour au sommet'
visit_count: '%s&nbsp;visites'
visitor_count: 'Visité par %s utilisateurs'
cookie_consent:
message: Ce site Web utilise des cookies pour améliorer votre expérience.
dismiss: Je l'ai!
allow: Autorise les cookies
deny: Déclin
link: Apprendre encore plus
policy: Politique relative aux cookies
search:
search: 'Search'
hint: 'Type something...'
no_result: 'Aucun résultat pour'
untitled: '(Sans titre)'
empty_preview: '(Pas de prévisualisation)'

65
themes/icarus/languages/id.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Arsip'
other: 'Arsip'
category:
one: 'Kategori'
other: 'Kategori'
tag:
one: 'Tag'
other: 'Tag'
post:
one: 'Artikel'
other: 'Artikel'
page:
one: 'Halaman'
other: 'Halaman'
prev: 'Sebelumnya'
next: 'Berikutnya'
widget:
follow: 'IKUTI'
recents: 'Terbaru'
links: 'Tautan'
catalogue: 'Katalog'
subscribe_email: 'Berlangganan untuk pembaruan'
subscribe: 'Berlangganan'
adsense: 'Iklan'
article:
created_at: 'Diposting&nbsp;%s'
updated_at: 'Diperbarui&nbsp;%s'
more: 'Selengkapnya'
comments: 'Komentar'
read_time: '%s membaca'
word_count:
one: 'Sekitar %d kata'
other: 'Sekitar %d kata'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Suka dengan artikel ini? Bantu penulis dengan donasi melalui'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Belikan aku kopi'
plugin:
backtotop: 'Kembali ke atas'
visit_count: '%s&nbsp;kunjungan'
visitor_count: 'Dikunjungi oleh %s pengguna'
cookie_consent:
message: Situs web ini menggunakan cookie untuk meningkatkan pengalaman Anda.
dismiss: Mengerti!
allow: Izinkan cookie
deny: Menolak
link: Belajarlah lagi
policy: Kebijakan Cookie
search:
search: 'Pencarian'
hint: 'Tulis Sesuatu..'
no_result: 'Tidak ada hasil untuk'
untitled: '(Tanpa judul)'
empty_preview: '(Tidak ada preview)'

65
themes/icarus/languages/ja.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'アーカイブ'
other: 'アーカイブ'
category:
one: 'カテゴリ'
other: 'カテゴリ'
tag:
one: 'タグ'
other: 'タグ'
post:
one: '投稿'
other: '投稿'
page:
one: 'ページ'
other: 'ページ'
prev: '前'
next: '次'
widget:
follow: 'フォローする'
recents: '最近の記事'
links: 'リンク'
catalogue: 'カタログ'
subscribe_email: '更新を購読する'
subscribe: '購読する'
adsense: '広告'
article:
created_at: '%sに投稿'
updated_at: '%sに更新'
more: '続きを読む'
comments: 'コメント'
read_time: '%sで読む'
word_count:
one: '約%d語'
other: '約%d語'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'この記事は気に入りましたか? 著者をサポートする'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'コーヒーを買って'
plugin:
backtotop: 'トップに戻る'
visit_count: '%s回の訪問'
visitor_count: '%s人のユーザーがアクセス'
cookie_consent:
message: このウェブサイトはあなたの経験を改善するためにCookieを使用しています。
dismiss: 了解しました
allow: Cookiesを許可する
deny: 拒否する
link: もっと詳しく知る
policy: Cookieポリシー
search:
search: '検索'
hint: '何かを入力してください...'
no_result: 'の結果はありません'
untitled: '(無題)'
empty_preview: '(プレビューなし)'

65
themes/icarus/languages/ko.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: '아카이브'
other: '아카이브'
category:
one: '카테고리'
other: '카테고리'
tag:
one: '태그'
other: '태그'
post:
one: '포스트'
other: '포스트'
page:
one: '페이지'
other: '페이지'
prev: '이전'
next: '다음'
widget:
follow: '팔로우'
recents: '최근 글'
links: '링크'
catalogue: '카탈로그'
subscribe_email: '업데이트 소식 받기'
subscribe: '구독'
adsense: '광고'
article:
created_at: '%s&nbsp;게시 됨'
updated_at: '%s&nbsp;업데이트 됨'
more: '자세히 보기'
comments: '댓글'
read_time: '%s안에 읽기'
word_count:
one: '약 %d 단어'
other: '약 %d 단어'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: '이 글이 마음에 드시나요? 다음을 통해 후원하실 수 있습니다: '
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: '커피 한 잔 사주기'
plugin:
backtotop: '맨 위로'
visit_count: '%s회 방문'
visitor_count: '%s명의 사용자가 방문 함'
cookie_consent:
message: 이 웹 사이트는 귀하의 경험을 향상시키기 위해 Cookie를 사용합니다.
dismiss: 무시
allow: 허용
deny: 거부
link: 더 알아보기
policy: Cookie 정책
search:
search: '검색'
hint: '입력 하세요...'
no_result: '에 대한 결과 없음'
untitled: '(제목 없음)'
empty_preview: '(미리보기 없음)'

65
themes/icarus/languages/pl.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Archiwum'
other: 'Archiwum'
category:
one: 'Kategoria'
other: 'Kategorie'
tag:
one: 'Tag'
other: 'Tagi'
post:
one: 'Artykuł'
other: 'Artykuły'
page:
one: 'Strona'
other: 'Strony'
prev: 'Poprzedni'
next: 'Następny'
widget:
follow: 'SUBSKRYBUJ'
recents: 'Najnowsze wpisy'
links: 'Linki'
catalogue: 'Spis treści'
subscribe_email: 'Zapisz się, aby otrzymywać aktualizacje'
subscribe: 'Subskrybuj'
adsense: 'Reklama'
article:
created_at: 'Opublikowano&nbsp;%s'
updated_at: 'Zaktualizowano&nbsp;%s'
more: 'Czytaj dalej'
comments: 'Komentarze'
read_time: '%s czytania'
word_count:
one: 'Około %d słowa'
other: 'Około %d słów'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Podoba Ci się ten artykuł? Wesprzyj autora za pomocą'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Kup mi kawę'
plugin:
backtotop: 'Powrót do góry'
visit_count: '%s&nbsp;wizyty'
visitor_count: 'Odwiedzone przez %s użytkowników'
cookie_consent:
message: Ta strona korzysta z plików cookie, aby poprawić Twoje doświadczenia.
dismiss: Rozumiem!
allow: Zezwól na pliki cookie
deny: Odrzucać
link: Ucz się więcej
policy: Polityka Cookie
search:
search: 'szukaj'
hint: 'Wpisz coś...'
no_result: 'Brak wyników dla'
untitled: '(Bez tytułu)'
empty_preview: '(Brak podglądu)'

View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Arquivo'
other: 'Arquivos'
category:
one: 'Categoria'
other: 'Categorias'
tag:
one: 'Tag'
other: 'Tags'
post:
one: 'Artigo'
other: 'Artigos'
page:
one: 'Página'
other: 'Páginas'
prev: 'Anterior'
next: 'Próximo'
widget:
follow: 'Seguir'
recents: 'Recentes'
links: 'Links'
catalogue: 'Catálogo'
subscribe_email: 'Subscrição de atualizações'
subscribe: 'Se inscrever'
adsense: 'Anúncio'
article:
created_at: 'Postado&nbsp;%s'
updated_at: 'Atualizado&nbsp;%s'
more: 'Ler Mais'
comments: 'Comentarios'
read_time: '%s lidos'
word_count:
one: 'Cerca de %d palavra'
other: 'Cerca de %d palavras'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Gostou deste artigo? Apoie o autor com'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Me compra um café'
plugin:
backtotop: 'De volta ao topo'
visit_count: '%s&nbsp;visitas'
visitor_count: 'Visitado por %s usuários'
cookie_consent:
message: Este site usa cookies para melhorar sua experiência.
dismiss: Entendi!
allow: Permitir cookies
deny: Declínio
link: Saber mais
policy: Política de Cookies
search:
search: 'Procurar'
hint: 'Digite alguma coisa...'
no_result: 'Sem resultados para'
untitled: '(Sem título)'
empty_preview: '(Não há visualização)'

65
themes/icarus/languages/ru.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'архив'
other: 'архивы'
category:
one: 'категории'
other: 'категории'
tag:
one: 'тег'
other: 'теги'
post:
one: 'пост'
other: 'посты'
page:
one: 'страница'
other: 'страницы'
prev: 'Назад'
next: 'Далее'
widget:
follow: 'Подписаться'
recents: 'недавние'
links: 'ссылки'
catalogue: 'Каталог'
subscribe_email: 'Подпишитесь на обновления'
subscribe: 'Подписывайся'
adsense: 'Рекламное объявление'
article:
created_at: 'Опубликовано&nbsp;%s'
updated_at: 'Обновлено&nbsp;%s'
more: 'Читать дальше'
comments: 'Комментарии'
read_time: '%s на чтение'
word_count:
one: 'Около %d слова'
other: 'Примерно %d слова'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Понравилась эта статья? Поддержите автора'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Купи мне кофе'
plugin:
backtotop: 'Вернуться наверх'
visit_count: '%s&nbsp;посещения'
visitor_count: 'Посетили %s пользователя'
cookie_consent:
message: Этот веб-сайт использует файлы cookie для улучшения вашего опыта.
dismiss: Понял!
allow: Разрешить cookies
deny: Отказаться
link: Учить больше
policy: Политика Cookie
search:
search: 'Поиск'
hint: 'Введите что-нибудь...'
no_result: 'Нет результатов по запросу'
untitled: '(Без названия)'
empty_preview: '(Нет предварительного просмотра)'

65
themes/icarus/languages/tk.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Arhiw'
other: 'Arhiwler'
category:
one: 'Bölüm'
other: 'Bölümler'
tag:
one: 'Teg'
other: 'Tegler'
post:
one: 'Post'
other: 'Postlar'
page:
one: 'Sahypa'
other: 'Sahypalar'
prev: 'Öňki'
next: 'Indiki'
widget:
follow: 'Abuna bol'
recents: 'Täze habarlar'
links: 'Linkler'
catalogue: 'Katalog'
subscribe_email: 'Täzelikler üçin ýazyl'
subscribe: 'Ýazyl'
adsense: 'Mahabat'
article:
created_at: 'Paýlaşyldy&nbsp;%s'
updated_at: 'Üýtgedildi&nbsp;%s'
more: 'Dowamy...'
comments: 'Kommentariýa'
read_time: '%s okaldy'
word_count:
one: 'Ortaça %d söz'
other: 'Ortaça %d söz'
licensing:
author: 'Awtor'
created_at: 'Paýlaşdy'
updated_at: 'Üýtgetdi'
licensed_under: 'Resmileşdirilen'
donate:
title: 'Haladynmy? Awtory gollaň'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Buy me a coffee'
plugin:
backtotop: 'Ýokaryk'
visit_count: '%s&nbsp;görüldi'
visitor_count: '%s adam gördi'
cookie_consent:
message: Bu web saýt siziň üçin kuki ulanýar.
dismiss: Düşündim!
allow: Kukini kabul et!
deny: Närazylyk bildir
link: Dowamy...
policy: Kuki syýasaty
search:
search: 'Gözle'
hint: 'Birzatlar ýazyň...'
no_result: 'Tapylmady'
untitled: 'Atlandyrylmadyk'
empty_preview: 'Boş'

65
themes/icarus/languages/tr.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Arşiv'
other: 'Arşivler'
category:
one: 'Kategori'
other: 'Kategoriler'
tag:
one: 'Etiket'
other: 'Etiketler'
post:
one: 'Gönderi'
other: 'Gönderiler'
page:
one: 'Sayfa'
other: 'Sayfalar'
prev: 'Önceki'
next: 'Sonraki'
widget:
follow: 'TAKİP ET'
recents: 'Son'
links: 'Linkler'
catalogue: 'Katalog'
subscribe_email: 'Güncellemeler için abone olun'
subscribe: 'Abone ol'
adsense: 'İlan'
article:
created_at: '%s&nbsp;yayınlandı'
updated_at: '%s&nbsp;güncellendi'
more: 'Daha fazla oku'
comments: 'Yorumlar'
read_time: '%s okundu'
word_count:
one: 'Yaklaşık %d kelime'
other: 'Yaklaşık %d kelime'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Bu makaleyi beğendiniz mi? Yazarı şununla destekleyin'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Bana bir kahve al'
plugin:
backtotop: 'Başa dönüş'
visit_count: '%s&nbsp;ziyaret'
visitor_count: '%s kullanıcı tarafından ziyaret edildi'
cookie_consent:
message: Bu web sitesi, deneyiminizi geliştirmek için çerezler kullanır.
dismiss: Anladım!
allow: Çerezlere izin ver
deny: Reddet
link: Daha fazla bilgi edin
policy: Çerez politikası
search:
search: 'Search'
hint: 'Bir şeyler yaz...'
no_result: 'İçin sonuç yok'
untitled: '(Başlıksız)'
empty_preview: '(Önizleme yok)'

65
themes/icarus/languages/vn.yml Executable file
View File

@ -0,0 +1,65 @@
common:
archive:
one: 'Lưu trữ'
other: 'Lưu trữ'
category:
one: 'Thể loại'
other: 'Thể loại'
tag:
one: 'Nhãn'
other: 'Nhãn'
post:
one: 'Bài viết'
other: 'Bài viết'
page:
one: 'Trang'
other: 'Trang'
prev: 'Trước'
next: 'Sau'
widget:
follow: 'Theo dõi'
recents: 'Gần đây'
links: 'Link'
catalogue: 'Mục lục'
subscribe_email: 'Theo dõi các bản cập nhật'
subscribe: 'Theo dõi'
adsense: 'Quảng cáo'
article:
created_at: 'Đã đăng&nbsp;%s'
updated_at: 'Đã cập nhật&nbsp;%s'
more: 'Đọc thêm'
comments: 'Bình luận'
read_time: '%s đọc'
word_count:
one: 'Khoảng %d từ'
other: 'Khoảng %d từ'
licensing:
author: 'Author'
created_at: 'Posted on'
updated_at: 'Updated on'
licensed_under: 'Licensed under'
donate:
title: 'Bạn đọc có thể ủng hộ blog qua'
afdian: 'Afdian.net'
alipay: 'Alipay'
wechat: 'Wechat'
paypal: 'Paypal'
patreon: 'Patreon'
buymeacoffee: 'Mua cho tôi một ly cà phê'
plugin:
backtotop: 'Trở lai đầu trang'
visit_count: '%s&nbsp;Bạn đọc'
visitor_count: 'Thăm bởi %s bạn đọc'
cookie_consent:
message: Trang web này sử dụng cookie để cải thiện trải nghiệm của bạn.
dismiss: Hiểu rồi!
allow: Cho phép cookie
deny: Từ chối
link: Tìm hiểu thêm
policy: Chính sách Cookie
search:
search: 'Tìm kiếm'
hint: 'Gõ gì đó...'
no_result: 'Không có kết quả cho'
untitled: '(Không có tiêu đề)'
empty_preview: '(Không có xem trước)'

Some files were not shown because too many files have changed in this diff Show More