我想检测我正在运行哪个桌面管理器,我发现有三个环境变量,,DESKTOP_SESSION
和XDG_SESSION_DESKTOP
可以XDG_CURRENT_DESKTOP
帮助我做到这一点。但这三个变量之间到底有什么区别?提前致谢。
答案1
这是一个老问题,但在 Google 上仍然排名很高,因此值得在 2021 年回答。
你只想使用官方的$XDG_CURRENT_DESKTOP
。请注意,这是一个冒号分隔列表(例如$PATH
),因此不要假设它只包含单个值(即使在大多数 DE 中确实如此)。如果您更喜欢处理单个值,请使用$XDG_SESSION_DESKTOP
。
官方标准:
DESKTOP_SESSION
已弃用。一些 DE/WM 仍出于向后兼容的考虑而设置它,但对于新软件来说,它已不再需要。毕竟现在是 2021 年了。
有关更多详细信息,包括用于解析和测试桌面环境的 bash 函数,请参阅https://unix.stackexchange.com/a/645761/4919
答案2
我不知道官方的原因是存在许多不同的变量,很可能不同的窗口和显示管理器都有自己特定的配置。
但它们看起来都一样,因此使用任何一个都应该可以......
Mint 的 XFCE 具有以下功能:
$ echo $DESKTOP_SESSION
xfce
$ echo $XDG_SESSION_DESKTOP
xfce
$ echo $XDG_CURRENT_DESKTOP
XFCE
并且
$ echo $SESSION
xfce
$ echo $MDMSESSION
xfce
$ echo $GDMSESSION
xfce
或(来自env
):
XDG_MENU_PREFIX=xfce-
UPSTART_JOB=startxfce4
你最好的选择(如果你有wmctrl
)可能是将其与 grep/cut 结合起来:
$ wmctrl -m
Name: Xfwm4
Class: xfwm4
PID: 5449
Window manager's "showing the desktop" mode: N/A
你也可以使用不同的窗口管理器和显示管理器,并且一些不同的发行版将数据存储在不同的地方,因此混乱占据主导地位。请参阅这些非常相关的问题: