KMSCON
Kmscon 是一個簡單的、基於 Linux 內核級顯示模式設置的終端模擬器,嘗試用用戶空間終端代替內核的虛擬終端(VT)。[1]
特性[編輯 | 編輯原始碼]
KMSCON 能作為 Linux 內核內置終端的一個完整替代,它具有以下功能:
- 完整的 vt220 to vt510 實現。
- 完整的國際化支持:
- Kmscon 支持打印全部 Unicode 字符,包括中日韓文字。
- Kmscon 通過 libxkbcommon 對國際鍵盤佈局提供支持,所以人們可以使用 X 支持的所有鍵盤佈局。
- 硬件加速渲染。
- 支持 multi-seat。
/etc/pam.d/login
中相應行來停用 pam_securetty
模塊。 安裝[編輯 | 編輯原始碼]
雖然名字裏帶有 KMS,kmscon 並非硬性依賴 KMS。Kmscon 支持的視頻後端如下:drm3d(Linux DRM 硬解後端)、fbdev(Linux fbdev 視頻後端)。請確保你的系統支持其中之一。
安裝 kmscon包,或者從 AUR 安裝最新開發版 kmscon-gitAUR。還可以安裝 kmscon-patched-gitAUR,這個版本與其打過補丁的依賴 (libtsm-patched-gitAUR)包含了一些標準版(2014 年後停止更新)沒有的修復與改進(例如 24 位彩色支持)。
在 tty1 上一般有特殊的 systemd 配置。出於保守的策略,你可以繼續在 tty1 上使用傳統的 getty 而只在其他虛擬終端上運行 kmscon ,或者你可以用 kmscon 替換 getty。
要在 tty1 上啟用 kmscon:
# systemctl disable getty@tty1.service # systemctl enable kmsconvt@tty1.service
重新啟動即可生效。
要在所有的虛擬終端上啟用 kmscon :
# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service
這使 systemd包 在每個虛擬終端上啟動 kmscon 而不是 agetty,同時使 systemd-logind 使用 kmsconvt@.service
而不是 getty@.service
打開新的虛擬終端。不過使用 getty@.service
的 systemd 單元不受影響。
如果 kmscon 無法啟動,它會嘗試啟動 getty@.service
,此外沒有虛擬終端可用時這個單元不會啟動。
中日韓文字支持[編輯 | 編輯原始碼]
Kmscon 通過默認的字體引擎 pango包 支持渲染中日韓文字。但是, 必須為 fontconfig包 設置全局配置,來將等寬字體映射到合適的中日韓字體上。我們為中文用戶提供如下配置模板。此模板可以滿足中文字體渲染要求:
/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
你需要安裝 ttf-dejavu包 和 wqy-microhei包,它們都可以在官方倉庫中找到。
疑難解答[編輯 | 編輯原始碼]
在切換 Xorg 和 kmscon 時遇到問題[編輯 | 編輯原始碼]
如果你在切換 Xorg 和 kmscon 時遇到問題,試着把 hwaccel
添加到 /etc/kmscon/kmscon.conf
中。
這個文件和目錄不在包內,因此你需要手動創建它們,或者你可以編輯 systemd 單元文件。
ExecStart=/usr/bin/kmscon "--vt=%I" --seats=seat0 --no-switchvt --font-name Terminus --font-size 12 --hwaccel --drm
無法控制聲音[編輯 | 編輯原始碼]
在版本 7 中,如果你不能控制聲音,把你的用戶添加到 audio
用戶組中。不過要注意這麼做的缺點。
Vim 無法清空終端輸出[編輯 | 編輯原始碼]
Vim 可能會在啟動時不清除終端輸出,這時仍然可以編輯文件,但只有更改文本後才能看到文本。解決方法是,嘗試設置環境變量 TERM = vt220
。 另外,其它類似於 vim 的編輯器(例如 vi包 或 Neovim)可能會正常工作。
自動登錄[編輯 | 編輯原始碼]
你可以在 /etc/kmscon/kmscon.conf
中添加以下內容來自動登錄用戶(不需要輸入密碼):
# 你可以按需修改以下命令 # 例:以 root 用户直接登录(非 systemd 会话) login=/bin/bash --login # 例:以指定用户直接登录(正常 systemd 会话) login=/usr/bin/machinectl -q shell 你的用户名@
HiDPI 支持[編輯 | 編輯原始碼]
使用 Ctrl++
、Ctrl+Shift+=
、Ctrl+-
快捷鍵可以實時更改字體大小。也可以在 /etc/kmscon/kmscon.conf
裡設置 font-dpi 和 font-size 選項,例如 font-dpi=288
。288 = 96 * 3,也就是三倍大小。96 是默認值。