我怎样才能找到我正在使用的桌面环境?

作为标题:
我如何找到我正在使用的桌面环境?
我想通过命令行来完成这个任务。

2这个主题也在这里讨论过。 - Marius Balaban
如果您想要区分xubuntu与lubuntu与edubuntu等,而且您的操作系统是通过光盘安装的,以下命令可能会有所帮助:grep cdrom: /etc/apt/sources.list | sed -n '1s|.*deb cdrom:\[\([^ ]* *[^ ]*\).*|\1|p' - Marnix A. van Ammers
1@Luis Alvarado 桌面环境和窗口管理器是一样的吗(因为被标记为重复)? - Pandya
2@Pandya 不,数值会有所不同,但在副本中显示了如何获取两者的值(以及其他WM和DE的示例)。 - Luis Alvarado
2@Lucio,不确定为什么这个问题被错误地标记为与完全不同的问题重复。请先阅读这个问题,并移除重复问题标记:https://askubuntu.com/questions/18078/what-is-the-difference-between-a-desktop-environment-and-a-window-manager - Mladen B.
1仅仅因为所谓的“原始”包含了这个问题的答案和解决方案,并不意味着这个问题是一个重复的问题。桌面环境和窗口管理器并不是同一件事情,它们是不同的问题。关闭这个问题的理由非常简单,而且这个决定必须被撤销。 - MRule
@Lucio 我已经尝试详细说明你的编辑,最终引起了有权力撤销标记为重复的人的注意。如果这不奏效,那么StackExchange肯定出了严重的问题!( : - MRule
MRule,重复的答案也说明了如何找到桌面环境,并且标题已经被编辑以反映这一点。 - Artur Meinild
6个回答

你可以尝试使用$DESKTOP_SESSION来获取桌面环境。

20当我输入$ echo $DESKTOP_SESSION时,它显示为ubuntu,为什么会这样呢? - Yishu Fang
8桌面会话!= 窗口管理器 - Tachyons
7我的第二个问题是关于桌面环境(DE),你已经回答了。我认为答案应该是“gnome”,但实际上是“ubuntu”,为什么呢? - Yishu Fang
16Ubuntu是gnome 3+unity桌面环境的名称。 - Javier Rivera
3我什么都得不到,使用的是Lubuntu 16.4lxde - Timo
我仍然一无所获,在使用Lubuntu 20.4lxqt - Timo
3echo $XDG_CURRENT_DESKTOP - Savrige
2真的$DESKTOP_SESSION返回的是窗口管理器(这就是为什么它返回Ubuntu),对于原始问题,正确答案是$XDG_CURRENT_DESKTOP,正如前面的评论所指示的那样。 - Manuel Jordan
在Ubuntu 22上,执行$ echo $DESKTOP_SESSION没有任何输出。 - ojunk

这个命令似乎很有用:
ls /usr/bin/*session

在GNOME中返回/usr/bin/gnome-session(以及更多)。 在MATE中返回/usr/bin/mate-session(以及更多)。 在LXDE中返回/usr/bin/lxsession(以及更多)。 在JWM中返回/usr/bin/icewm-session(应该是jwm-session,不是吗?)。

我有 /usr/bin/ck-launch-session /usr/bin/ck-xinit-session /usr/bin/gnome-session。那又怎样?我正在使用CentOS。 - gangadhars
2这是唯一对我有效的简单答案。gnome-session - Jacksonkr
2/usr/bin/dbus-run-session 这是哪个? - iamgr007
在Raspberry Pi 2中,我们有3个窗口会话的选择:lx和openbox。正如我之前所评论的,echo $DESKTOP_SESSION ==> LXDE-pi(安装值)是RPI2的明确指示器。 - Richard Elkins
5这只是显示您安装了哪些桌面环境,而不是当前正在使用的桌面环境。 - Albin
对于Xfce(例如在Xubuntu上),你会发现/usr/bin/xfce4-session已经存在。 - Lion
在KDE中返回/usr/bin/plasma_session,类似这样。 - NanoNova

我已经用以下工具进行了测试:
a - 安装在 Linux Mint 的 GNOME b - 在 Linux Mint Live USB 中的 GNOME c - 在 Linux Mint 下的 MATE d - 在 Lubuntu 下的 LXDE e - 在 Puppy Linux 下的 JWM(JWM 不是一个桌面环境,而是一个窗口管理器) f - 在 Debian Buster 下的 XFCE
结果如下:
  • env | grep DESKTOP_SESSION= (so-so)

    a & b - DESKTOP_SESSION=gnome
    c - DESKTOP_SESSION=default.desktop
    d - DESKTOP_SESSION=Lubuntu
    e - Nothing
    f - DESKTOP_SESSION=xfce
    
  • echo $GDMSESSION (so-so)

    a & b - gnome
    c - Nothing
    d - Lubuntu
    e - Nothing
    f - xfce
    
  • pgrep -l "gnome|kde|mate|cinnamon|lxde|xfce|jwm" or ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm" (well, but not perfect)

    a & b - OK
    c - OK
    d - WRONG
    e - Nothing & OK
    f - OK
    
  • HardInfo (very well, but not perfect)

    a - Nothing
    b - GNOME 2.32.0
    c - MATE
    d - LXDE (Lubuntu)
    e - Unknown (Window Manager: JWM)
    f - XFCE
    

结论

结合使用HardInfo和命令ps -A | egrep -i "gnome|kde|mate|cinnamon|lxde|xfce|jwm"可能会得到所需的答案。


在案例f中(Raspberry Pi 2上运行2016-05-27的Jessie),echo $DESKTOP_SESSION的输出是LXDE-pi,这就说得明明白白了。 - Richard Elkins
4我的“HardInfo”是什么意思?你能解释一下吗? - avimehenwal
@AviMehenwal 这个答案解释了它。 - Josiah Yoder
在Debian 8.11中使用gnome,DESKTOP_SESSION=default对我来说,上面@Nadew的答案有效。 - Till Kolditz
3在我的情况下,我需要知道我是否正在使用Unity或LXDE,并且经过测试许多命令后,我发现env | grep XDG_CURRENT_DESKTOP可以告诉我我所需的信息。 - PHP Learner
想提醒新手/编写DE检测逻辑的人们注意:如果您计划使用ps/prgep,那么您可能需要一个比上面建议的更复杂的模式,因为许多进程会产生错误的结果,如果您仅使用DE名称本身。在我的系统上,唯一的DE是Cinnamon。它自带gnome-terminal作为终端应用程序。我还安装了kmag。运行ps/pgrep时,我得到了kdevtmpfsgnome-keyring-daemon的错误结果,尽管未安装gnome和kde。 - zpangwin
^ 所以为了在脚本中进行检测,我建议先完整地检查环境变量(例如 DESKTOP_SESSION / XDG_CURRENT_DESKTOP / GDMSESSION),然后可能尝试根据会话二进制文件来进行检测(例如 ls -acl /usr/bin/*session),或者根据文件管理器的存在来进行检测(例如 test 1 == $(which nemo 2>/dev/null|wc -l))。在旧答案中未列出的其他选项也可能很有用,例如:sudo grep -i session /var/lib/AccountsService/users/$USER 或者 grep PREFERRED /etc/sysconfig/desktop,但我不确定这些选项在各个发行版中的一致性如何。 - zpangwin
请考虑将lxqt作为桌面环境。 - Timo

对于窗口管理器,你可以使用:

sudo apt-get install wmctrl
wmctrl -m | grep "Name:" | awk '{print $2}'

1你只需安装“Sysinfo”就能了解你的系统。在USC上搜索它即可。 - Curious Apprentice
Sysinfo无法告诉你正在使用的窗口管理器。它只会告诉你正在运行的Xorg版本——至少在我的系统上是这样。 - James Bowery
这是唯一的答案,它似乎不仅适用于所有系统,并且提供简明而深入的输出 - 我不是在谈论"Curious Apprentice"的答案。应该忽略Curious Apprentice的“答案”,因为它会减弱唯一真正的答案。 - James Bowery
我不认为这里的回答是合适的,因为“窗口管理器”和“桌面环境”是两个不同的问题,请纠正我如果我错了。 - Timo

在终端或控制台中,您可以运行以下命令:
pgrep -l "gnome|kde|mate|cinnamon"

或者

ps -A | egrep -i "gnome|kde|mate|cinnamon"

出现在更多行中的项目应该是答案。

1我只得到了 31 kdevtmpfs2026 gnome-keyring-d2201 polkit-gnome-au,而且我使用的是 xfce。 - Klesun
1同样的问题。将XFCE添加到正则表达式中至少显示了一些有用的信息,但需要使用许多启发式方法才能确定您正在使用哪个桌面环境。 - code_monk

你可以运行HardInfo。在Linux Mint中,它默认就准备好了;或者你也可以安装它(从Synaptic, ...)。
你可以通过以下方式来运行它:a) 主菜单 > 搜索框 > hardinfo,或者b) 主菜单 > 所有应用程序 > 系统工具或管理工具 > 系统信息,或者c) 主菜单 > 所有应用程序 > 全部 > 系统信息,或者d) 从终端或控制台输入hardinfo > Enter,或者e) 从运行应用对话框(Alt+F2)输入hardinfo > Enter。
一旦打开HardInfo,你只需要点击"操作系统"项目,并查看"桌面环境"一栏即可。
如今,除了GNOME和KDE之外,你还可以找到MATE、Cinnamon等等。

1UniMous要求命令行选项。他无法从那里点击。除非这个程序可以生成文件输出作为报告,否则对他没有用处。 - Olcay Ertaş
了解一下HardInfo如何获取桌面环境,也许你可以通过命令行找到相同的方法。 - Marnix A. van Ammers
1еңЁDebianдёҠпјҢдҪ еҸҜд»ҘдҪҝз”Ёsudo apt-get install hardinfoе®үиЈ…hardinfoгҖӮе®ғе°ҶжҲ‘зҡ„жЎҢйқўзҺҜеўғиҜҶеҲ«дёә_XFCE 4_гҖӮ - Josiah Yoder
在18.04版本中没有提及DE。 - Adam