DESKTOP_SESSION、XDG_SESSION_DESKTOP 和 XDG_CURRENT_DESKTOP 之间有什么区别?

DESKTOP_SESSION、XDG_SESSION_DESKTOP 和 XDG_CURRENT_DESKTOP 之间有什么区别?

我想检测我正在运行哪个桌面管理器,我发现有三个环境变量,,DESKTOP_SESSIONXDG_SESSION_DESKTOP可以XDG_CURRENT_DESKTOP帮助我做到这一点。但这三个变量之间到底有什么区别?提前致谢。

答案1

这是一个老问题,但在 Google 上仍然排名很高,因此值得在 2021 年回答。

你只想使用官方的$XDG_CURRENT_DESKTOP。请注意,这是一个冒号分隔列表(例如$PATH),因此不要假设它只包含单个值(即使在大多数 DE 中确实如此)。如果您更喜欢处理单个值,请使用$XDG_SESSION_DESKTOP

官方标准:

有关更多详细信息,包括用于解析和测试桌面环境的 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

你也可以使用不同的窗口管理器和显示管理器,并且一些不同的发行版将数据存储在不同的地方,因此混乱占据主导地位。请参阅这些非常相关的问题:

相关内容