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

Sor*_*uki 11 linux desktop gui environment-variables specifications

我要到我在运行的桌面管理器,我发现有三个环境变量DESKTOP_SESSIONXDG_SESSION_DESKTOPXDG_CURRENT_DESKTOP这可以帮助我这样做。但是这三个变量之间究竟有什么区别呢?提前致谢。

Mes*_*ion 8

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

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

官方标准:

有关更多详细信息,包括用于解析和测试桌面环境的 bash 函数,请参阅https://unix.stackexchange.com/a/645761/4919


Xen*_*050 2

我不确定拥有许多不同变量的官方原因是什么,很可能不同的窗口和显示管理器都执行自己的特定配置。

但它们看起来都一样,所以使用任何一个都应该有效......

Mint 的 XFCE 具有以下内容:

$ echo $DESKTOP_SESSION 
xfce
$ echo $XDG_SESSION_DESKTOP 
xfce
$ echo $XDG_CURRENT_DESKTOP 
XFCE
Run Code Online (Sandbox Code Playgroud)

并且

$ echo $SESSION
xfce
$ echo $MDMSESSION 
xfce
$ echo $GDMSESSION 
xfce
Run Code Online (Sandbox Code Playgroud)

或者(来自env):

XDG_MENU_PREFIX=xfce-
UPSTART_JOB=startxfce4
Run Code Online (Sandbox Code Playgroud)

你最好的选择(如果你有wmctrl)可能是与 grep/cut 结合使用:

$ wmctrl -m
Name: Xfwm4
Class: xfwm4
PID: 5449
Window manager's "showing the desktop" mode: N/A
Run Code Online (Sandbox Code Playgroud)

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