11
4
2015
23

从 slim 到 lightdm

本文来自依云's Blog,转载请注明。

从一开始使用 Arch Linux,我就选择了 slim 作为登录管理器。因为它轻量嘛,而且配合 Arch Linux 自己做的主题也挺漂亮的:

slim 登录界面

所以即使 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 权限。

最终的样子就是这样,也挺漂亮的,功能还挺全 :-)

lightdm 登录界面

Category: Linux | Tags: linux X Window systemd X window | Read Count: 17442
Mucid 说:
Nov 04, 2015 03:05:55 PM

所以那个提着裙子的妹纸是谁!

mktime 说:
Nov 04, 2015 04:11:10 PM

所以那个提着裙子的妹纸是谁!

orvice 说:
Nov 04, 2015 04:48:56 PM

所以那个提着裙子的妹纸是谁!

Avatar_small
依云 说:
Nov 04, 2015 07:16:44 PM

你们问 Google 去啊,我遇到这图的时候也没人跟我介绍介绍那妹子啊。

Avatar_small
依云 说:
Nov 04, 2015 07:17:03 PM

你的链接写错了喵 0.0

cli__ 说:
Nov 04, 2015 11:26:13 PM

俺都是 tty 登录了之后 startx :D

HeYSH 说:
Nov 05, 2015 03:12:16 PM

现在稍微靠谱点的DM只有这个和SDDM了……

而且SDDM跟gnome-keyring还不是很对付……

而且GTK greeter还很丑……

而且webkit greeter连一个能换桌面的都没有……

没有一个比得上SLiM的……

Haowu Ge 说:
Nov 05, 2015 09:10:57 PM

不支持FreeBSD的启动管理器要它何用。。。

MaskRay 说:
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 除了换壁纸还能定义别的吗?

Avatar_small
依云 说:
Nov 10, 2015 02:59:02 PM

slim 就一张壁纸一个输入框。都能在主题里改的。

zyguan 说:
Nov 19, 2015 08:38:51 PM

最近投奔arch,配dm时遇到了 https://bbs.archlinux.org/viewtopic.php?id=203261 描述的问题,敢问大侠那个提着裙子的妹纸是谁?

Avatar_small
依云 说:
Nov 19, 2015 09:31:43 PM

呃,硬件问题……

zyguan 说:
Nov 20, 2015 12:07:27 AM

虚拟机上试了下确实又没问题,坑爹atom上网本,折腾了一晚上,还是先老老实实startx吧...

shy泠 说:
Dec 11, 2015 04:45:54 PM

其实不用dm也挺好,嘿嘿。我把startx写在.zsh_login里。。登陆自动开启de。。。(其实用的自动登陆)

Avatar_small
依云 说:
Dec 11, 2015 07:03:37 PM

那我 ssh 的时候怎么办呢?

shy泠 说:
Dec 11, 2015 07:04:57 PM

貌似不影响ssh吧= =

Avatar_small
依云 说:
Dec 11, 2015 08:10:42 PM

ssh 的时候也会执行 .zsh_login 的呀。

shy泠 说:
Dec 11, 2015 08:18:15 PM

汗。。。我当什么呢。。。判断一下就好啦。 参考这个https://wiki.archlinux.org/index.php/Xinitrc#Starting_applications_without_a_window_manager

Avatar_small
依云 说:
Dec 11, 2015 08:58:08 PM

多麻烦啊。还得考虑已有 X 在运行的情况下的控制台登录什么的。

Avatar_small
依云 说:
Dec 11, 2015 11:05:36 PM

你去看看我的 zshrc 和 vimrc 里的不同环境的判断。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Mastodon | Theme: Aeros 2.0 by TheBuckmaker.com