论终端模拟器的优劣

01 Oct 2023 3654 words 13 minutes BY-SA 4.0
develop

这应该是全网第一篇终端模拟器比较的文章。

闲话少说:

终端模拟器比较 系统自带 跨平台(支持 Linux ) 跨平台(支持 macOS ) 跨平台(支持 win32 ) 跨平台(支持 Android ) 支持连字 GPU 加速 背景透明(X11) 背景透明(Wayland) 鼠标支持(URL) 触控屏支持(单指滚动) 触控屏支持(双指缩放) 显示图像 配置语言 开发语言
(u)xterm × × × × × × × × 拖动 × × × C
gnome-terminal gnome × × × × × × 拖动 × × dconf C
konsole KDE × × × × Not test × × 拖动 × × dosini C++
xfce4-terminal xfce × × × × × Not test × × 长按拖动 × × xfconf C
qterminal LXQt × × × × 拖动 × × dosini C++
kitty × × × × × kitty conf C++
alacritty × × × × yaml rust
wezterm × × × × × lua rust
termux termux × × × × - - × × properties Java
mintty cygwin/msys2 × × × × × - - × ? ? × dosini C
windows-terminal Windows 10 1903 × × × - - ? ? ? json C++
conhost Windows × × × × × - - × ? ? × × C++

解释之前的温馨提醒:

开始解释:

系统自带

桌面环境 中已经知道:

桌面环境通常包含:

所以四大桌面都有自己的终端模拟器。除此之外,某些操作系统和软件发行版 (termux, cygwin, msys2) 也会预装终端模拟器。

跨平台

连字

doesn't support

support

支持连字需要满足 2 个条件:

GPU 加速

可以通过以下方式查看终端模拟器是否使用了 GPU :

背景透明

coding 时可以看到后面的窗口:

注意, window_background_opacity cannot work on wayland 指出同时在以下条件下因为设计原因无法透明:

鼠标支持

触控屏支持

触控屏不是触控板。

支持触控屏需要满足 2 个条件:

配置语言

local wezterm = require 'wezterm'
local hostname = wezterm.hostname()
local font_size
if hostname == 'desktop' then -- 2560x2880
    font_size = 16
elseif hostname == 'laptop' then -- 3120x2080
    font_size = 12
else
    font_size = 12
end

开发语言

不说了,会挨打。

best language

其它

笔者根本不关心以下功能:

终端复用器一般有如下功能:

终端复用器目前的选择有如下:

为了不影响终端程序,终端复用器通常只有在一个前缀键按下的情况下才会通过等待第二个键来执行相对应的操作(分屏、attach/detach 等)。 这是常见设定,例如

笔者本人选择前缀键为 Ctrl + Q ,原因如下:

总结

笔者目前选择如下:

撒花!

https://user-images.githubusercontent.com/32936898/199681341-1c5cfa61-4411-4b67-b268-7cd87c5867bb.png https://user-images.githubusercontent.com/32936898/199681363-1094a0be-85ca-49cf-a410-19b3d7965120.png https://user-images.githubusercontent.com/32936898/199681368-c34c2be7-e0d8-43ea-8c2c-d3e865da6aeb.png