回答:
残念ながら、構成はディストリビューションごとに異なります。
Debian / Ubuntu
/etc/X11/default-display-manager
RedHat(Fedoraにも適用されます)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
cat
ます。
/usr/bin/xdm
-それはxdmが私のディスプレイマネージャーであることを意味しますか?
ありません。ディスプレイマネージャは、必ずしも同じXサーバーで実行されている他の何かに関連しているわけではありません。ログインする前にディスプレイマネージャが実行されます。システム管理者が選択します。他のすべて(ウィンドウマネージャー、セッションマネージャー、デスクトップ環境など)はユーザーが選択します。ディスプレイマネージャである必要はありません。テキストモードでログインしてGUIを起動するstartx
場合、ディスプレイマネージャは関係ありません。
システムのデフォルトのディスプレイマネージャを確認できます。これは、一般的ではないが一般的な仮定の下で正しい答えを与えるだけです。何らかの理由で別のマネージャーを手動で実行した場合、このメソッドは通知しません。
XサーバーのプロセスIDを見つけることをお勧めします。親プロセスはおそらくディスプレイマネージャー(存在する場合)です。これには、クライアントがXサーバーと同じマシンで実行されている必要があります。lsof /tmp/.X11-unix/X${DISPLAY#:}
Xサーバープロセスが表示されます(Xソケットが存在する場合/tmp/.X11-unix
)。
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(説明:次のlsof -F ''
ように出力を印刷しますp1234
。-F
オプションは、機械で解析可能な出力形式を''
意味し、PIDのp
前に文字を印刷することを意味します。x=${x#p}
最初の文字を取り除きp
ます。最後の行は、Xサーバーの親のPIDを取得します(ps -o ppid -p $x
)、およびps
その親プロセスに関する情報を表示するための呼び出し。
一部のディストリビューションでは、複数のディスプレイマネージャーをインストールできます。ただし、マルチシートシステムを使用している場合を除き、1つだけが実行されます。Debianおよび派生物の下にインストールされているすべてのディスプレイマネージャーパッケージを一覧表示するには:
aptitude -F %p search '~i ~P^x-display-manager$'
または
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
systemdベースの配布を使用している場合。複数のディスプレイマネージャがインストールされている可能性があるため、このコマンドは現在設定されているディスプレイマネージャの名前を示します。
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
OUTPUTは次のようになります
ExecStart=/usr/bin/mdm
ミントディスプレイマネージャーを使用しているようです。
grep '/usr/bin' /etc/systemd/system/display-manager.service
です。(ので、厳密に言えば、/usr/bin
シェルへの特別なすべての文字が含まれていない、あなたはそれを引用する必要はありません-しかし、それは悪くはない。)
cat <file> | grep <searchterm>
2番目ではなく最後の文字列を編集しますgrep <searchterm> <file>
。
ディスプレイマネージャー名はDESKTOP_SESSIONにある必要があります
echo $DESKTOP_SESSION
「gnome」を返します。
編集その通り
です。彼らはXFCEのbugzillaでそれを行き来しているので、おそらくあまり信頼性がありません。
$DESKTOP_SESSION
ありますunknown
。
@Gillesが言ったように、ディスプレイマネージャーはデスクトップ環境を起動します。
Debian Wikiによると、これらの大部分はで終わるがdm
、唯一の例外はであるslim
。
したがって、これはほとんどの人のニーズに十分なはずです。
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
または、確かに、親プロセスとして存在し、フォークされません(initシステムを除く)。
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
。一番上の回答のRedHat / Fedoraソリューションは機能しませんでした。構成は移動したようです。
場合によっては、wmctrlが役立ちます。このユーティリティは、多くのWindowsマネージャーと互換性があります。
wmcrt -m
現在使用されているウィンドウマネージャーの名前を表示する必要があります。
すでに述べたように、このスレッドには多くの混乱があります。元の質問は、デスクトップマネージャーやウィンドウマネージャーではなく、ディスプレイマネージャーです。現在、XfceウィンドウマネージャーであるXfwm4と、軽量X11ディスプレイマネージャー(Xfceではなく、LXDEから)であるlxdmを実行しています。htopを使用して、使用しているディスプレイマネージャーを確認できるはずです。あなたはおそらく過去4年間で答えを発見してからずっと長いことでしょう:)
これは、screenfetchと呼ばれるサードパーティのスクリプトを使用して実行できます。
Screenfetchは、Linuxで利用可能なbashスクリプトであり、システムのLinuxディストリビューションのASCIIバージョンと共にシステム情報を表示します。
パッケージマネージャー経由でインストールする
sudo apt-get install screenfetch
(Debianの亜種を使用していると仮定)
screenfetch
ターミナルで実行するだけです
プロジェクトリンク https://github.com/KittyKatt/screenFetch
Xは高度にモジュール化されているため、本当に必要な場合は、デスクトップ環境とWindowsマネージャーを混在させることができます。結局のところ、ウィンドウマネージャーは、ウィンドウをペイントするための単なる方法にすぎません(これは単純なビューです)。
したがって、gnomeを使用する場合、メタシティは以前はウィンドウマネージャーでしたが、現在はMutterに置き換えられています。
ミキシングの問題は現代のデスクトップ環境にあり、デスクトップとウィンドウマネージャーは互いに密接に結びついています。混合が多すぎると、機能が少なくなります。
前述のとおり、$ DESKTOP_SESSIONは機能しますが、X11サーバーに問い合わせたい場合は、次のようにします。
xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME
に分解する
xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"
ウィンドウマネージャーによって作成されたウィンドウのIDを取得します。仕様には(http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html)と書かれています:
_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.
そして、そのウィンドウのWM_NAMEプロパティを要求します。
WM_NAME:
The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar).
_NET_SUPPORTING_WM_CHECK
ディスプレイマネージャに関する情報ではなく、ウィンドウマネージャに関する情報を提供します。常に機能するとは限りません。私のシステムでは、そのプロパティはウィンドウIDに設定されていますが、問題のウィンドウには名前がありません。