Alacritty
Alacritty 是一个使用 Rust 编写的简单、GPU 加速的终端模拟器。它支持回滚浏览、24 位真彩色、复制/粘贴、点击 URL 以及自定义键绑定。
安装
安装 alacritty 软件包。
配置
Alacritty 会按以下顺序在这些位置搜索配置文件:
$XDG_CONFIG_HOME/alacritty/alacritty.toml$XDG_CONFIG_HOME/alacritty.toml$HOME/.config/alacritty/alacritty.toml$HOME/.alacritty.toml/etc/alacritty/alacritty.toml
0.13.0 之前的版本使用 YAML 配置文件。可以通过运行 alacritty migrate 将旧的 YAML 配置文件转换为 TOML。但请注意,自动迁移会删除所有注释。
Alacritty 默认不提供配置文件。配置选项可以在 项目主页 找到。如果启用了 live_config_reload 选项(默认开启),大多数设置在保存配置文件后会立即生效。
颜色
有关可用配色方案的列表,请参阅 alacritty-theme 仓库。如果你喜欢的配色方案在列表中,你可以:
- 将主题配置粘贴到你的配置文件中,或者
- 安装 alacritty-theme-gitAUR,然后将你喜欢的主题配置路径添加到
general.import表中
[general] import = ["/usr/share/alacritty/themes/your_theme.toml"]
字体
如果你不想使用系统的默认字体,可以通过修改以下行来指定不同的字体
[font] size = 12.0 [font.bold] family = "monospace" style = "Bold" [font.bold_italic] family = "monospace" style = "Bold Italic" [font.italic] family = "monospace" style = "Italic" [font.normal] family = "monospace" style = "Regular"
将 monospace 替换为从以下命令输出中获取的字体名称
$ fc-list : family style
注意,某些字体不提供 Italic(斜体)样式,而是提供 Oblique(倾斜)样式。
技巧与提示
在相同目录下启动新实例
在配置文件中添加以下行,即可通过按下 Ctrl+Shift+Enter 在当前工作目录中启动一个新的 Alacritty 实例
[keyboard]
bindings = [
{ key = "Return", mods = "Control|Shift", action = "SpawnNewInstance" }
]
Vi 模式与复制/粘贴
Vi 模式允许使用键盘在 Alacritty 的视口和回滚缓存中移动。默认情况下,你可以使用 Ctrl+Shift+Space 来切换该模式。要复制,你可以使用鼠标选择并按下 Ctrl+Shift+c,或者进入 Vi 模式,使用 v 开始选择,像在 vim 中一样使用 hjkl 移动,并使用 y 复制所选内容。要粘贴,请按 Ctrl+Shift+v。要与 X 剪贴板进行复制/粘贴,可以使用鼠标选择来复制,使用鼠标中键点击来粘贴。
提示 (Hints)
终端提示可用于在终端可见部分查找文本或超链接,并将其传递给其他应用程序。默认情况下,Alacritty 通过 Ctrl+Shift+O 快捷键提供 URL 提示,并使用 xdg-open 打开它们。详情请参阅 Alacritty TOML 配置手册 的 HINTS 部分。
例如,为了使 filename.rs:line:character 形式的文件提示(例如 my_crate/src/server.rs:181:49)可点击并在 Visual Studio Code 中打开,可以在 Alacritty 的 TOML 配置中添加以下部分
alacritty.toml
[[hints.enabled]]
regex = "[^ ]+\\.rs:\\d+:\\d+"
command = { program = "code", args = [ "--goto" ] }
mouse = { enabled = true }
可以通过添加多个 [[hints.enabled]] 部分来添加多种基于正则表达式的提示。
动态切换主题
如果你想切换主题(例如在通过 ssh 连接到服务器时),可以使用以下命令
$ alacritty msg config "$(cat ~/path/to/theme.toml)"
故障排除
鼠标在 Vim 中无法正常工作
在你的 .vimrc 中添加 set ttymouse=sgr 和 set mouse=a,或者切换到 Neovim。另请参阅 此 issue。
dwm 中的透明边框
在使用 dwm 时,alacritty 的边框会变成透明。在 dwm 源码目录的 drw.c 中添加以下行并重新编译可修复此问题
if (!XftColorAllocName(...))
die("error, cannot allocate color '%s'", clrname); /* Find this line */
dest->pixel |= 0xff << 24; /* Add this line */
远程 shell 中无法使用终端功能
当从 Alacritty 终端连接到远程系统(例如通过 SSH)时,可能会出现远程系统在其 terminfo 数据库(/usr/share/terminfo/a/alacritty*)中没有 Alacritty 条目的情况。因此,所有交互式终端功能都无法正常工作。这可以通过在服务器上安装相关系统软件包(例如 Arch 上的 ncurses 或基于 Debian 的发行版上的 ncurses-term)来修复,或者按照 termite#Terminal issues with SSH 中的描述,将 Alacritty 的 terminfo 复制到远程服务器。
在本地主机上,使用 Alacritty
$ infocmp > alacritty.terminfo # export Alacritty's Terminfo $ scp alacritty.terminfo user@remote-host:~/ # or any other method to copy to the remote host
在远程主机上,在你复制 alacritty.terminfo 的目录下
$ tic -x alacritty.terminfo # import Terminfo for current user $ rm alacritty.terminfo # optional: remove Terminfo file
以下是上述过程的一行命令版本
$ infocmp | ssh "$user@$host" 'tic -x /dev/stdin'
或者,可以将配置中的 TERM 值设置为 xterm-256color 而不是默认的 alacritty
[env] TERM = "xterm-256color"
Wayland GNOME 上没有标题栏
在使用 Wayland GNOME 时,标题栏为空且有奇怪的图标。详情请参阅 https://github.com/alacritty/alacritty/issues/4739。
一种解决方法是通过设置空的 WAYLAND_DISPLAY 环境变量,使 Alacritty 通过 Xwayland 而非原生 Wayland 启动。
多显示器上的字体大小不一致
默认情况下,Alacritty 会根据 Device pixel ratio(设备像素比)尝试在每个显示器上将字体缩放到适当的点大小。在某些多显示器设置中,这种行为可能会导致物理尺寸差异巨大 [1], [2]。
要查看每个显示器现有的设备像素比值,请运行 alacritty -v,将子窗口移动到每个显示器,并注意父窗口中报告的 Device pixel ratio。
使用 WINIT_X11_SCALE_FACTOR 环境变量强制使用恒定的设备像素比可能足以修复字体大小不一致的问题
$ WINIT_X11_SCALE_FACTOR=1.66 alacritty
这也可以通过在配置文件中设置 WINIT_X11_SCALE_FACTOR 的值来实现
[env] WINIT_X11_SCALE_FACTOR = "1.66"
配色方案无法恢复之前用 pywal 设置的内容
你可以将以下代码添加到 shell 的启动命令(.bashrc)中。
if command -v wal > /dev/null 2>&1 && [ "$TERM" = "alacritty" ]; then
wal -Rqe
fi
这比简单地添加 wal -R 更好,因为:
- 你只需要这在你的终端模拟器窗口中发生。
wal -R相当慢,你不需要在每个子 shell 中运行它。- 你不需要看到标准输出 (StdOut),我们使用了
-q选项。 - 我们也不需要让桌面其他部分重新加载颜色(例如 gtk, xrdb, polybar, i3)。这是通过
-e标志实现的。