ディスプレイマネージャーとは何かを教えてくれるシンプルなlinuxコマンドはありますか?


59

ディスプレイマネージャーとは何かを教えてくれるシンプルなlinuxコマンドはありますか?

Xfceを使用しています。通常、異なるデスクトップ環境は異なるディスプレイマネージャーと提携していますか?


1
ウィキペディアにはこれに関する非常に良い記事があります:en.wikipedia.org/wiki/X_display_manager_%28program_type%29
Let_Me_Be

回答:


46

残念ながら、構成はディストリビューションごとに異なります。

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat(Fedoraにも適用されます)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager

1
ええ、なぜ設定について教えてくれますか...?
ptrcao

2
@ptrcao使用しているディスプレイマネージャーを指定するため。
Let_Me_Be

1
私のディスプレイマネージャーが何であるかわからず、ターミナルを使用して調べたいとします。どうすればいいですか?
ptrcao

3
@ptrcaoこれらのファイルを調べます。お気に入りのエディターで開くか、単に実行しcatます。
Let_Me_Be

1
1行だけです:/usr/bin/xdm-それはxdmが私のディスプレイマネージャーであることを意味しますか?
ptrcao

23

ありません。ディスプレイマネージャは、必ずしも同じ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}'

18

systemdベースの配布を使用ている場合。複数のディスプレイマネージャがインストールされている可能性があるため、このコマンドは現在設定されているディスプレイマネージャの名前を示します。

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service

OUTPUTは次のようになります

ExecStart=/usr/bin/mdm

ミントディスプレイマネージャーを使用しているようです。


3
あなたは猫の役に立たない使用の古典的な例を提示しました-と言うことは完全に許容でき、さらには好ましいgrep '/usr/bin' /etc/systemd/system/display-manager.serviceです。(ので、厳密に言えば、/usr/binシェルへの特別なすべての文字が含まれていない、あなたはそれを引用する必要はありません-しかし、それは悪くはない。)
G-マンは言う「復活モニカ

6
「猫の無用な使用」は常にある程度相対的です。私はむしろgrepするときのcat <file> | grep <searchterm>2番目ではなく最後の文字列を編集しますgrep <searchterm> <file>
sjas

1
今日このタイプの質問をしているほとんどのユーザーがsystemdベースのディストリビューションを実行しているため、この回答が最初に表示されます。ありがとう。助けてくれました。
アデルガード

3
@allsyedファイルに/ usr / binがなく、/ usr / sbinがあります。Linux-Mint 18
Prvt_Yadav

2
私の場合(Centos 7)を書いています| grep '/ usr / sbin'
Davide

16

systemdを使用している場合、

systemctl status display-manager

マシン上のアクティブなディスプレイマネージャーサービスの名前とステータスを表示します。


Debian 9では、これが私のために働いた唯一のものです。他のsystemdメソッドは何も返しませんでした。
mickeyf

10

ディスプレイマネージャー名はDESKTOP_SESSIONにある必要があります

echo $DESKTOP_SESSION

「gnome」を返します。

編集その通り
です。彼らはXFCEのbugzillaでそれを行き来しているので、おそらくあまり信頼性がありません。


@frabjous:gdmとkdmはどうですか?マネージャーも表示するのですか、それともログインマネージャーだけですか?
ptrcao

Gnomeはディスプレイ環境ではなくデスクトップ環境であると彼が言ったのを覚えているので、私は誤って上記のfrabjousのコメントを削除しなければなりません。このスレッドは...混乱に富むある
ptrcao

これにより、デスクトップセッションに関する情報が得られます。デスクトップセッションは、デスクトップ環境と同じものである可能性がありますが、デスクトップ環境を使用していない場合や特殊な構成を使用している場合は、まったく異なる場合があります。私はこれを書いているマシンでは、$DESKTOP_SESSIONありますunknown
ジル「SO-悪であるのをやめる」

+ 1、echo $ DESKTOP_SESSIONもgnomeを返します...しかし、これはgnomeでのみ機能しますか?
トレバーボイドスミス

gnomeでのみ動作する場合、このコマンドは「Gnomeを持っているか、持っていないか」を推測するのに役立ちます。質問がそれ以上を知りたいとき。
トレバーボイドスミス

2

@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$" 

1
これはここで私のために働いた唯一の解決策です。LXDEアドオン(LXDE Spinではない)を搭載したFedora 23ミニマルが実行されていることがわかりましたlightdm。一番上の回答のRedHat / Fedoraソリューションは機能しませんでした。構成は移動したようです。
ダニエル


0

すでに述べたように、このスレッドには多くの混乱があります。元の質問は、デスクトップマネージャーやウィンドウマネージャーではなく、ディスプレイマネージャーです。現在、XfceウィンドウマネージャーであるXfwm4と、軽量X11ディスプレイマネージャー(Xfceではなく、LXDEから)であるlxdmを実行しています。htopを使用して、使用しているディスプレイマネージャーを確認できるはずです。あなたはおそらく過去4年間で答えを発見してからずっと長いことでしょう:)


実際には決してしませんでした...実際、Linuxを完全にあきらめ、ダークサイドに行きました:D
ptrcao

0

これは、screenfetchと呼ばれるサードパーティのスクリプトを使用して実行できます。

Screenfetchは、Linuxで利用可能なbashスクリプトであり、システムのLinuxディストリビューションのASCIIバージョンと共にシステム情報を表示します。

パッケージマネージャー経由でインストールする sudo apt-get install screenfetch(Debianの亜種を使用していると仮定)

screenfetch ターミナルで実行するだけです

プロジェクトリンク https://github.com/KittyKatt/screenFetch


-1

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). 

@frabjous:Xfwm4はXfceウィンドウマネージャーです。それはディスプレイマネージャーと同じですか?
ptrcao

@Mathieuディスプレイマネージャではなく、ウィンドウマネージャについて話しています。
Let_Me_Be

@Let_Me_Be本当ですが、ほとんどの場合、ウィンドウマネージャーはディスプレイマネージャーに関連付けられています...どのくらいの頻度でgnomeウィンドウマネージャーをkdeで使用しますか?そして、それは実際に動作GDM / KDM /あなたが提供されるデフォルトを使用しない場合は動作しません言及したように設定ファイルを読み込むつまり、あなたがあなたのディスプレイマネージャを選択できるようにするものは何でもので...
マチュー

_NET_SUPPORTING_WM_CHECKディスプレイマネージャに関する情報ではなく、ウィンドウマネージャに関する情報を提供します。常に機能するとは限りません。私のシステムでは、そのプロパティはウィンドウIDに設定されていますが、問題のウィンドウには名前がありません。
ジル 'SO-悪であるのをやめる'

@Mathieu分布に依存します。通常、ディストリビューションのKDEバージョンをインストールすると、KDMが取得され、gnomeバージョンがインストールされると、GDMが取得されます。しかし、ますます多くのものが表示されるのは、1つのディスプレイマネージャー(通常はGDM / KDMよりも軽量なバリアント)のみの公式サポートです。
Let_Me_Be

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.