本文来自依云's Blog,转载请注明。
从一开始使用 Arch Linux,我就选择了 slim 作为登录管理器。因为它轻量嘛,而且配合 Arch Linux 自己做的主题也挺漂亮的:
所以即使 slim 不再使用配置文件来指定有哪些桌面环境可用,改用无法指定顺序的 .desktop 文件,我只好告诉 pacman,不要升级 slim 了。
于是就这么用了很久,直到 lightdm 出世,直到 slim 所使用的托管网站关闭、停止开发,我也依然在用 slim。
直到有一天,那是在 systemd 开始使用用户级别的 session D-Bus 之后。我登出了会话,再次登入时,发现整个系统都不好了,因为 DBUS_SESSION_BUS_ADDRESS 环境变量没有被设置,导致程序找不到 session bus 而自动启动了一个。可我用户级别的 systemd 还在旧的 session bus 里呢,联系不上了。当然 tmux 里所使用的 session bus 也开始混乱了(我有让 tmux 从环境里更新各种 window 中的 DBUS_SESSION_BUS_ADDRESS 变量)。
究其原因,是因为 slim 没有正确地处理 sesssion。从 loginctl 及 systemd-cgls 可以看到,重新登录 slim 之后,进程并没有处在新的会话里,而是复用了旧的会话。
systemd 上,会话管理是 pam_systemd 来管理的,同时它会引入 DBUS_SESSION_BUS_ADDRESS 环境变量。PAM 会话是有一个 leader 进程的,它的结束标志着这个会话的结束(当然里边存活的进程还会继续存在)。比如文本终端登录用的 login,每一次登录都是一个新进程。比如 sshd,每个连接都是由单独的子进程来处理,PAM 会话也是那个时候打开的。然而 slim 却是在父进程里打开了 PAM 会话。于是 pam_systemd 一看,这个 session leader 怎么又要打开会话啦?报错:
8月 02 21:54:32 lilyforest slim[669]: pam_systemd(slim:session): Cannot create session: Already running in a session
所以,slim 下,只有第一次登录是正常的……
所以是时候换个跟得上时代的登录管理器了。那就 lightdm + GTK greeter 好了。
这个我以前也用过,不过没怎么配置所以背景一片漆黑,难看死了。这次制作了张背景图,在/etc/lightdm/lightdm-gtk-greeter.conf
里配置一下
[greeter] background=/usr/local/share/pixmaps/background.png
咦?还有头像?那就放一个~/.face
好了。什么?lightdm 你没权限读取它?OK,给你权限:
setfacl -m u:lightdm:x ~ setfacl -m u:lightdm:r ~/.face
我的 HOME 目录的权限是 750,别人(other)进不来的,所以要给 lightdm x 权限。
最终的样子就是这样,也挺漂亮的,功能还挺全 :-)
Nov 04, 2015 03:05:55 PM
所以那个提着裙子的妹纸是谁!
Nov 04, 2015 04:11:10 PM
所以那个提着裙子的妹纸是谁!
Nov 04, 2015 04:48:56 PM
所以那个提着裙子的妹纸是谁!
Nov 04, 2015 07:16:44 PM
你们问 Google 去啊,我遇到这图的时候也没人跟我介绍介绍那妹子啊。
Nov 04, 2015 07:17:03 PM
你的链接写错了喵 0.0
Nov 04, 2015 11:26:13 PM
俺都是 tty 登录了之后 startx :D
Nov 05, 2015 03:12:16 PM
现在稍微靠谱点的DM只有这个和SDDM了……
而且SDDM跟gnome-keyring还不是很对付……
而且GTK greeter还很丑……
而且webkit greeter连一个能换桌面的都没有……
没有一个比得上SLiM的……
Nov 05, 2015 09:10:57 PM
不支持FreeBSD的启动管理器要它何用。。。
Nov 06, 2015 10:50:35 PM
搞不清楚 dbus 这些东西……所以还是简单的 alias 一个 xinit -- :0 vt$XDG_VTNR。/usr/bin/login 后进入X11
Nov 10, 2015 02:19:49 PM
那张壁纸我也曾用过
Nov 10, 2015 02:20:22 PM
slim 除了换壁纸还能定义别的吗?
Nov 10, 2015 02:59:02 PM
slim 就一张壁纸一个输入框。都能在主题里改的。
Nov 19, 2015 08:38:51 PM
最近投奔arch,配dm时遇到了 https://bbs.archlinux.org/viewtopic.php?id=203261 描述的问题,敢问大侠那个提着裙子的妹纸是谁?
Nov 19, 2015 09:31:43 PM
呃,硬件问题……
Nov 20, 2015 12:07:27 AM
虚拟机上试了下确实又没问题,坑爹atom上网本,折腾了一晚上,还是先老老实实startx吧...
Dec 11, 2015 04:45:54 PM
其实不用dm也挺好,嘿嘿。我把startx写在.zsh_login里。。登陆自动开启de。。。(其实用的自动登陆)
Dec 11, 2015 07:03:37 PM
那我 ssh 的时候怎么办呢?
Dec 11, 2015 07:04:57 PM
貌似不影响ssh吧= =
Dec 11, 2015 08:10:42 PM
ssh 的时候也会执行 .zsh_login 的呀。
Dec 11, 2015 08:18:15 PM
汗。。。我当什么呢。。。判断一下就好啦。 参考这个https://wiki.archlinux.org/index.php/Xinitrc#Starting_applications_without_a_window_manager
Dec 11, 2015 08:58:08 PM
多麻烦啊。还得考虑已有 X 在运行的情况下的控制台登录什么的。
Dec 11, 2015 09:58:44 PM
麻烦么= =没吧
Dec 11, 2015 11:05:36 PM
你去看看我的 zshrc 和 vimrc 里的不同环境的判断。