デスクトップの壁紙に好きな画像を表示したり、Xアプリを[×]ボタンで閉じたり、マウスを使ってウィンドウサイズを変えたり。これらはXウィンドウマネージャの仕事です。
とても重要な仕事をしますが、Xサーバとは、どのような関係なのでしょうか?
結論を言うと、Xサーバから見るとXウィンドウマネージャは他のXアプリと大差なく、Xウィンドウマネージャが無くてもX Window Systemとして成り立ちます。
しかし、使い勝手は悪くなるし、Xウィンドウマネージャを必要とする機能は当然動きません。
それを承知の上で、今回、XウィンドウマネージャなしでXサーバを立ち上げたいと思います。
Xサーバ(startx)の起動設定、
および、コマンドでのウィンドウ操作に関する文章です。
使用OS:ArchLinux(VirtualBoxゲスト)
前提
下記のパッケージ等は、事前にインストールされているという前提で話を進めます。
・xorg-server
・xorg-xinit
・xorg-xeyes
・xorg-xclock
・xorg-xwininfo
・xdotool
・xterm
・openbox
・xorg-twm
ヒント、ArchLinuxでtwmを使う場合、以下のパケージをインストールしないとエラーが出ます。
sudo pacman -S xorg-fonts-100dpi
Xサーバ起動
ttyコンソールのログイン表示がされている状態(Xサーバが起動されていない状態)から話を始めます。
ログイン後、
.xinitrcを作成するため、以下のコマンドを入力してください。
echo "xterm" > ~/.xinitrc
#注意、.xinitrcが存在する場合、上書きします。
Xサーバを起動するために次のコマンドを打ちます。
startx
図のように.xinitrcに記述したxtermが現れます。2、3秒で起動したと思いますが、もう、Xサーバ管理下の画面です。
しかし、Xウィンドウマネージャが起動されていないため、xtermの上段にはタイトルバーが表示されていません。マウスを使っての移動やウィンドウサイズの変更など何もできません。
今のキーマップはUSキーボードになっているはずです。
試しに;
:
[
]
辺りのキーを押してみて下さい。
キーの刻印とは違う文字が表示されるはずです。
setxkbmap -model jp106 -layout jp,us
と打つことで、日本語キーボードに変わります。
Xアプリを動かす
次に
xterm &
と打ってみて下さい。
新しいxtermが起動されているはずですが、同じ位置に表示されているので、見分けが付きません。
xwininfo -tree -root
と打つと
xwininfo: Window id: 0x2bd (the root window) (has no name)
Root window id: 0x2bd (the root window) (has no name)
Parent window id: 0x0 (none)
2 children:
0x600022 "user001@ARCH64-PC:~": ("xterm" "XTerm") 484x316+0+0 +0+0
1 child:
0x60002d (has no name): () 484x316+0+0 +1+1
0x400022 "user001@ARCH64-PC:~": ("xterm" "XTerm") 484x316+0+0 +0+0
1 child:
0x40002d (has no name): () 484x316+0+0 +1+1
と筆者の環境では表示されました。
0x2bd (the root window)
とあります。このXサーバのルートウィンドウのIDが0x2bdだと分かります。
そのルート配下に2つの子ウィンドウがあります。
筆者の環境では0x600022と0x400022です。
これが、.xinitrcに記述したxtermと、先ほどキー入力したxtermです。
一つ動かしてみましょう。
xdotool windowmove 0x400022 100 320
ウィンドウサイズを変えてみましょう。
xdotool windowsize 0x400022 500 250
いかがですか?Xウィンドウマネージャが無くてもXサーバが使えます。
当然、
xclock &
xeyes &
firefox &
など、別のXアプリも実行することができます。
(firefoxのメニュー表示はうまく動作しませんでした。多分、Xウィンドウマネージャの機能を使っているのでしょう)
Xウィンドウマネージャを起動する
OpenBoxの起動
ここで、xtermから
openbox-session
と打ってみます。
図のように、各Xアプリの上段にタイトルバーが現れました。
各Xアプリを動かしたり、閉じたり、普段と変わらない操作ができるようになりました。
OpenBoxの終了
デスクトップ背景を右クリックするとOpenBoxのメニューが現れます。
そのメニューの一番下にあるLog Out
をクリックすれば、OpenBoxが終了します。
試しに押してみて下さい。押すとOpenBoxが終了すると同時にXアプリの上段からタイトルバーが消えるのが分かります。
Twmの起動
次に
twm
と入力すると、各Xアプリのタイトルバーが、twmが表示するものに変わりました。
いかがですか?Xウィンドウマネージャを変えることでデスクトップ画面の見た目と操作性がまったく違うものになります。
Xサーバを終わらせる
Xウィンドウマネージャを終わらせても、Xサーバは終わらない。では、Xサーバはどうすれば終わるのでしょうか?それは、最初(.xinitrc)に実行したxtermで
exit
と打てばXサーバは終了し、最初のログインした画面に戻ります。
最後に
今回、Xウィンドウマネージャが無くてもXアプリが動くことを試しました。
XウィンドウマネージャはXアプリを動かした後からでも起動できることを試しました。
この文章はあくまで実験的なものです。Xウィンドウマネージャを起動しない理由もXアプリを実行した後で起動する理由もないので、通常はXアプリより先にXウィンドウマネージャを起動します。
2020-01-26追記 続き、超かんたん、自作ウィンドウマネージャの作り方