这是一个非常基本的问题,但我在任何地方都找不到令人满意的答案:
如何从终端找到正在运行的 GUI?
我正在开发的系统非常小,我只能看到 xterm 窗口,我可以从其中打开应用程序(在单独的窗口中)。我可以通过右键单击桌面上的空闲区域来打开新的 xterm 窗口。每次我打开一个应用程序并因此打开一个新窗口时,为了实际打开该窗口,我必须用鼠标单击屏幕的空闲区域。
我不认为这个问题是重复的有没有办法检索桌面环境的名称?,因为我的设置与那个设置有点不同,并且它的答案都不适合我。
答案1
您可以键入内容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.
要使用它们,请转到终端并输入:
echo $XDG_CURRENT_DESKTOP
(例如,如果您使用 Unity,则会输出“unity”)
或者
echo $GDMSESSION
(例如,如果您在登录中选择了 ubuntu,则将输出“ubuntu”;如果您在登录中选择了“ubuntu-2d”,则将输出“ubuntu-2d”。)
如果你仔细观察 env 的输出,你还会发现其他的东西,比如 DESKTOP_SESSION 和 COMPIZ_CONFIG_PROFILE
由于您要查找的是 usem 中窗口管理器的名称,因此我了解如何获取该名称的唯一方法是查看进程列表。为此,有一个名为 pgrep(维基百科)的命令。我执行了以下操作来获取名称,因为参数 -l 添加了进程 ID:
pgrep -l compiz |cut -d " " -f2
由于该进程由同一用户运行,因此无需添加 sudo 部分前缀。然后,您可以使用它来创建一个基于窗口管理器执行操作的脚本。
要查找其他类型,只需将单词更改compiz
为其他类型mutter
,例如kwin
, 等。
在 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-经典
Gnome Classic 无效果
XDG_CURRENT_DESKTOP=GNOME GDMSESSION=gnome-fallback 其他基于 Ubuntu 的发行版:
薄荷 13(肉桂)
XDG_CURRENT_DESKTOP=GNOME GDMSESSION=肉桂
鲁本图 12.04
XDG_CURRENT_DESKTOP=LXDE GDMSESSION=Lubuntu