查找默认桌面环境的脚本?

查找默认桌面环境的脚本?

假设是Linux桌面环境系统已安装。当开机并输入凭据时,无论什么桌面环境启动后我会考虑默认桌面环境。用户可以选择其他桌面环境,例如 KDE 或 XFCE,但这不是默认环境。用于查找默认桌面环境或更好的是最后使用的 DE 的与发行版无关的代码片段是什么。该代码必须从远程 SSH 会话或 CTRL-ALT-F2 仅文本控制台运行。

这个问题的推动力是我最近通过电子邮件将 nvidia-bug-report.sh 的输出发送给 NVIDIA。几天后,NVIDIA 技术支持回复询问“什么操作系统?”、“GNOME 还是 KDE?”、“什么发行版?” - 可以通过自己的脚本自动收集和编目的所有元数据。

由于桌面环境已崩溃,nvidia-bug-report.sh 需要从 CTRL-ALT-F2 文本控制台或远程 SSH 会话运行。显然,它们都没有 $DESKTOP_SESSION 变量。答案将从类似于 的列表中按置信度顺序返回一个或多个项目"gnome|kde|mate|cinnamon|lx|xfce|jwm|none"

在 Ubuntu 中选择 GNOME 或 KDE。
在 Fedora 中选择桌面环境会话类型。 在 CentOS 中选择 GNOME 或 KDE。

想要类似于“ 如何在简单的 shell 脚本中获取发行版名称和版本号?

答案1

如果没有提供可靠的解决方案,也许这个片段可以提供帮助:

$ w | awk -vdp=$DISPLAY '($2 ~ dp){gsub(/.*\//, "");print $NF}'

或者可能 :

$ qdbus | grep -oPm1 '(kdm|xfce|gnome)'

使用 pstree 的另一种方法:

$ pstree -H $(pidof X) | grep -oP '(kdm|xfce|gnome)(?=.*?X)'
kdm

还有一件事:

$ lsof ~/.xsession-errors | grep -oEm1 '(kde|xfce|gnome)'
kde

或变体:

$ lsof ~/.xsession-errors | awk 'NR==2{print $1;quit}'
startkde

相关内容