ptr*_*cao 97 command-line display-manager
是否有一个简单的 linux 命令可以告诉我我的显示管理器是什么?
我正在使用 Xfce。不同的桌面环境通常隶属于不同的显示管理器吗?
Šim*_*óth 76
不幸的是,每个发行版的配置都不同:
Debian/Ubuntu
/etc/X11/default-display-manager
Run Code Online (Sandbox Code Playgroud)
RedHat(也应该适用于 Fedora)
/etc/sysconfig/desktop
Run Code Online (Sandbox Code Playgroud)
开放式操作系统
/etc/sysconfig/displaymanager
Run Code Online (Sandbox Code Playgroud)
小智 48
如果您使用基于systemd的发行版。此命令将给出当前配置的显示管理器的名称,因为您可能安装了多个显示管理器。
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
Run Code Online (Sandbox Code Playgroud)
输出将类似于
ExecStart=/usr/bin/mdm
Run Code Online (Sandbox Code Playgroud)
看起来我正在使用薄荷显示管理器。
Mio*_*Rin 34
如果您使用的是 systemd,那么
systemctl status display-manager
Run Code Online (Sandbox Code Playgroud)
将在您的机器上显示活动显示管理器服务的名称和状态。
Gil*_*il' 28
没有。显示管理器不一定与在同一 X 服务器上运行的任何其他东西相关。显示管理器在您登录之前运行;它由系统管理员选择。其他一切(窗口管理器、会话管理器、桌面环境……)都由用户选择。甚至不必有显示管理器:如果您以文本模式登录并使用 启动 GUI startx,则不涉及显示管理器。
您可以检查哪个显示管理器是您系统上的默认显示管理器。这只会在一些常见但不普遍的假设下给出正确的答案。如果您出于某种原因手动运行不同的管理器,则此方法不会告诉您。
一个好的选择是找出 X 服务器的进程 ID:它的父进程可能是一个显示管理器,如果有的话。这要求您的客户端与 X 服务器在同一台机器上运行。lsof /tmp/.X11-unix/X${DISPLAY#:}将显示 X 服务器进程(假设 X 套接字位于 中/tmp/.X11-unix)。
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
Run Code Online (Sandbox Code Playgroud)
(解释:lsof -F ''打印输出如p1234。该-F选项表示机器可解析的输出格式,''表示只打印PID,p前面的字母。x=${x#p}去掉首字母p。最后一行获取X服务器的父级的PID ( ps -o ppid -p $x),并调用ps以显示有关该父进程的信息。)
某些发行版允许安装多个显示管理器。除非你有一个多座位系统,否则只会有一个运行。要列出 Debian 和衍生产品下所有已安装的显示管理器包:
aptitude -F %p search '~i ~P^x-display-manager$'
Run Code Online (Sandbox Code Playgroud)
或者
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
Run Code Online (Sandbox Code Playgroud)
cha*_*dge 12
显示管理器名称应在 DESKTOP_SESSION 中
echo $DESKTOP_SESSION
Run Code Online (Sandbox Code Playgroud)
为我返回“侏儒”。
编辑
你是对的。他们在 XFCEs bugzilla上反复讨论这个问题,所以它可能不是很可靠。