有没有简单的linux命令可以告诉我显示管理器是什么?


Answers:


45

不幸的是,每个发行版的配置都不同:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat(也应适用于Fedora)

/etc/sysconfig/desktop

开源软件

/etc/sysconfig/displaymanager

1
呵呵,为什么要告诉我有关配置的信息...?
ptrcao 2011年

2
@ptrcao因为它指定了您正在使用的显示管理器。
Let_Me_Be 2011年

1
假设我不知道我的显示管理器是什么,我想使用终端查找。我该怎么做?
ptrcao 2011年

3
@ptrcao您会调查这些文件。在您喜欢的编辑器中打开它们,或者只是在做cat
Let_Me_Be 2011年

1
它只有一行:/usr/bin/xdm-这是否意味着xdm是我的显示管理器?
ptrcao 2011年

23

没有。显示管理器不一定与同一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)

(说明: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$'

要么

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'

17

如果您使用基于systemd的分发。因为您可能安装了多个显示管理器,所以此命令将提供当前配置的显示管理器的名称。

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service

输出将类似于

ExecStart=/usr/bin/mdm

看起来我在使用薄荷显示管理器。


3
您已经介绍了无用用法的经典示例-可以说是完全可以接受甚至可以接受的grep '/usr/bin' /etc/systemd/system/display-manager.service。(而且,严格来说,由于/usr/bin它不包含任何特殊的Shell字符,因此您无需引用它-但这不会造成伤害。)
G-Man

6
“无用的猫”总是有些相对。我宁愿在grepping时编辑最后一个字符串,cat <file> | grep <searchterm>而不是第二个字符串grep <searchterm> <file>
sjas 2016年

1
该答案应该是您首先看到的答案,因为当今大多数有此类问题的用户都在运行基于systemd的发行版。谢谢。它帮助了我。
阿德加德

3
@allsyed我的文件没有/ usr / bin,它具有/ usr / sbin。Linux-Mint 18
Prvt_Yadav

2
就我而言(Centos 7),我要写| grep'/ usr / sbin'–
Davide

15

如果您使用的是systemd,

systemctl status display-manager

将在您的计算机上显示活动的显示管理器服务的名称和状态。


对于Debian 9,这是唯一为我工作的软件。其他systemd方法未返回任何内容。
mickeyf

10

显示管理员名称应位于DESKTOP_SESSION中

echo $DESKTOP_SESSION

为我返回“ gnome”。

编辑
你是对的。他们正在XFCE的bugzilla上进行反复讨论,因此它可能不是很可靠。


@frabjous:gdm和kdm呢?他们也是显示管理员还是只是登录管理员?
ptrcao 2011年

我一定不小心删除了上面的frabjous的评论,因为我记得他指出Gnome是一个桌面环境,而不是显示管理器。这个线程到处都是混乱...
ptrcao 2011年

这将提供有关……桌面会话的信息,这可能与您的桌面环境相同,但是如果您不使用桌面环境或具有特殊的配置,则可能会完全相同。在我写这篇文章的机器上$DESKTOP_SESSIONunknown
吉尔斯

+1,echo $ DESKTOP_SESSION也会将gnome返回给我...但是也许这仅适用于gnome?
特雷弗·博伊德·史密斯

如果仅适用于gnome,则此命令将仅帮助您推断“是不是有Gnome,否则是没有gnome”。当问题想发现的不止于此时。
特雷弗·博伊德·史密斯

2

就像@Gilles所说的那样,显示管理器将启动您的桌面环境。

根据Debian Wiki的说法,这些大多以结尾结尾dm,唯一的例外是slim

因此,这足以满足大多数人的需求:

ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$

或者可以肯定的是,它作为父进程存在,并且没有分叉(从init系统中除外):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 

1
这是唯一对我有用的解决方案。确定我的带有LXDE附加组件的Fedora 23 minimal(不是LXDE Spin)正在运行lightdm。最佳答案中的RedHat / Fedora解决方案不起作用,配置似乎已移动。
Daniel Saner


0

如前所述,该线程存在很多混乱。最初的问题是什么显示管理器,而不是桌面管理器或窗口管理器。我当前正在运行Xfwm4(它是Xfce窗口管理器)和lxdm(它是轻量级的X11显示管理器)(来自LXDE,不是Xfce)。您应该能够通过htop查看正在使用的显示管理器。您可能已经在过去4年中找到答案了很久了:)


实际上从来没有做过……实际上完全放弃了Linux并走到了黑暗的一面:D
ptrcao

0

您可以通过名为screenfetch的第三方脚本来执行此操作

Screenfetch是可用于Linux的bash脚本,可显示系统信息以及Linux发行版的ASCII版本的系统徽标

通过软件包管理器进行安装 sudo apt-get install screenfetch(假设您使用的是Debian变体)

screenfetch 在您的终端中运行

项目链接 https://github.com/KittyKatt/screenFetch


-1

X是高度模块化的,因此,如果您真的想要它,可以混合桌面环境和Windows管理器。毕竟,窗口管理器只是绘制窗口的一种方法(这就是简单的视图)。

因此,如果您使用gnome,metacity曾经是Windows管理器,但现在已由Mutter取代。

混合的问题是在现代桌面环境中,桌面和窗口管理器彼此紧密相连。太多的混合可能最终导致功能减少。

如前所述,$ DESKTOP_SESSION可以运行,但是如果您想询问您的X11服务器,则可以执行以下操作:

xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME

分解成

xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"

它获取由窗口管理器创建的窗口的ID。规范说(http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):

_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.

然后,您要求提供所述窗口的WM_NAME属性。

WM_NAME是:

The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar). 

@frabjous:Xfwm4是Xfce窗口管理器。与显示经理一样吗?
ptrcao 2011年

@Mathieu您在谈论的是窗口管理器,而不是显示管理器。
Let_Me_Be 2011年

@Let_Me_Be为True,但是在大多数情况下,您的窗口管理器与显示管理器绑定在一起...您多久将gnome窗口管理器与kde一起使用,反之亦然?它确实有效,因为gdm / kdm /无论允许什么,您都可以选择显示管理器,这意味着如果您不使用提供的默认值,则无法读取像您提到的配置文件...
Mathieu

_NET_SUPPORTING_WM_CHECK提供有关窗口管理器而不是显示管理器的信息。它甚至不总是有效。在我的系统上,该属性设置为窗口ID,但相关窗口没有名称。
吉尔斯

@Mathieu取决于分布。通常,当您安装发行版的KDE版本时,您将获得KDM,而当您使用gnome版本时,您将获得GDM。但是,您将看到越来越多的东西是仅对一个显示管理器的官方支持(通常比GDM / KDM轻巧)。
Let_Me_Be 2011年

-2
lshw -c video | grep 'configuration'

3
一点点的解释会很好。
phk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.