窗口管理器Linux用哪个,如何确定哪个窗口管理器正在运行

在Linux系统中,可以通过多种方法确定当前正在运行的窗口管理器。例如,使用`wmctrl -m`命令,或者检查环境变量`XDG_CURRENT_DESKTOP`和`GDMSESSION`。此外,还可以通过`pgrep`、`pstree`、`xprop`以及`ps`命令配合正则表达式来识别窗口管理器。

问题描述

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

最佳解决办法

如果您安装了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"

Ubuntu 16.04

团结(7)

XDG_CURRENT_DESKTOP=Unity

GDMSESSION=ubuntu

Ubuntu 14.04

与Mir运行的Unity

XDG_CURRENT_DESKTOP=Unity

GDMSESSION=ubuntu

注意MIR_SERVER_NAME也被设置

MIR_SERVER_NAME=session-$NUMBER

Unity没有和平运行

XDG_CURRENT_DESKTOP=Unity

GDMSESSION=ubuntu

XFCE

XDG_CURRENT_DESKTOP=XFCE

GDMSESSION=xfce

Ubuntu 12.04

KDE

XDG_CURRENT_DESKTOP=

GDMSESSION=kde-plasma

团结3d

XDG_CURRENT_DESKTOP=Unity

GDMSESSION=ubuntu

统一2d

XDG_CURRENT_DESKTOP=Unity

GDMSESSION=ubuntu-2d

Gnome

XDG_CURRENT_DESKTOP=GNOME

GDMSESSION=gnome-shell

侏儒经典

XDG_CURRENT_DESKTOP=GNOME

GDMSESSION=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

Wasta 14.04

XDG_CURRENT_DESKTOP=X-Cinnamon

GDMSESSION=cinnamon

Wasta 14.04使用Gnome桌面。

XDG_CURRENT_DESKTOP=GNOME

GDMSESSION=gnome

第三种解决办法

在终端类型env中查看所有环境变量。他们之中有一些是:

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

GDMSESSION – 告诉你从lightdm迎接者中选择登录的选项。

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

echo $XDG_CURRENT_DESKTOP

(如果您使用的是Unity,请输出’unity’)

要么

echo $GDMSESSION

(如果您在登录中选择了ubuntu,或者如果您在登录中选择了那个,则将输出’ubuntu’,例如’ubuntu-2d’。)

如果您仔细观察env的输出,如DESKTOP_SESSION和COMPIZ_CONFIG_PROFILE

由于您要查找的是窗口管理器正在使用的名称,因此查看如何获取该窗口的唯一方法是查看流程列表。为此,有一个名为pgrep(Wikipedia)的命令。我做了以下来获取名称,因为参数-l添加了进程ID:

pgrep -l compiz |cut -d " " -f2由于该进程由同一用户运行,所以不需要在sudo部分前缀。然后,您可以使用它创建一个基于Window Manager执行操作的脚本。

要查找其他类型,只需将compiz改为另一个,如mutter,kwin等。

第四种办法

我发现pstree是一个很大的帮助。我相信你必须用sudo apt-get install pstree安装它。这就是我得到的。

├─lightdm─┬─Xorg───2*[{Xorg}]

│ ├─lightdm─┬─gnome-session─┬─bluetooth-apple───2*[{bluetooth-apple}]

│ │ │ ├─compiz─┬─sh───gtk-window-deco───2*[{gtk-window-deco}]

│ │ │ │ └─5*[{compiz}]

│ │ │ ├─deja-dup-monito───2*[{deja-dup-monito}]

│ │ │ ├─gnome-fallback-───2*[{gnome-fallback-}]

│ │ │ ├─gnome-screensav───2*[{gnome-screensav}]

│ │ │ ├─gnome-settings-───2*[{gnome-settings-}]

│ │ │ ├─nautilus───2*[{nautilus}]

│ │ │ ├─nm-applet───2*[{nm-applet}]

│ │ │ ├─polkit-gnome-au───2*[{polkit-gnome-au}]

│ │ │ ├─ssh-agent

│ │ │ ├─telepathy-indic───2*[{telepathy-indic}]

│ │ │ ├─update-notifier───2*[{update-notifier}]

│ │ │ ├─vino-server───2*[{vino-server}]

│ │ │ ├─zeitgeist-datah───{zeitgeist-datah}

│ │ │ └─3*[{gnome-session}]

│ │ └─{lightdm}

│ └─2*[{lightdm}]

第五种办法

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

第六种办法

我一直在用KDE进行测试,我的结论是:

a)使用HardInfo的图形方式:答案通常在”Operating System”> “Desktop Environment”,但如果不是,您可以查看”Environment variables”。 HardInfo已准备好所有经过测试的发行版,但使用KDE的发行版除外,但它可以轻松快速地安装(Linux Mint 13中只有2个软件包)。

b)命令行,使用以下命令:ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"。以更多行显示的项目应该是答案(如果有抽奖,”session”的项目应该是解决方案)。

参考资料

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值