Sor*_*uki 11 linux desktop gui environment-variables specifications
我要到我在运行的桌面管理器,我发现有三个环境变量DESKTOP_SESSION
,XDG_SESSION_DESKTOP
和XDG_CURRENT_DESKTOP
这可以帮助我这样做。但是这三个变量之间究竟有什么区别呢?提前致谢。
老问题,但在 Google 上的排名仍然很高,因此值得在 2021 年回答。
您只想使用官方的$XDG_CURRENT_DESKTOP
. 请注意,它是一个以冒号分隔的列表(如$PATH
),因此不要假设它只包含单个值(即使它在大多数 DE 中)。如果您喜欢处理单个值,请使用$XDG_SESSION_DESKTOP
。
官方标准:
DESKTOP_SESSION
已弃用。一些DE/WM仍然为了向后兼容而设置它,对于新软件来说不需要它。毕竟已经是 2021 年了。
有关更多详细信息,包括用于解析和测试桌面环境的 bash 函数,请参阅https://unix.stackexchange.com/a/645761/4919
我不确定拥有许多不同变量的官方原因是什么,很可能不同的窗口和显示管理器都执行自己的特定配置。
但它们看起来都一样,所以使用任何一个都应该有效......
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)
您还可以使用不同的窗口管理器和显示管理器,并且一些不同的发行版将数据存储在不同的位置,因此混乱占主导地位。请参阅这些非常相关的问题: