CDM
CDM 是一个极简但功能齐全的显示管理器替代方案,可替代 SLiM, SDDM 和 GDM。它提供了一个快速的、基于对话框的登录系统,且没有 X Window 系统的开销。CDM 完全由 bash 编写,几乎没有依赖,但支持多用户/多会话,并且可以启动几乎任何桌面环境或窗口管理器。
安装
现在,请通过禁用它们的 systemd 服务,确保没有其他显示管理器启动。
例如,如果你之前使用的是 GDM,你需要禁用 gdm.service。
CDM 不需要启用 systemd 服务。相反,一个名为 zzz-cdm.sh 的脚本将被放置在 /etc/profile.d 中。当你登录到登录 shell 时,该脚本(以及 /etc/profile.d 中的其他脚本)会被运行。然而,为了防止因配置错误导致用户无法访问桌面和虚拟终端的情况,该脚本会检查它在哪个虚拟终端上运行,并且默认仅在 tty1 上运行。
由于该脚本位于全局 /etc/profile.d 目录中,所有在 tty1 上登录的用户都将运行 CDM。如果你希望它仅为你运行,请取消 /etc/profile.d/zzz-cdm.sh 的可执行权限,并将该文件的内容复制到你的 ~/.bash_profile(针对 bash)或 ~/.zprofile(针对 zsh)中。
配置
你可以通过编辑 /etc/cdmrc 来配置 CDM。该文件有完整的文档,应该相对容易理解。你也可以通过将 /etc/cdmrc 复制到 $HOME/.cdmrc 来创建用户特定的配置文件。
菜单项
菜单项使用三个数组进行配置:binlist、namelist 和 flaglist。这些数组中项的顺序很重要,具有相同索引的项描述同一个菜单项。binlist 包含要执行的命令,namelist 包含在菜单中显示的名称,flaglist 包含 binlist 中指定程序的类型,'X' 代表 X 会话,'C' 代表控制台程序。基本上,X 会话使用 startx 启动(binlist 中的项是 startx 命令的参数),而控制台程序使用 exec 启动。
这里有一个示例配置
binlist=(
"~/.xsession" # Launch your X session,
"/bin/bash --login" # or just execute your shell,
"/usr/bin/fbterm" # or start a frame buffer console,
"/usr/bin/cdm ~/.submenu.cdmrc" # or go to a submenu :)
)
namelist=("X session" Console FBTerm "Sub menu")
flaglist=(X C C C)
主题
主题位于 /usr/share/cdm/themes,你只需要将主题文件的完整路径传递给 dialogrc 变量即可
/etc/cdmrc
dialogrc=/usr/share/cdm/themes/cdm
主题语法相当直观,创建新主题的最佳方法是复制并编辑现有主题。
启动 X
你可以通过几种方式影响 X 服务器的启动过程 —— 你可以指定在哪个 tty 上启动 X 服务器(指定数字或 'keep' 以在当前 tty 上运行 X 服务器),最后,你可以指定自定义的 X 服务器参数。
电源操作的自定义命令
如果你想添加电源操作的条目(如关机或重启),可以将它们包含在 binlist 数组中。详情请参阅 systemd#Power management。
参见
- The Console Display Manager - 关于 CDM 的 Arch Linux 论坛帖子
- GitHub 页面