Fedora COSMIC Atomic解决访问GitHub域名污染问题

原理

让域名解析从本地/etc/hosts文件读取ip地址,正确的IP地址从https://raw.githubusercontent.com/521xueweihan/GitHub520/main/hosts获取。

方法

获取github域名对应的IP地址,更新到/etc/hosts文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
# update-github-hosts
set -e
HOSTS_FILE="/etc/hosts"
TMP=$(mktemp)
# 下载github520 hosts
curl -s https://raw.githubusercontent.com/521xueweihan/GitHub520/main/hosts > "$TMP"
# 先把旧的 # GitHub520 区块删掉,再追加新的
sudo sed -i '/# GitHub520/,/# GitHub520 End/d' "$HOSTS_FILE"
sudo tee -a "$HOSTS_FILE" < "$TMP"
rm "$TMP"
# 刷新dns缓存
resolvectl flush-caches
echo "hosts 更新完成"

  1. 将上述脚本拷贝到可执行文件目录中,赋予执行权限,如果遇到github无法访问时可以尝试执行sudo /patch/update-github-hosts

  2. 执行dig github.com命令检查域名对应的IP地址是否已经刷新。

阅读更多

使用http ppt skill生成演示文稿

安装Skill

在你常用工具中输入”安装html ppt skill ,参考链接:https://github.com/lewislulu/html-ppt-skill“

生成演示文稿

在文件的工作目录下,使用以下提示词生成演示文稿

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
根据xxx文件,使用html ppt skill生成一个xxx类型演示文稿。

## 要求:

1. 同时提供深色(xxx主题名称)和深色(xxx主题名称)主题
2. 将生成的或依赖的本地css/图片/js等文件复制和html文件同级目录下`./assets `目录下
3. 屏幕比例要求16:10,分辨率不低于1920×1200
4. 提供演讲者视图,提供简版提示词
5. 演示文稿提供如下功能及按键:

| 按键 | 功能 |
|--------------|---------------------------------------------------------|
| `← →` / 滑动 | 翻页 |
| `T` | 切换深色 / 浅色主题 |
| `+` / `−` | 增大 / 减小正文字号(80%–130%,`0` 复位,刷新保留) |
| `S` | 演讲者模式(当前页 / 下一页 / 提词稿 / 计时器四卡片窗口) |
| `F` | 全屏 |
| `O` | 幻灯片总览网格 |
| `N` | 快速备注抽屉 |
| `#/N` | URL 深链到第 N 页 |

为Obsidian配置本地图床

安装piclist-core

  1. 通过npm命令安装
1
npm install piclist -g
  1. 查询安装的路径
1
2
npm list -g --depth 0 # 查看全局安装的包
npm get prefix # 查看全局安装路径

找出picgo-server安装的具体路径。

config.json配置

根据系统情况下修改picgo-server的配置文件,并将config.json拷贝到piclist默认的用户目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"picBed": {
"current": "local",
"uploader": "local",
"local": {
"path": "图片需要本地存储的目录", //注意不同系统本地路径不一致,此路径也需要和http服务路径保持一致
"customUrl": "http://localhost:8045", //此为图床访问的http服务地址
"webPath": ""
}
},
"buildIn": {
"rename": {
"enable": true,
"format": "{Y}{m}{d}{h}{i}{s}"
}
},
"settings": {
"server": {
"port": 36677,
"host": "127.0.0.1",
"enable": true
}
},
"picgoPlugins": {}
}

Windows系统

准备工作

  1. 官网下载:https://nssm.cc/download
  2. 解压后出nssm.exe后,不要移动 / 删除 nssm.exe,注册服务后它是服务载体NSSM
  3. 右键【开始菜单】→ 以管理员身份打开 CMD / PowerShell(必须管理员权限)
  4. cd 进入 nssm 所在目录

通过nssm安装Windows服务

  1. 注册服务
1
2
# nssm install <service_name> <executable_path>
nssm install picgoServer $path/picgo-server.cmd -c "C:\Users\$username\AppData\Roaming\piclist\config.json"

注意:注册服务时,config.json路径需要使用双引号包裹在执行 nssm install 命令前,$path/picgo-server.cmd -c "C:\Users\$username\AppData\Roaming\piclist\config.json"可以先测试命令执行后功能是否正常

  1. 启动服务
1
nssm start picgoServer

卸载服务

1
nssm remove picgoServer
阅读更多

Fedora COSMIC Atomic 后需要安装必要的软件

安装第三方源

docker配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
curl -fsSL https://download.docker.com/linux/fedora/docker-ce.repo -o docker-ce.repo

sudo install -o root -g root -m 644 docker-ce.repo /etc/yum.repos.d/docker-ce.repo

sudo rm -f /etc/yum.repos.d/docker-ce.repo

sudo tee /etc/yum.repos.d/docker-ce.repo > /dev/null <<'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/fedora/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/fedora/gpg
EOF

安装nofree源

1
2
3
rpm-ostree install \
https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

安装高频软件

