使用 lightdm 时,我可以通过执行切换到另一个用户dm-tool switch-to-user
。有没有一种不依赖显示管理器的方法?如果没有,其他显示管理器的等效命令是什么:
- 通用数据管理
- SDDM
- 苗条的
- 勒克斯DM
- 西德米
答案1
有没有一种不依赖显示管理器的方法?
您需要命令行/运行程序解决方案。
鉴于我在 xdm、gxm、lightdm 方面的经验以及所有这些的工作原理,我认为没有完美的一刀切的答案。原因是:提供实际的用户隔离需要显示管理器密切管理 vt 开关。
也就是说,在简单和/或老式的显示管理器上,我过去曾考虑过一个应该可行的解决方案。
基本上,可以将环境变量chvt
的内容与参数一起使用XDG_VTNR
目标用户会话过程。效果类似于按Ctrl-Alt-Fn
组合键,将n
您提供的数字输入到chvt
。这在评论中被考虑xorg - 在两个打开的 X 会话之间切换而无需重新验证 - Ubuntu问答。
不过,您仍然需要自己获得该号码。要么让 root 运行一个进程来监听目标用户进程的环境,要么让用户在登录时通过已知位置通告此号码(例如~/.myvtnr
,假设一个用户一次不超过一个 X 会话,即并不总是如此,用户可能有多个 X 会话,包括使用Xnest
) 的嵌套会话。
如果没有,其他显示管理器的等效命令是什么:
在运行 gdm 的 Ubuntu 12.04 上,这对我有用dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.DisplayManager $XDG_SEAT_PATH org.freedesktop.DisplayManager.Seat.SwitchToUser string:otheruserlogin string:anywordseemsignored
:替换otheruserlogin
为真实用户登录。
而如果XDG_SEAT_PATH
没有设置(例如echo $XDG_SEAT_PATH
不提供任何输出),那么你可以先使用:export XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
然后重试。
它适用于带有 gdm 的 Ubuntu 18.04 吗?与其他显示管理器?请报告详情。它可能会在未来帮助其他人(包括你和我:-)。