如何在fydeos中为终端设置自定义字体
这里以安装neovim中要用到的JetBrainsMono Nerd Font Mono字体为例
前置条件
- FydeOS 已开启开发者模式。
- 已禁用 RootFS 验证(Root 文件系统校验)。
第一阶段:解锁系统与挂载
为了修改系统文件,首先需要将根目录挂载为可读写模式。
- 进入 Shell 环境 (
Ctrl+Alt+T, 输入shell)。 - 获取 Root 权限并重新挂载:
sudo -i
mount -o remount,rw /
第二阶段:安装字体文件
我们将字体放入系统原生目录,以确保系统底层能识别。
- 移动字体文件
字体目录在/usr/share/fonts/下。
但是fc-cache的检查策略并不是检查所有目录,而是已有的几个目录。
因此直接创建目录将不被检查。你可以挑一个目录,并创建一个子目录,然后把字体文件都移动进去。
- 设置权限 (通常复制过去自动继承,但建议再次确认)
- 文件权限:
644(-rw-r--r--) - 目录权限:
755(drwxr-xr-x) - 所有者:
root:root
- 刷新字体缓存
让 Linux 字体服务识别新文件:
fc-cache -fv
- 验证识别
fc-list | grep "JetBrains"
确保输出中包含了您的字体文件路径。
第三阶段:修改终端源码 (核心步骤)
由于 FydeOS 终端设置界面有白名单限制,且默认将未知的列表字体视为网络字体,我们需要修改源码。
1. 定位并解压配置文件
进入系统终端资源目录:
cd /usr/share/chromeos-assets/crosh_builtin/js/
# 备份原始文件
cp terminal_common.js.gz terminal_common.js.gz.bak
# 解压文件以便编辑
gunzip terminal_common.js.gz
2. 编辑 JS 代码
使用 Vim 编辑器打开:
vim terminal_common.js
我们需要修改 两个 数组。请在文件中查找并修改如下内容(建议加在数组开头):
修改点 A:加入白名单 (SUPPORTED_FONT_FAMILIES)
这是为了让字体出现在设置界面的下拉菜单中。
export const SUPPORTED_FONT_FAMILIES = [
'JetBrainsMono Nerd Font Mono', // <--- 添加这一行 (注意单引号和逗号)
'Anonymous Pro',
'Courier Prime',
// ... 其他代码
];
修改点 B:标记为本地字体 (LOCAL_FONTS)
这是为了防止系统去 Google Fonts 下载该字体,从而解决“无法加载/灰显/请连接互联网”的报错。
const LOCAL_FONTS = [
'JetBrainsMono Nerd Font Mono', // <--- 添加这一行 (必须与上面名称完全一致)
'Noto Sans Mono',
'Cousine',
// ... 其他代码
];
Vim 操作提示:按 i 进入编辑模式;编辑完成后按 Esc,输入 :wq 保存退出。
3. 重新压缩文件
将修改后的 JS 文件恢复为 gzip 格式,否则系统无法读取:
gzip terminal_common.js
第四阶段:应用与验证
- 重启设备 (推荐) 或注销当前账户,以清除 Chrome 缓存。
- 打开 终端 (Terminal)。
- 进入设置 (
Ctrl+Shift+P)。 - 在 Text font family 下拉菜单中,您现在应该能看到 JetBrainsMono Nerd Font Mono。
- 选中它,它应显示为黑色(可用状态),且终端图标和字体会立即生效。
常见问题与提示
- Linux 子系统 (Crostini) 里的应用乱码?
本指南仅修改了 FydeOS 宿主机终端窗口的字体。如果您在 Linux 容器里的应用(如 VS Code)也需要用这个字体,请务必在容器内再安装一次字体:
mkdir -p ~/.local/share/fonts && cp /path/to/fonts/*.ttf ~/.local/share/fonts/ && fc-cache -fv - 系统更新后失效?
是的,FydeOS 全量 OTA 更新会重置/usr/share/chromeos-assets/。建议保留这份指南,更新后可能需要重新执行“第三阶段”。 - 字体名称怎么填?
必须严格对应fc-list输出的 Family Name。如果字体名中有空格,JS 数组里必须保留空格。
最终结果如下
