Ubuntu 18.04 和 20.04(GNOME 上的 Ubuntu)

Ubuntu 18.04 和 20.04(GNOME 上的 Ubuntu)

有什么方法(例如命令或环境变量)可以确定什么窗口管理器是当前会话中正在运行的那个吗?

答案1

如果你已经wmctrl安装,命令输出的第一行

wmctrl -m

将显示窗口管理器的名称。如果尚未wmctrl安装,请使用以下命令进行安装:

sudo apt-get install wmctrl

请注意,man wmctrl(即man的页面wmctrl)部分内容如下:

-m 显示有关窗口管理器的信息...

在我的 Ubuntu 11.10 / Linux 3.0.0-14 - generic #23-Ubuntu x86_64 / metacity 2.34.1 系统上,输出的第一行是wmctrl -mName: Metacity
whileshowd echo $DESKTOP_SESSIONandshowd 。ubuntu-2decho $XDG_CURRENT_DESKTOPUnity

在旧笔记本电脑上安装新版 Ubuntu 15.10Ubuntu desktop软件时,第一行输出wmctrl -m为:Name: Compiz
DESKTOP_SESSIONXDG_CURRENT_DESKTOP值为ubuntuUnity

答案2

在 Linux 系统上,我测试了环境变量XDG_CURRENT_DESKTOPGDMSESSION得到了以下结果。

您可以使用这一行来获取输出:

printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"

Ubuntu 18.04 和 20.04(GNOME 上的 Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04(Wayland 上的 Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu-wayland

Ubuntu 16.04

团结 (7)

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Ubuntu 14.04

Unity 与 Mir 一起运行

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

笔记 MIR_SERVER_NAME也设置了

  • MIR_SERVER_NAME=session-$NUMBER

无需 Mir 即可运行 Unity

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

西门子

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04

桌面环境

  • XDG_CURRENT_DESKTOP=
  • GDMSESSION=kde-plasma

Unity 3D

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

Unity 2D

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu-2d

侏儒

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-shell

侏儒经典

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic(无效果)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

其他基于 Ubuntu 的发行版

薄荷 13(肉桂)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

Mint 16(KDE 版本)

  • XDG_CURRENT_DESKTOP=KDE
  • GDMSESSION=default

薄荷 17(肉桂色)

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=default

Lubuntu 12.04

  • XDG_CURRENT_DESKTOP=LXDE
  • GDMSESSION=Lubuntu

瓦斯塔14.04 / 18.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=cinnamon

瓦斯塔14.04 使用 Gnome 桌面。

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome

Ubuntu Mate 18.04

  • XDG_CURRENT_DESKTOP=MATE
  • GDMSESSION=mate

Xubuntu 18.04

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xubuntu

Kali Linux kali-rolling 2020.2

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=lightdm-xsession

答案3

在终端中输入env以查看所有环境变量。 其中一些是:

XDG_CURRENT_DESKTOP- 告诉你正在使用的桌面环境

GDMS会议- 告诉您从 lightdm 欢迎程序中选择了哪个选项来登录。

要使用它们,请转到终端并输入:

echo $XDG_CURRENT_DESKTOP

(如果您使用 Unity,则会输出例如“unity”)

或者

echo $GDMSESSION  

(例如,如果您在登录时选择了 ubuntu,则会输出“ubuntu”;如果您在登录时选择了 ubuntu-2d,则会输出“ubuntu-2d”。)

如果你仔细观察一下下面的输出,你就会env发现桌面会话配置文件

由于您要查找的是正在使用的窗口管理器的名称,因此我认为获取此信息的唯一方法是查看进程列表。为此,有一个名为pgrep(维基百科)。由于参数 -l 添加了进程 ID,因此我执行了以下操作来获取名称:

pgrep -l compiz |cut -d " " -f2由于该进程由同一用户运行,因此无需在前缀中添加 sudo 部分。然后您可以使用它来创建一个基于窗口管理器执行操作的脚本。

要查找其他类型,只需将单词更改compiz为其他单词,如mutter,,kwin等等。

答案4

xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t 

相关内容