问题描述
有没有什么方法(如命令或环境变量)来确定当前会话中正在运行的窗口管理器是什么?
最佳解决办法
如果您安装了wmctrl,则命令的第一行输出
wmctrl -m
会显示窗口管理器的名称。如果您没有安装wmctrl,请使用以下命令进行安装:
sudo apt-get install wmctrl
请注意,man wmctrl(即wmctrl的man页面)部分地说:
-m Display information about the window manager …
在我的Ubuntu 11.10 /Linux 3.0.0-14-generic#23-Ubuntu x86_64 /metacity 2.34.1系统上,wmctrl -m的第一行输出为:Name: Metacity,而echo $DESKTOP_SESSION显示为ubuntu-2d,而echo $XDG_CURRENT_DESKTOP显示为Unity。
在新鲜的Ubuntu 15.10上的旧笔记本电脑Ubuntu desktop软件的安装,从wmctrl -m输出的第一行是:Name: Compiz而DESKTOP_SESSION和XDG_CURRENT_DESKTOP值分别为ubuntu和Unity
次佳解决办法
在Linux系统上,我测试了环境变量XDG_CURRENT_DESKTOP和GDMSESSION并获得了以下结果。
You can use this line to get the output:
printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION