SLiM

来自 ArchWiki

此文章或章节已过时。

原因: 官方软件包现在将 slim-fork 视为上游。(在 Talk:SLiM 中讨论)
警告: SliM 项目已被放弃(上次发布是在 2013 年),并且与 systemd(包括 logind 会话)不完全兼容。请考虑使用其他 显示管理器startx

SLiMSimple Login Manager 的首字母缩写。SLiM 轻量级且易于配置,需要的依赖项极少,并且不依赖 GNOMEKDE 桌面环境。因此,它有助于为喜欢使用轻量级桌面(如 XfceOpenboxFluxbox)的用户构建轻量级系统。

安装

安装 slim 软件包。

配置

注意: SLiM 不再支持已启用多个会话的“默认”会话。这在尝试注销并重新登录到同一会话时最为明显。

SLiM 可以通过在 /etc/slim.conf 中使用 sessiondir /usr/share/xsessions/ 自动检测已安装的桌面环境和窗口管理器。从 1.3.6-2 之前的版本升级的用户必须相应地修改 /etc/slim.confxinitrc。请参见下文。

启用 SLiM

启用 SLiM 服务 slim.service。这假定之前已启用的显示管理器已被禁用。否则,请更改默认目标

环境

注意: 可以通过按 F1 键循环选择可用的会话。

要配置 SLiM 1.3.6-2(或更高版本)加载环境,请编辑 /etc/slim.conf~/.xinitrc

首先,编辑 /etc/slim.conf:如果您仅使用单个环境,则可以注释掉 sessiondir /usr/share/xsessions/。这将禁用自动检测已安装的环境

# Set directory that contains the xsessions.
# slim reads xsession from this directory, and be able to select.
# sessiondir            /usr/share/xsessions/

如果您希望自动检测已安装的桌面环境,请保持该行未注释。

其次,编辑 xinitrc

$HOME/.xinitrc
#!/bin/sh
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi
exec $1

设置默认用户名

SLiM 可以配置为自动设置所需的用户名,这样用户名将预先填写。默认情况下,密码字段也将被选中。在 /etc/slim.conf 中更改以下行

# default_user        simone

取消注释此行,并将“simone”更改为您选择的用户名

default_user        your username

启用自动登录

