论终端模拟器的优劣

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

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

闲话少说:

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