ssh -X でつないで xclock を出したら、手元に時計が出た
アプリはサーバーで動いてるのに、画面は手元。どういうしくみなん
【疑問】DISPLAY って何?X11 の X サーバーとクライアント、xorg.conf・xhost・xauth、ディスプレイマネージャと Wayland【LPICレベル1】
前提のおさらい。SSH の X11 転送(ssh -X)は、サーバーで起動した GUI のアプリの画面を、SSH の中を通して手元に表示する。つないだ後の DISPLAY は localhost:10.0 のようになる
>>1
X Window System(X11)では、画面とキーボードとマウスを持ってるほうが X サーバー、アプリが X クライアント
普通の「サーバーは遠く、クライアントは手元」と逆に見えるけど、手元の画面を提供するのが X サーバーやから、手元がサーバー
>>3
アプリはどの X サーバーに出せばええか、どうやって知るん
>>4
環境変数 DISPLAY。形は ホスト:ディスプレイ番号.スクリーン番号:0:自分のマシンの0番(/tmp/.X11-unix/X0 のソケット)192.0.2.10:0:別のマシンの0番。TCP なら6000番+ディスプレイ番号のポート
試したマシンは画面がないから、xhost は unable to open display "" やった
>>5
ディスプレイ :1 なら TCP は
>>5
今の X サーバーは、安全のために TCP では待ち受けない設定(-nolisten tcp)が多い。遠くから使うなら ssh -X が普通
>>3
誰でも X サーバーにつなげたら危なくない?
>>8
2つの方法で絞る
xhost:ホスト単位。xhost +192.0.2.10 で許可、xhost -192.0.2.10 で外す。xhost + は誰でも許してしまうから使わない
xauth:クッキー(合言葉)を持ってるクライアントだけ許す。~/.Xauthority に入ってて xauth list で見られる
>>9
作業用のファイルで xauth -f xa add host/unix:0 MIT-MAGIC-COOKIE-1 … をしてから list したら、host/unix:0 MIT-MAGIC-COOKIE-1 <クッキー> の形で出た。ファイルは -rw-------。ssh -X はこれを自動でやってくれる
X の設定ファイルはどこ?
>>11
/etc/X11/xorg.conf と、分けて書く /etc/X11/xorg.conf.d/*.conf(Xorg の man)。今は自動で設定されるから、ないことも多い。Debian のパッケージには /usr/share/X11/xorg.conf.d/10-quirks.conf が入ってたXorg -configure で、見つけたハードウェアから xorg.conf.new のひな形を作れる。ログは /var/log/Xorg.0.log(0 はディスプレイ番号)
>>12
中身はどう書くん
>>13
Section "名前" 〜 EndSection のまとまり
ServerLayout(全体の組み合わせ)、Screen(画面)、Monitor(モニター)、Device(ビデオカード)、InputDevice・InputClass(キーボードやマウス)、Modes、Files、Module など
10-quirks.conf は InputClass で、特定の機器を Option "Ignore" "on" で無視する設定やった
>>14
キーボードの配列を日本語にしたいときは?
>>15
InputClass の中に Option "XkbLayout" "jp"。今の画面だけなら setxkbmap jp、systemd なら localectl set-x11-keymap jp
ログイン画面とか、ウィンドウの枠とかは誰が出してるん
>>17
ログイン画面がディスプレイマネージャ(GDM、SDDM、LightDM、XDM)。systemd では display-manager.service として起動する
ウィンドウの枠や移動・重なりを受け持つのがウィンドウマネージャ(KWin、Mutter、Openbox など)。それにパネルや設定アプリまでまとめたのがデスクトップ環境
Wayland ってのも聞く
>>19
X11 の後継の仕組み。Wayland ではコンポジタ(GNOME や KDE の画面を描くプログラム)が、X サーバーとウィンドウマネージャの両方の役をする。アプリは WAYLAND_DISPLAY でコンポジタにつながる
X11 用のアプリは XWayland の上で動く。xhost やネットワーク越しの表示といった X の考え方は、そのままでは使えない
>>3
画面のあるほうが X サーバー、DISPLAY は ホスト:番号.スクリーン、許可は xhost か xauth、設定は xorg.conf と xorg.conf.d、ログイン画面は DM、枠は WM、後継は Wayland。手元がサーバーやったんか
管理人のひとこと
- X11 では画面・キーボード・マウスを持つ側が X サーバー、アプリが X クライアント。DISPLAY は ホスト:ディスプレイ.スクリーン(:0 はローカル、TCP は 6000+番号)。
- アクセス制御:xhost(ホスト単位、
xhost +は誰でも許すので避ける)と xauth(~/.Xauthority の MIT-MAGIC-COOKIE-1、xauth list)。遠隔表示は ssh -X が安全。 - 設定は /etc/X11/xorg.conf と /etc/X11/xorg.conf.d/(Section 〜 EndSection:ServerLayout・Screen・Monitor・Device・InputDevice・InputClass など)。
Xorg -configure、ログは /var/log/Xorg.0.log。キーボードは XkbLayout・setxkbmap・localectl set-x11-keymap。 - ディスプレイマネージャ(GDM・SDDM・LightDM・XDM)、ウィンドウマネージャ、デスクトップ環境。Wayland はコンポジタが表示を担い、X11 アプリは XWayland で動く。