web-dev-qa-db-ja.com

実行中のウィンドウマネージャーを確認する方法

現在のセッションでアクティブに実行されているものがウィンドウマネージャーであるかどうかを判断する方法(コマンドや環境変数など)はありますか?

178
Anonymous

wmctrlがインストールされている場合、コマンドからの出力の最初の行

    wmctrl -m

ウィンドウマネージャの名前が表示されます。 wmctrlがインストールされていない場合は、次のコマンドを使用してインストールします。

    Sudo apt-get install wmctrl

注:man wmctrl(つまり、manwmctrlページには、次のように記載されています:

-mウィンドウマネージャーに関する情報を表示します...

Ubuntu 11.10/Linux 3.0.0-14-generic#23-Ubuntu x86_64/metacity 2.34.1システムでは、wmctrl -mからの出力の最初の行はName: Metacityでした
while echo $DESKTOP_SESSIONubuntu-2dを示し、echo $XDG_CURRENT_DESKTOPUnityを示しました。

古いラップトップにUbuntu desktopソフトウェアを新しくインストールしたUbuntu 15.10では、wmctrl -mからの出力の最初の行はName: Compizでした
DESKTOP_SESSIONおよびXDG_CURRENT_DESKTOPの値はubuntuおよびUnityでした

145

Linuxシステムでは、環境変数XDG_CURRENT_DESKTOPおよびGDMSESSIONをテストし、次の結果を得ました。

次の行を使用して出力を取得できます。

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

Ubuntu 18.04(Ubuntu)

  • XDG_CURRENT_DESKTOP=ubuntu:GNOME
  • GDMSESSION=ubuntu

Ubuntu 18.04(ウェイランドのUbuntu)

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

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

Mirなしで実行されているUnity

  • XDG_CURRENT_DESKTOP=Unity
  • GDMSESSION=ubuntu

XFCE

  • XDG_CURRENT_DESKTOP=XFCE
  • GDMSESSION=xfce

Ubuntu 12.04


KDE

  • 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

Gnome Classic

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-classic

Gnome Classic(エフェクトなし)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=gnome-fallback

その他のUbuntuベースのディストリビューション


ミント13(シナモン)

  • XDG_CURRENT_DESKTOP=GNOME
  • GDMSESSION=cinnamon

ミント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/18.04

  • XDG_CURRENT_DESKTOP=X-Cinnamon
  • GDMSESSION=cinnamon

Wasta 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
98
Tom

端末でenvと入力して、すべての環境変数を表示します。それらのいくつかは次のとおりです。

XDG_CURRENT_DESKTOP-使用しているデスクトップ環境を示します

GDMSESSION-lightdm greeterからログインするために選択したオプションを示します。

それらを使用するには、ターミナルに移動して次を入力します。

echo $XDG_CURRENT_DESKTOP

(Unityを使用している場合、たとえば 'unity'の出力)

または

echo $GDMSESSION  

(たとえば、ログインでubuntuを選択した場合は「ubuntu」、ログインでubuntuを選択した場合は「ubuntu-2d」が出力されます。)

envの出力を詳しく見ると、DESKTOP_SESSIONおよびCOMPIZ_CONFIG_PROFILE

探しているのはWindow Managerの使用中の名前なので、これを取得する唯一の方法はプロセスリストを調べることです。これを行うには、pgrepWikipedia )というコマンドがあります。パラメーター-lがプロセスIDを追加するため、次のようにして名前を取得しました。

pgrep -l compiz |cut -d " " -f2プロセスは同じユーザーによって実行されているため、Sudo部分にプレフィックスを付ける必要はありません。次に、これを使用して、ウィンドウマネージャーに基づいてアクションを実行するスクリプトを作成できます。

他のタイプを探すには、Word compizmutterkwinなどの別のタイプに変更するだけです。

42
Luis Alvarado

pstreeが大きな助けになることがわかりました。

Installation

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}]
24
xprop -id $(xprop -root -notype | awk '$1=="_NET_SUPPORTING_WM_CHECK:"{print $5}') -notype -f _NET_WM_NAME 8t 
11
ruario

私もKDEでテストしてきましたが、結論は次のとおりです。

a)HardInfoを使用したグラフィカルな方法:答えは通常「オペレーティングシステム」>「デスクトップ環境」にありますが、そうでない場合は「環境変数」を確認できます。 HardInfoは、KDEを除くすべてのテスト済みディストリビューションで使用できますが、簡単かつ迅速にインストールできます(Linux Mint 13では2パッケージのみ)。

b)コマンドライン、このコマンド:ps -A | egrep -i "gnome|kde|mate|cinnamon|lx|xfce|jwm"。より多くの行に表示されるアイテムが答えになります(ドローがある場合、「セッション」を含むアイテムを解決する必要があります)。

4
Msedfi

上記のどれも実際にはうまくいきませんでした。Gnomeを現在のデスクトップセッションとして実行していたかどうかを知りたかっただけです。

これが機能したので、ターミナルを開きます

lsb_release -a

(UBUNTUマシンにインストールしたフレーバーまたはバージョンを確認するため)

ls /usr/bin/*session

(現在使用中のデスクトップセッション/デスクトップ環境を起動します)

gnome-Shell --version 

(インストールされているgnomeのバージョンを確認するため)

2
NanuBuria

これは、dbusとAccountsサービス(Ubuntuではデフォルトで両方)で可能です。

$ qdbus --system org.freedesktop.Accounts \                                                                
> /org/freedesktop/Accounts/User1000 \                                                                                     
> org.freedesktop.Accounts.User.XSession                                                                                   
ubuntu

Lightdm(つまり、グラフィカルログイン画面)を介してログインしてこれをテストしたことに注目してください。blackboxのような古典的なデスクトップを検出し、明らかにUnityを検出します。これは、ユーザーがログイン画面でセッションとして選択する値の値であると思われます。そのため、プロセスのチェックを使用する方が少し簡単です

0
#! /bin/bash
#  (GPL3+) Alberto Salvia Novella (es20490446e.wordpress.com)


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

    echo "${attributes}" |
        grep "_NET_WM_NAME = " |
        cut --delimiter=' ' --fields=3 |
        cut --delimiter='"' --fields=2
}


windowManagerName

または1行で:

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

脚本

次のスクリプトは、同様の nix.seで私が投稿した質問 に対する最良の答えとして作成されました。また、UnityおよびLXDEでもうまく機能します。

if [ "$XDG_CURRENT_DESKTOP" = '' ]
then
  desktop=$(echo "$XDG_DATA_DIRS" | sed 's/.*\(xfce\|kde\|gnome\).*/\1/')
else
  desktop=$XDG_CURRENT_DESKTOP
fi

desktop=${desktop,,}  # convert to lower case
echo "$desktop"
0

inxiというツールを使用できます。 Ubuntuリポジトリから次の方法で入手できます。

Sudo apt install inxi

またはgithubから: https://github.com/smxi/inxi

次のようにコマンドを実行するだけです:

inxi -Sx
System:    Host: blackhole Kernel: 5.1.15-050115-lowlatency x86_64 bits: 64 compiler: gcc v: 8.3.0
           Desktop: i3 4.16.1-178-g31c0f1b8 Distro: Ubuntu 19.04 (Disco Dingo)

Desktop: i3部分に注意してください。私の場合、使用するウィンドウマネージャーはi3です。

オプション-Sはシステム情報を表示し、xはウィンドウマネージャーに関する情報を追加します。

0