如何从终端找到正在运行的 GUI 环境?

sim*_*ona 18 command-line gui terminal

这是一个非常基本的问题,但我在任何地方都找不到令人满意的答案:

如何从终端找出正在运行的 GUI 是什么?


我正在使用的系统非常小,我只能看到 xterm 窗口,从那里我可以打开应用程序(在单独的窗口中)。我可以通过右键单击桌面上的空闲区域来打开新的 xterm 窗口。每次我打开一个应用程序,因此打开一个新窗口时,为了实际打开窗口,我必须在屏幕的空闲区域上单击鼠标。

我不认为这个问题与Is there a way to retrieve the name of the Desktop Environment?重复,因为我的设置与那个有点不同,而且它的答案都不适合我。

Raz*_*aza 13

您可以键入env以确定配置了哪些环境。

从此链接中找到了以下回复

  XDG_CURRENT_DESKTOP - Tells you what Windows Manager you are using

  GDMSESSION - Tells you what option you selected from the lightdm greeter to login.
Run Code Online (Sandbox Code Playgroud)

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

  echo $XDG_CURRENT_DESKTOP
Run Code Online (Sandbox Code Playgroud)

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

或者

  echo $GDMSESSION
Run Code Online (Sandbox Code Playgroud)

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

如果您仔细查看 env 的输出,例如 DESKTOP_SESSION 和 COMPIZ_CONFIG_PROFILE,您还有其他人

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

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

为了寻找其他类型的,只是换个词compiz到另一个像mutterkwin等等。

在 Ubuntu 12.04 上,我测试了环境变量 XDG_CURRENT_DESKTOP 和 GDMSESSION 并得到以下结果:

凯德

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

侏儒经典没有效果

XDG_CURRENT_DESKTOP=GNOME GDMSESSION=gnome-fallback 其他基于 Ubuntu 的发行版:

薄荷 13(肉桂)

XDG_CURRENT_DESKTOP=GNOME GDMSESSION=肉桂色

卢本图 12.04

XDG_CURRENT_DESKTOP=LXDE GDMSESSION=Lubuntu