KMSCON
来自项目的git 仓库
- Kmscon 是一个基于 Linux 内核模式设置的简单终端模拟器。它旨在用用户空间控制台替换内核 VT 实现。
特性
Kmscon 可以作为内核 linux-console 的直接替代品。其特性包括
- 完整的 vt220 到 vt510 实现。
- 完整的国际化支持
- Kmscon 支持打印完整的 Unicode 字形,包括 CJK 字形。
- Kmscon 通过 libxkbcommon 提供国际化键盘处理,从而允许它使用 X 键盘中支持的全部键盘布局。
- 硬件加速渲染。
- 多席位功能。
pam_securetty
模块,方法是删除或注释掉 /etc/pam.d/login
中相应的行。安装
尽管名称如此,KMS 并不是 kmscon 的硬性要求。Kmscon 支持以下视频后端:drm3d(Linux DRM 硬件渲染后端)、drm2d(Linux DRM 软件渲染后端)、已过时的 fbdev(Linux fbdev 视频后端)。请确保您的系统上可使用其中之一。
安装 kmsconAUR 软件包或 kmscon-gitAUR 软件包以获取开发版本。或者,安装 kmscon-patched-gitAUR。修补版本及其修补依赖项(libtsm-patched-gitAUR)包含修复和改进。
通常,tty1 有一个特殊的 systemd 配置。为了保守起见,您可以继续在 tty1 上运行传统的 agetty,而仅在所有其他虚拟终端上运行 kmscon。或者,您可以在 tty1 和其他 VT 上都运行 kmscon。
要在 tty1 上启用 kmscon,禁用 getty@tty1.service
并启用 kmsconvt@tty1.service
。
要在所有虚拟终端上启用 kmscon,请运行
# ln -s '/usr/lib/systemd/system/kmsconvt@.service' '/etc/systemd/system/autovt@.service'
这将使 systemd 在每个 VT 上启动 kmscon 而不是 agetty。更准确地说,这将使 systemd-logind 为新的 VT 使用 kmsconvt@.service
而不是 getty@.service
。此外,所有其他使用 getty@.service
的 systemd 单元都不会受到此更改的影响。
如果 kmscon 因任何原因无法启动,此单元将导致启动 getty@.service
。此外,如果没有任何 VT 可用,则此单元将不会启动任何内容。
CJK 支持
Kmscon 通过默认字体引擎 pango 支持渲染 CJK 字符。但是,必须全局配置 fontconfig,以将 monospace 字体别名映射到正确的 CJK 字体。对于中国用户,提供了以下模板,经验证可以产生令人满意的中文字符渲染效果
/etc/fonts/conf.d/99-kmscon.conf
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match> <test name="family"><string>monospace</string></test> <edit name="family" mode="prepend" binding="strong"> <string>DejaVu Sans Mono</string> <string>WenQuanYi Micro Hei Mono</string> </edit> </match> </fontconfig>
或者,我们可以将以下行添加到 /etc/kmscon/kmscon.conf
中,以使用以下字体全局配置 kmscon
/etc/kmscon/kmscon.conf
font-name=DejaVu Sans Mono, WenQuanYi Micro Hei Mono font-size=14
请参阅 kmscon(1)。
您需要安装 ttf-dejavu 和 wqy-microhei,它们都可从官方仓库获得。
故障排除
在 Xorg 和 kmscon 之间切换时出现问题
如果您在 Xorg 和 kmscon 之间切换时遇到问题,您可能需要将 hwaccel
添加到 /etc/kmscon/kmscon.conf
。该文件和文件夹不属于软件包的一部分,因此必须手动创建。另一种可能性是编辑 systemd 服务文件。
无音频控制
从版本 7 开始,如果您无法控制音频,请将您的用户添加到 audio
用户组。请注意此选择的缺点。
Vim 不清除终端输出
Vim 可能会在不清除终端输出的情况下打开,仍然可以编辑文件,但文本在更改之前不可见。作为一种解决方法,请尝试设置环境变量 TERM=vt220
。或者,另一个类似 vim 的编辑器(如 vi 或 Neovim)可能会起作用。
TERM
设置为 vt220
,则颜色支持不可用。自动登录
可以通过将此添加到 /etc/kmscon/kmscon.conf
来自动以用户 username 身份登录,而无需询问密码
/etc/kmscon/kmscon.conf
# Example: Login as user "username" without asking for password login=/bin/login -p -f username
或以用户 root 身份登录
/etc/kmscon/kmscon.conf
# Example: Login as root in a bash shell without asking for password login=/bin/bash --login
HiDPI 支持
您可以使用 Ctrl++
、Ctrl+Shift+=
、Ctrl+-
快捷键动态更改字体大小。您还可以在 /etc/kmscon/kmscon.conf
中设置 'font-dpi' 和 'font-size',例如 'font-dpi=288',288 是 96 * 3,即 300% 缩放。96 是默认值。
无法从 KMS 控制台启动窗口管理器
从命令行使用 startx 或例如 sway 启动 Xorg 或 Wayland 会话将失败。要么保留传统的非 KMS tty 用于此目的,要么使用登录管理器。