1
2
3
rpm-ostree install fcitx5 fcitx5-rime fcitx5-configtool fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt5 fcitx5-qt6 librime-lua \
vim net-tools host-spawn \
docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1
systemctl reboot
阅读更多

Fedora Atomic安装docker

安装软件包

下载 docker 官方 repo 文件到系统 etc

ostree 只读,不能 dnf config‑manager

1
2
curl -fsSL https://download.docker.com/linux/fedora/docker-ce.repo -o docker-ce.repo
sudo install -o root -g root -m 644 docker-ce.repo /etc/yum.repos.d/docker-ce.repo

替换 docker‑ce.repo 为阿里云源

1
2
3
4
5
6
7
8
9
10
sudo rm -f /etc/yum.repos.d/docker-ce.repo

sudo tee /etc/yum.repos.d/docker-ce.repo > /dev/null <<'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/fedora/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/fedora/gpg
EOF

安装软件

1
2
3
sudo rpm-ostree install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

systemctl reboot

配置docker服务

1
2
3
sudo systemctl enable --now docker
sudo usermod -aG docker $USER # 没有报错,但实际会执行失败
sudo gpasswd -a s$USER docker # 用此命令替换,仍然执行失败

失败原因
docker 组由 docker‑ce rpm 在 **/usr/lib/group**注册,没有写入可写的 /etc/group。
gpasswd / usermod 只会读写 /etc/group

把 docker 组条目复制到可写的 /etc/group

1
2
getent group docker | sudo tee -a /etc/group
grep docker /etc/group

输出应当看到 docker:x:964:。

此时再次执行sudo usermod -aG docker $USER 。把用户加入 docker 组。通过id命令查询到groups 列表里面出现 docker。

测试

1
docker run --rm hello-world

Fedora Atomic安装node.js和npm

原因

Atomic /usr 是只读OSTree镜像;系统nodejs的npm默认全局目录指向 /usr/lib/node_modules,root也无法写入,会直接报错 EACCES。

sudo npm‑g 不仅会权限报错,npm脚本以root执行还有安全风险。

通过NVM安装

node、npm、全部全局包都放在家目录,完全不碰系统layered包。

1
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

写入shell配置,重启终端:

1
source ~/.bashrc

安装LTS版本:

1
2
3
4
5
nvm install --lts
nvm use --lts

# 查看默认的全局包位置,通常在用户的home目录下
npm config get prefix

安装成功之后就可以不需要sudo安装全局包:

1
npm install -g typescript

全程不需要sudo,全局包自动放在 ~/.nvm/versions/node/* 下面。

优点:可以随意切换node版本;系统rpm‑ostree操作完全不影响node环境。


排查命令

1
2
3
4
5
6
7
8
# npm全局安装路径
npm config get prefix

# 看PATH是否包含npm‑global bin
echo $PATH

# 列出已经安装的全局包
npm list -g --depth=0

cosmic桌面系统中增加dns配置解决github无法访问的问题

GitHub访问慢可能的原因

GitHub访问慢大概率是是因为DNS污染,无法解写GitHub域名。

解决方案

通常可以通过本机的网络的DNS配置来解决。现代Linux系统DNS配置通常是由取自DHCP服务,由系统网络管理服务自动配置,因此我们可以通过修改本机网络服务,增加额外的DNS服务器即可解决此问题。在cosmic桌面环境中可以在 cosmic settings → network & wireless → 选择链接的网络上connected(三个点)→ settings → IPV4 settings → Additional DNS servers 增加DNS服务配置,如果增加多个可以用英文逗号隔开,如223.5.5.5,8.8.8.8。

万象输入法自定义配置

wanxiang_pure输入法自定义配置

主要是在万象pure输入配置中增加常用的lua和OpenCC和简繁体转换。其中lua来自与wanxiang base,OpenCC和简繁体转换来自于moran。简化配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# 将以下内容拷贝到wanxiang_pure.custom.yaml文件中。
# 1. 需要从moran输入法中拷贝opencc目录(只需要保留和emoji和简中转繁体相关配置即可)
# 2. 从wanxiang base配置中拷贝lua文件夹
patch:
#候选数量
menu/page_size: 5

schema/dependencies/=:
- wanxiang_mixedcode #混合编码
- wanxiang_reverse #反查
- wanxiang_english #英文

switches/=:
- name: ascii_mode
states: [中文, 英文]
- name: ascii_punc
states: [中标, 英标]
- name: full_shape
states: [半角, 全角]
- name: emoji
states: [ 表情关, 表情开]
reset: 1
- options: [ std_s, std_s2t ]
states: [ 简, 繁 ]

# 输入引擎,增加常用功能
engine/processors/=:
- lua_processor@*wanxiang.super_processor
- ascii_composer
- recognizer
- key_binder
- speller
- punctuator
- selector
- navigator
- express_editor
engine/segmentors/=:
- ascii_segmentor
- matcher
- matcher@recognizer_secondary
- abc_segmentor
- punct_segmentor
- fallback_segmentor
engine/translators/=:
- punct_translator
- script_translator
- lua_translator@*wanxiang.shijian
- table_translator@custom_phrase
- table_translator@wanxiang_english
- table_translator@wanxiang_mixedcode
engine/filters:
- lua_filter@*wanxiang.super_lookup
- simplifier@emoji
- simplifier@std_s2t
- uniquifier #去重,必须在最后

# 主翻译器,自定义用户字典
translator/+:
user_dict: custom/cn.pure

# 中文、英文、数字、符号等混合词汇
wanxiang_english:
dictionary: wanxiang_english
user_dict: custom/en.pure
enable_completion: true
enable_sentence: false
initial_quality: 2.1
comment_format:
- xform/^~.+$//
english_spacing: smart
spacing_timeout: 5
max_candidates: 5
trigger: "\\"

wanxiang_mixedcode:
dictionary: wanxiang_mixedcode
db_class: stabledb
enable_completion: true
enable_sentence: false
initial_quality: 2
comment_format:
- xform/.*//