注意: 必须先将 SLiM 设置为使用单个桌面环境以及默认用户名。
警告
  • 不要root 账户设置此项。
  • 如果启用了自动登录,GNOME keyring 将不会在登录时自动解锁。这将导致依赖的应用程序(如 Chrome/Chromium 和 NetworkManager)行为异常(请参阅 https://bbs.archlinux.org/viewtopic.php?id=167579)。

编辑 /etc/slim.conf 以取消注释 auto_login 命令,并将 no 替换为 yes

auto_login          yes

主题

安装 slim-themes 软件包。archlinux-themes-slim 软件包包含多个不同的主题 (slimthemes.png)。查看 /usr/share/slim/themes 目录以查看可用的主题。在 /etc/slim.conf 中的 current_theme 行中输入主题名称

#current_theme       default
current_theme       archlinux-simplyblack

您可以在 Xorg 运行时预览主题

$ slim -p /usr/share/slim/themes/<theme name>

要关闭,请在“Login”行中键入“exit”并按 Enter 键。

可以在 AUR 中找到其他主题软件包。有关如何自定义主题或制作自己的主题,请参阅 主题文档。SLiM 不支持备用主题目录,因此建议为您的自定义主题创建软件包,以便 pacman 能够识别它。

自定义背景

SLiM 硬编码为从您的主题目录加载 background.pngbackground.jpg(按该顺序)。只需覆盖相应的文件

# cp /path/to/new_background.jpg /usr/share/slim/themes/<theme_name>/background.jpg

双屏幕设置

您可以在 /usr/share/slim/themes/<your-theme>/slim.theme 中自定义 slim 主题,以将这些百分比值转换为像素值。框本身为 450 像素 x 250 像素

input_panel_x           50%
input_panel_y           50%

转换为像素值

# These settings set the "archlinux-simplyblack" panel in the center of a 1440x900 screen
input_panel_x           495
input_panel_y           325
# These settings set the "archlinux-retro" panel in the center of a 1680x1050 screen
input_panel_x           615
input_panel_y           400

如果您的主题有背景图片,则应使用 background_style 设置(stretch、tile、center 或 color)以使其正确显示。

技巧与提示

更改光标

安装后,编辑 /etc/slim.conf 并取消注释该行

cursor   left_ptr

这将为您提供一个正常的箭头光标。此设置将转发到 xsetroot -cursor_name。您可以在 可能的光标名称/usr/share/icons/your-cursor-theme/cursors/ 中查找。

要更改登录屏幕上使用的光标主题,请参阅 光标主题#默认光标主题

使 SLiM 与桌面壁纸相匹配

要在 SLiM 和桌面之间共享壁纸,请重命名使用的主题背景,然后从桌面壁纸文件创建到默认 SLiM 主题的链接

# mv /usr/share/slim/themes/default/background.jpg{,.bck}
# ln -s /path/to/mywallpaper.jpg /usr/share/slim/themes/default/background.jpg

从 SLiM 关机、重启、休眠、退出、启动终端

您可以从 SLiM 登录屏幕关机、重启、休眠、退出甚至启动终端。为此,请在用户名字段中使用值,并在密码字段中使用 root 密码

  • 要启动终端,请输入 console 作为用户名(默认为 xterm,必须单独安装... 编辑 /etc/slim.conf 以更改终端首选项)
  • 对于关机,请输入 halt 作为用户名
  • 对于重启,请输入 reboot 作为用户名
  • 要退出到 bash,请输入 exit 作为用户名
  • 对于休眠,请输入 suspend 作为用户名。默认情况下禁用休眠,以 root 身份编辑 /etc/slim.conf 以取消注释 suspend_cmd 行,并在必要时修改休眠命令本身(例如,将 /usr/sbin/suspend 更改为 sudo /usr/sbin/pm-suspend)。

Splashy 导致的电源关闭错误

如果您使用 Splashy 和 SLiM,有时您无法从 GNOME、Xfce、LXDE 或其他桌面环境的菜单中关闭电源或重启。检查您的 /etc/slim.conf/etc/splash.conf;将 DEFAULT_TTY=7 设置为与 xserver_arguments vt07 相同。

电源关闭托盘图标失效

如果您的电源关闭托盘图标失效,可能是由于没有 root 权限。要使用 root 权限启动托盘图标,请确保让 SLiM 启动该程序。按如下方式编辑 /etc/slim.conf

sessionstart_cmd 	/path/to/tray/icon/program &

使用 SLiM 登录信息

默认情况下,SLiM 无法将登录信息记录到 utmp 和 wtmp,这会导致 who、last 等命令错误报告登录信息。要修复此问题,请按如下方式编辑您的 slim.conf

sessionstart_cmd    /usr/bin/sessreg -a -l $DISPLAY %user
sessionstop_cmd     /usr/bin/sessreg -d -l $DISPLAY %user

自定义 SLiM 登录命令

您还可以使用 /etc/slim.conf 中的 sessionstart_cmd/sessionstop_cmd 来记录特定信息,例如 slim 使用的会话、用户或主题

sessionstop_cmd /usr/bin/logger -i -t ASKAPACHE "(sessionstop_cmd: u:%user s:%session t:%theme)"
sessionstart_cmd /usr/bin/logger -i -t ASKAPACHE "(sessionstart_cmd: u:%user s:%session t:%theme)"

或者,如果您想在 slim 加载时播放歌曲(并且您已安装 beep 程序)

sessionstart_cmd /usr/bin/beep -f 659 -l 460 -n -f 784 -l 340 -n -f 659 -l 230 -n -f 659 -l 110

GNOME Keyring

警告: 如果启用了自动登录,GNOME keyring 将不会在登录时自动解锁。这将导致依赖的应用程序(如 Chrome/Chromium 和 NetworkManager)行为异常(请参阅 https://bbs.archlinux.org/viewtopic.php?id=167579)。

请参阅 GNOME/Keyring#使用密钥环 以在自定义会话中使用 GNOME Keyring。

使用 SLiM 设置 DPI

Xorg 服务器通常会获取 DPI,但如果它没有获取,您可以将其指定给 SLiM。如果您在 /etc/X11/xinit/xserverrc 中使用参数 -dpi 96 设置 DPI,则它将不适用于 SLiM。要修复此问题,请将您的 slim.conf

xserver_arguments   -nolisten tcp vt07

更改为

xserver_arguments   -nolisten tcp vt07 -dpi 96

使用随机主题

使用 current_theme 变量作为逗号分隔的列表来指定要从中选择的集合。选择是随机的。

将整个会话移动到另一个 VT

如果未使用 tty 终端 3-6 并已注释掉(您可以使用 screen,因此只需要一个终端),请更改 /etc/slim.conf 以移动 X 服务器

xserver_arguments -nolisten tcp vt07

只需将 vt07 更改为例如 vt03,因为那里没有启动 agetty。

在登录时自动挂载加密的 /home

要在用户登录 SLiM 时自动挂载加密分区,请按如下方式配置 pam_mount

/etc/pam.d/slim
auth            requisite       pam_nologin.so
auth            required        pam_env.so
auth            required        pam_unix.so
auth            optional        pam_mount.so
account         required        pam_unix.so
password        required        pam_unix.so
password        optional        pam_mount.so
session         required        pam_limits.so
session         required        pam_unix.so
session         optional        pam_mount.so
session         optional        pam_loginuid.so
session         optional        pam_ck_connector.so

更改键盘布局

编辑 /etc/X11/xorg.conf.d/10-evdev.conf,找到以下部分,添加两个粗体行,并将 dvorak 替换为您首选的键盘映射

Section  "InputClass"
          Identifier "evdev keyboard catchall"
          MatchIsKeyboard "on"
          MatchDevicePath "/dev/input/event*"
          Driver "evdev"

          # Keyboard layouts
          Option "XkbLayout" "dvorak"
EndSection

屏幕锁定

Slim 包括 slimlock,一种屏幕锁定功能。要使用它,只需运行 slimlock

Slimlock 从 /etc/slim.conf 及其自身的配置文件 /etc/slimlock.conf 读取一些配置。

要防止在锁定时进行 VT 切换,请在 slimlock.conf 中将 tty_lock 设置为 1。这也要求您具有对 /dev/console 的写入权限,并且 slimlock 具有 sys_sys_tty_config 功能。实现此目的的一种方法是将 slimlock 设置为 suid root

# chmod +4000 /usr/bin/slimlock
# chown root: /usr/bin/slimlock

另一种方法是 setcap 并允许您的 uid 写入 /dev/console

# setcap cap_sys_tty_config+ep /usr/bin/slimlock
# chmod o+rw /dev/console

您可以使用 xss-lock 自动锁定屏幕

$ xss-lock -- /usr/bin/slimlock &

已知问题

关机或重启停滞

SLiM、Xfce 和 systemd 的组合存在一个错误或已知问题,该问题不允许系统正常关机,并且 systemd 等待 SLiM 服务结束,但最终被终止。

编辑 slim.service 时,以下行可能有助于加速关机过程

[Service]
ExecStart=/usr/bin/slim -nodaemon
Restart=on-failure
TimeoutStopSec=5s
IgnoreSIGPIPE=no
ExecStop=/bin/kill -TERM -${MAINPID}

请参阅 FS#32380

身份验证问题

如果您的密码包含非 ASCII 字符(é、è、ç、à 等),并且您系统的 locale 是 Unicode(例如 fr_FR.UTF-8),您将无法使用官方存储库中的软件包登录到您的会话(在 Debian 上发现的错误,bug#532060 和 NixOS 上,bug#29802)。

AUR 上提供的修复版本带来了 Unicode 支持并解决了此问题:slim-unicodeAUR

提示: 同样,在 Unicode 中,如果您计划在 /etc/slim.conf 或主题中本地化您的连接处理程序,例如 reboot_msg"Reboot system...",则此补丁允许您正确显示消息。

参见