Jam*_*at7 169
如果已wmctrl安装,则命令的第一行输出
wmctrl -m
Run Code Online (Sandbox Code Playgroud)
将显示窗口管理器的名称。如果您还没有wmctrl安装,请使用以下命令进行安装:
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)
请注意,man wmctrl(即 的man页面wmctrl)部分说明:
-m显示有关窗口管理器的信息...
在我的 Ubuntu 11.10 / Linux 3.0.0-14-generic #23-Ubuntu x86_64 / metacity 2.34.1 系统上,输出的第一行wmctrl -m是: Name: Metacity
whileecho $DESKTOP_SESSION显示ubuntu-2d和echo $XDG_CURRENT_DESKTOP显示Unity。
在Ubuntu desktop旧笔记本电脑上新安装的 Ubuntu 15.10软件上,输出的第一行wmctrl -m是:Name: Compiz
而DESKTOP_SESSION和XDG_CURRENT_DESKTOP值是ubuntu和Unity
Tom*_*Tom 128
在Linux系统上,我测试的环境变量XDG_CURRENT_DESKTOP和GDMSESSION,得到了以下结果。
您可以使用此行获取输出:
Run Code Online (Sandbox Code Playgroud)printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION"
XDG_CURRENT_DESKTOP=ubuntu:GNOMEGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=ubuntu:GNOMEGDMSESSION=ubuntu-waylandXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntu注意 MIR_SERVER_NAME也设置
MIR_SERVER_NAME=session-$NUMBERXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=XFCEGDMSESSION=xfceXDG_CURRENT_DESKTOP=GDMSESSION=kde-plasmaXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntuXDG_CURRENT_DESKTOP=UnityGDMSESSION=ubuntu-2dXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-shellXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-classicXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnome-fallbackXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=cinnamonXDG_CURRENT_DESKTOP=KDEGDMSESSION=defaultXDG_CURRENT_DESKTOP=X-CinnamonGDMSESSION=defaultXDG_CURRENT_DESKTOP=LXDEGDMSESSION=LubuntuXDG_CURRENT_DESKTOP=X-CinnamonGDMSESSION=cinnamonXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=gnomeXDG_CURRENT_DESKTOP=MATEGDMSESSION=mateXDG_CURRENT_DESKTOP=XFCEGDMSESSION=xubuntuXDG_CURRENT_DESKTOP=GNOMEGDMSESSION=lightdm-xsessionLui*_*ado 42
在终端类型env中查看所有环境变量。他们之中有一些是:
XDG_CURRENT_DESKTOP - 告诉您正在使用的桌面环境
GDMSESSION - 告诉您从 lightdm 迎宾器中选择的登录选项。
要使用它们,请转到终端并键入:
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到另一个像mutter,kwin等等。
Sri*_*bat 28
我发现pstree这是一个很大的帮助。
sudo apt-get install pstree
Run Code Online (Sandbox Code Playgroud)
这就是我得到的。
??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}]
Run Code Online (Sandbox Code Playgroud)
小智 15
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t
Run Code Online (Sandbox Code Playgroud)
小智 7
我也用 KDE 进行了测试,我的结论是:
a) 图形方式,使用 HardInfo:答案通常在“操作系统”>“桌面环境”中,但如果没有,您可以查看“环境变量”。HardInfo 已准备好与所有经过测试的发行版(除了带有 KDE 的发行版)一起使用,但它可以轻松快速地安装(Linux Mint 13 中只有 2 个软件包)。
b) 命令行,使用以下命令:ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm" -wo | sort -u。出现在更多行中的项目应该是答案(如果有平局,则带有“会话”的项目应该是解决方案)。它通过 SSH 工作。
#! /bin/bash
# (GPL3+) Alberto Salvia Novella (es20490446e.wordpress.com)
windowManagerName () {
local window=$(
xprop -root -notype
)
local identifier=$(
echo "${window}" |
awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}'
)
local attributes=$(
xprop -id "${identifier}" -notype -f _NET_WM_NAME 8t
)
local name=$(
echo "${attributes}" |
grep "_NET_WM_NAME = " |
cut --delimiter=' ' --fields=3 |
cut --delimiter='"' --fields=2
)
echo "${name}"
}
windowManagerName
Run Code Online (Sandbox Code Playgroud)
或者在一行中:
id=$(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}'); xprop -id "${id}" -notype -f _NET_WM_NAME 8t | grep "_NET_WM_NAME = " | cut --delimiter='' --fields=3 | cut --delimiter='"' --fields=2