Alacritty

出自 ArchWiki

Alacritty 是一个使用 Rust 编写的简单、GPU 加速的终端模拟器。它支持回滚、24 位颜色 (w:Color depth#真彩色 (24 位))、复制/粘贴、点击 URL 和自定义按键绑定。

安装

安装 alacritty 软件包或 alacritty-gitAUR 以获取开发版本。

配置

Alacritty 按以下顺序搜索配置文件

  • $XDG_CONFIG_HOME/alacritty/alacritty.toml
  • $XDG_CONFIG_HOME/alacritty.toml
  • $HOME/.config/alacritty/alacritty.toml
  • $HOME/.alacritty.toml

0.13.0 之前的版本使用 YAML 配置文件。旧的 YAML 配置文件可以使用 alacritty migrate 命令转换为 TOML。但是,自动迁移会删除所有注释。

Alacritty 默认不提供配置文件。配置选项可以在 项目主页 找到。如果启用了 live_config_reload 选项(默认启用),则大多数设置将在您保存配置文件后立即生效。

颜色

有关可用配色方案的列表,请参阅 alacritty-theme 存储库。如果您喜欢的配色方案在列表中,请将提供的代码粘贴到您的配置文件中。

字体

如果您不想使用系统的默认字体,可以通过更改以下行来指定不同的字体

[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 剪贴板,您可以使用鼠标选择进行复制,并使用鼠标中键单击进行粘贴。

提示

终端提示可用于查找终端可见部分中的文本或超链接,并将其管道传输到其他应用程序。默认情况下,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 中无法正常工作

set ttymouse=sgrset mouse=a 添加到您的 .vimrc 或切换到 Neovim。另请参阅 此问题

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 的条目的情况。因此,所有交互式终端功能都无法工作。这可以通过将 Alacritty 的 terminfo 复制到远程服务器来解决,如 termite#通过 SSH 产生的终端问题 中所述。

在本地主机上,使用 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'
注意: 完成此操作后,您需要启动新的 SSH 会话才能使远程 shell 加载新的 Terminfo。

或者,可以在配置中将 TERM 的值设置为 xterm-256color 而不是默认的 alacritty

[env]
TERM = "xterm-256color"

Wayland GNOME 上没有标题栏

当使用 Wayland GNOME 时,标题栏为空并且有奇怪的图标。 有关详细信息,请参阅 https://github.com/alacritty/alacritty/issues/4739

一种解决方法是使用 Xwayland 而不是原生 Wayland 启动 Alacritty,方法是设置一个空的 WAYLAND_DISPLAY 环境变量

多显示器上字体大小不同

默认情况下,Alacritty 尝试根据 设备像素比率 将字体缩放到每个显示器上合适的磅值大小。在某些具有多个显示器的设置中,此行为可能会导致物理尺寸差异很大 [1][2]

要查看每个显示器现有的设备像素比率值,请运行 alacritty -v,将子窗口移动到每个显示器,并注意父窗口中报告的 设备像素比率

使用 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 更好,因为

  1. 您只需要在终端模拟器窗口中执行此操作。
  2. wal -R 速度很慢,您不需要在每个子 shell 中运行它。
  3. 您不需要查看 StdOut,我们使用 -q 选项。
  4. 您不需要导致桌面的其他部分也重新加载颜色(即 gtk、xrdb、polybar、i3)。这是通过 -e 标志完成的。