知識:antiXデスクトップの技術的構成

2025/10/29

GUIログインとCUIログイン

GUIは、windows.macに代表される Graphical User Interface、CUIは無骨な文字だけの、Charactor User Interfaceです。
linuxは、CUIが基本ですが、使いやすさを追求するため、最近は多くのディストリビューションがGUIをサポートしています。

そして、antiXの場合、下記のようにGUIとCUIの両方で同時にログインセッションが成り立ちます(他のディストリビューションは知りません)。

antiX_gui_login.jpg


我々はGUIにしろ、CUIにしろ、ログインマネージャー(slimski又はgetty)で認証してもらって初めて、カーネルの機能、その他のアプリ等の機能を使うことができるようになります。

antiXのデスクトップ構造

最近の潮流である GNOME、KDE、xfceなどの統合環境*1と異なり、antiXむしろ分散環境(分散処理)となっています。
ここがantiXの特徴です。分散によって処理を軽くしている反面、この構造を知らないと、設定を間違うリスクがあります。

antix_desktop_structure3.png

  • デスクトップ画面のタスクバーとアプリのウィンドウ、背景は、WM(Window Manager)が担当します。
  • 画面に配置しているアイコンの配置は、FM(File-Manager)が担当します。ファイルマネージャーは、WindowsのエクスプローラーやMacのFinderに相当します。
ようは、グラフィックな画面はWMが担当し、そこにFM(ファイルマネージャー)アプリが重なっているイメージです。
ファイルマネージャはPinboardというファイルの中に、アイコンの種類、位置などが書き込まれていて、これをもって制御します。
※アプリとしてのFMのウィンドウは、WMが担当します。

こうして担当を分散することで、CPUへの負荷を軽くして、非力なPCでもグラフィカルなGUIを提供しています。

しかし問題点もあって、タスクバー(WM)から起動する場合と、画面アイコンクリックで起動する場合(FM)とで、アプリに受け渡される環境変数が異なるので、どこから起動するかによってアプリの挙動が変化することがあります。antiXは、環境変数の受渡は古い方式(sysVinit)でやっているので、子プロセスが起動されるときに親プロセスからコピーされる方式です。最近の潮流のsystemdは、環境変数は別ファイルで設定、受け渡しされるので、明示的ですが、antiXは黙示的に渡されます。黙示的に渡された場合、子プロセスが、他の親プロセスに移動したときに、その子プロセスがどの親から環境変数を受け継いだかが特定しずらくなり、不具合の調査に時間がかかったりします。
一方で、この不具合を解消させる過程が、linuxの基本を学ぶことにもなるので、学習用としてはいいように思います。

もちろんこの欠点は、antiXも認識しているようで、リポジトリできちんと管理されているアプリについては、この分散による不具合がないように検証されているようです。
不具合がでがちなのは、レポジトリに入っていないアプリを直接導入したような時です。例えば、非オープンソースのChromeなどです。

また、GUI分散処理といっても、アイコンはWMが管理し、その置き場所はFMがpinbordという仕組みで管理するので、完全な分散でもありません(インストールする機種によっては、WMとFMの立ち上げ処理時に不具合がでることも報告されています)。

上図をみてご理解いただけるように、File-Managerがないと、デスクトップはただの飾りです。ROX、zzz はFile-Managerなので、ROXかzzzが頭についているエディションは、デスクトップにアイコンを置くことができます。
一方、minimalや無印は、デスクトップにアイコンが置けず、ただの背景のみの、中途半端なGUIとなります(minimalは別のソフトと組み合わせれば置くことが出来ます)。minimalや無印でもタスクバーからはGUIで起動はできます。
よほどのミニマリストでなければ、ROXかzzzを選択したほうがよいかと思います。

*1 : といっても詳しくはないのですが

概念図

structure.jpg

X11(X Window System)の役割

X11は実際の絵描きです。
アプリ(クライアント)は「描いて」と頼み、
Xサーバは「ディスプレイに描く」という仕事をします。

仕組み

Xorg が Xサーバの実体です。
アプリは /tmp/.X11-unix/X0 というUNIXソケットを通して通信します。
その通信経路を定義する環境変数が:
$ echo $DISPLAY
:0
 →意味:「ローカルのXサーバの0番ディスプレイに接続中」

プロセスの流れを観察してみる

antiX 環境(Rox-IceWM)では、
ログイン後のプロセス構成はおおよそ次のようになっています。

$ ps -e | grep -E 'X|icewm|rox'

想定出力:

835 ? 00:00:01 Xorg
980 ? 00:00:00 slim
1150 ? 00:00:00 icewm-session
1151 ? 00:00:00 icewm
1153 ? 00:00:00 rox

説明:
プロセス役割
Xorg画面描画サーバ(X11)
slimログインマネージャ
icewm-sessionIceWM本体+補助起動管理
icewmウィンドウ枠・パネル制御
roxデスクトップ描画(Pinboard)

ウィンドウマネージャ(WM)の役割

X11だけでは「枠線・タイトルバー・移動」などは一切できません。
それを実現するのが WM(Window Manager) です。

IceWM の例

アプリをウィンドウに包み、マウスで動かせるようにする。
タスクバー(パネル)やAlt+Tabの切替を提供。
テーマ、フォーカス動作、ショートカットを管理。

WMがやっていること

機能具体的な処理
ウィンドウ装飾枠・影・閉じるボタンを描く
配置新しいウィンドウの位置を決定
フォーカスどのウィンドウがアクティブかを管理
最小化・最大化状態変更をX11に伝える
Alt+Tab制御ウィンドウ一覧を追跡
パネル表示ウィンドウリスト・時計などを描画

設定ファイル WM関連(IceWM)

ユーザー単位設定はここにあります:

~/.icewm/
├── preferences ← ウィンドウ挙動・テーマ・パネル等
├── keys ← ショートカットキー設定
├── toolbar ← タスクバーのアイコン定義
├── menu ← メニュー構成
└── startup ← ログイン時に自動起動するコマンド


設定反映方法:

icewm --replace &


またはログアウト→再ログイン。

ファイルマネージャ(Rox-Filer)

~/.config/rox.sourceforge.net/
├── ROX-Filer/
│ ├── Options ← 設定
│ └── menus2.xml ← 右クリックメニュー
└── ROX-Filer/Pinboard/ ← デスクトップ配置情報


Roxがデスクトップを描画していることを確認:

$ ps -ef | grep rox
rox -p=antiX

まとめ:X11とWMの関係整理図

[アプリ] ─┐
↓(Xプロトコル)
[Xorg(X11)]

[ウィンドウマネージャ:IceWM]

[デスクトップ描画:Rox-Filer]


Xorg が描画面を提供

IceWM がウィンドウ操作を管理

Rox-Filer が壁紙・アイコンを描画
→ この三者が連携して「デスクトップ体験」を作っています。