super_processor:
enable_backspace_limit: true
enable_seg_loop: true
enable_tone_fallback: true
enable_predict_space: false
kp_number_mode: auto
limit_repeated: "8,40" #格式:"最大重复声母数,最大候选字数"
select_character: "[,]" # 开启以词定字,自动拆解第一位上屏首字,第二位上屏尾字

# 部件拆字反查
wanxiang_reverse:
tag: wanxiang_reverse
dictionary: wanxiang_reverse
enable_completion: true
prefix: "`"
tips: "〔反查:拆分|笔画〕"

wanxiang_lookup:
tags: [abc]
key: "`"
lookup: [wanxiang_reverse]
data_source: [db]
enable_tone: true
enable_direct: false

emoji:
opencc_config: moran_emoji.json
option_name: emoji
tips: none
tags: [abc, number]

std_s2t:
opencc_config: s2t.json
option_name: std_s2t
tags: [abc, number]

recognizer_secondary:
patterns:
english: '(^[A-Za-z]{4}[A-Za-z]*)|(^[A-Z][A-Za-z]*)|(^[a-z][A-Z][a-zA-Z]*)|(^[a-z][a-z][A-Z][a-zA-Z]*)'

# 拼写设定
speller/alphabet: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA`;/\›
speller/initials: zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBA/›

# 处理符合特定规则的输入码,如网址、反查
recognizer/patterns/=:
punct: "^/([0-9]|10|[A-Za-z]+)$"
wanxiang_reverse: "^`[A-Za-z;]*$"
sjc: "^[/v]rc\\d+[-+=op]?$"
email: "^[A-Za-z][-_.0-9A-Za-z]*@.*$" # email @ 之后不上屏
url: "^(www[.]|https?:|ftp[.:]|mailto:|file:).*$" # URL

# 导入足够的符号,用于/查询符号
punctuator/=:
digit_separators: ",."
__include: wanxiang_symbols:/symbol_table
__patch: wanxiang_symbols:/symbols

# 从 default 继承快捷键
key_binder/shijian_keys: ["/", "v"]

# 设置时间格式
date_formats:
- "Y年m月d日"
- "Y-m-d"
- "Y/m/d"
- "Y.m.d"
- "Ymd"
time_formats:
- "H:M"
- "H点M分"
- "H:M:S"
datetime_formats:
- "Y-m-d H:M:S"
- "YmdHMS"
- "Y年m月d日 H点M分"

阅读更多

在Zed中配置opencode

在zed和opencode继承有两种方式:

  1. 通过agent server自动安装,这是一个黑盒安装方式,进度不明
  2. 通过手工配置opencode和zed继承

下载opencode

首先下载opencode二进制文件,然后将其放置在合适的位置,例如/usr/local/bin/opencode。或者直接通过官网命令安装sudo npm i -g opencode-ai。安装完成后使用opencode命令启动opencode,启动成功以后可以配置API_KEY等。

在zed中配置opencode

在zed配置文件中增加如下配置,即以外部agent方式配置opencode:

1
2
3
4
5
6
7
8
9
"agent_servers": {
"OpenCode": {
"type": "custom",
"command": "/usr/local/bin/opencode",
"args": [
"acp"
]
}
}

配置好重启zed,既可以在agent panel中打开opencode。

在单系统中如何隐藏grub菜单

在单系统中隐藏grub菜单

在 Fedora 44 中,可以启用 GRUB 的自动隐藏功能让启动过程更流畅。启用后,每次启动都会直接进入系统,如果需要时,可以在启动时按 F8 或长按左 Shift 键唤出菜单。具体操作如下:

1
2
sudo grub2-editenv - set menu_auto_hide=1
sudo grub2-editenv - unset menu_show_once

执行后重启电脑,GRUB 菜单应该就不再显示了。

如果之后想恢复菜单,可以取消这个设置:

1
2
sudo grub2-editenv - unset menu_auto_hide

注意:将值设为 0 是无效的,必须使用 unset 命令来移除这个变量

参考资料

阅读更多