CDM

出自 ArchWiki

CDM 是一个简约但功能齐全的替代品,可以替代如 显示管理器 (例如 SLiMSDDMGDM),它提供了一个快速、基于对话框的登录系统,且没有 X Window 系统的开销。CDM 使用纯 bash 编写,几乎没有依赖项,但支持多用户/会话,并且可以启动几乎任何桌面环境或窗口管理器。

安装

安装 cdmAUR 软件包或 cdm-gitAUR 软件包。

现在通过禁用它们的 systemd 服务,确保没有其他显示管理器启动。

例如,如果您正在使用 GDM,您需要禁用 gdm.service

无需为 CDM 启用 systemd 服务。相反,一个名为 zzz-cdm.sh 的脚本将被放置到 /etc/profile.d 中。当您登录到登录 shell 时,将运行此脚本(以及 /etc/profile.d 中的其余脚本)。但是,为了防止因配置错误而导致用户无法访问其桌面和虚拟终端的情况,该脚本会检查它正在哪个虚拟终端上运行,并且默认情况下仅在 tty1 上运行。

由于该脚本放置在全局 /etc/profile.d 目录中,因此 CDM 将为所有在 tty1 上登录的用户运行。如果您希望它仅为您运行,请从 /etc/profile.d/zzz-cdm.sh 中删除执行权限,并将该文件的内容复制到 bash 的 ~/.bash_profile 或 zsh 的 ~/.zprofile 中。

配置

您可以通过编辑 /etc/cdmrc 来配置 CDM。它有完整的文档记录,应该相对容易理解。您还可以通过将 /etc/cdmrc 复制到 $HOME/.cdmrc 来获得用户特定的配置文件。

菜单项

菜单项使用三个数组配置:binlistnamelistflaglist。这些数组中项目的顺序很重要,索引相同的项目描述同一个菜单项。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 服务器的过程 - 您可以指定 X 服务器将在哪个 tty 上启动(如果要在当前 tty 上运行 X 服务器,请指定数字或 'keep'),最后,您可以指定自定义的 X 服务器参数。

电源操作的自定义命令

如果您想为电源操作(如关机或重启)添加条目,您可以将它们包含在 binlist 数组中。有关详细信息,请参阅 systemd#电源管理

参见