Available Languages: | Deutsch | English | Español | Français | 日本語 (Nihongo) | Português | Русский (Russkiy) | 中文 (简) (Simplified Chinese) | |
このドキュメントは、 Apple の Mac OS X および Darwin システム上で X11 / XFree86 / Xtools を使用するためのものです。 紹介と開発の歴史から始まり、 現状と X11 を使う上での様々なオプションについて書かれています。 これは Fink を使うか使わないかには直接の関係はありません。
X Window System Version 11, あるいは短く X11 とは、ネットワーク透過型、クライアント=サーバ形式の画像表示システムです。 これによってアプリケーションはピクセル、線、テキスト、画像など画面上にを描くことができます。 X11 はまた、追加のライブラリを使用することで、ボタンやテキストフィールドなどのユーザーインターフェイスを描くことが容易にできます。
X11 は、 Unix の世界におけるデファクトスタンダードのグラフィックシステムで、 Linux 、 BSD 、商用 Unix などで使われています。 デスクトップ環境である CDE 、 KDE 、 GNOME などはこの上で動くものです。
Mac OS X は Apple によって作られたオペレーティングシステムです。 この前身である NeXTStep や OpenStep のように、これは BSD をベースにしている Unix OS ファミリーの一員です。 しかし、 Mac OS X は独自の画像表示システムを有しています。 この画像エンジンは Quartz と呼ばれていて、そのルックアンドフィールは Aqua と呼ばれていますが、両者は同じ意味で使われることもあります。。
Darwin は Mac OS X から余計な部分を落とした無料版で、完全なソースコードが入手できます。 これには Quartz 、 Aqua などや関連テクノロジーはついてきません。 デフォルトではテキストコンソールのみです。
XFree86 はオープンソースで実装した X11 です。 これは名前が示すように、当初 Intel x86 PC 上で動くように開発されましたが、現在では OS/2 、 Darwin 、 Mac OS X 、 Windows など多くのアーキテクチャーやオペレーティングシステムで動かすことができます。
Xtools は Tenon Intersystems の製品です。 これは XFree86 をベースにした Mac OS X 用の X11 の一バージョンです。
注記: OS 10.3 のリリース以前に開発が止まっているようです。
X11 はクライアント=サーバ型のアーキテクチャーで構築されています。 中央のシステムが実際の描画やアプリケーション間のアクセスを調整しています。 X11 を使って描画をしたいアプリケーションは、サーバに接続して何を描画するかを伝えます。 このため、 X11 の世界ではアプリケーションはクライアントと呼ばれています。
X11 ではサーバとクライアントは同じマシンで動いている必要はありません。 これはよく用語の混乱の元となっています。 ワークステーションとサーバを使った環境の場合、 X11 ディスプレイサーバはワークステーションで、アプリケーション (X11 クライアント) はサーバ上で実行するためです。 ここでは "サーバ" という言葉は X11 ディスプレイサーバを指し、押し入れの中に隠してあるマシンのことではありません。
背景: X11 は画面をウィンドウのハイエラルキーと見なしています。 最上位にはスクリーンサイズの特別なウィンドウがあり、他の全てのウィンドウはこれに含まれています。 このウィンドウはデスクトップ背景も含み、 "root window" と呼ばれています。
本題に戻りましょう: 他のグラフィック環境と同様、 X11 はそれだけでスクリーンを占有するように描かれています。 Mac OS X では、 Quartz が既にスクリーンを占有しているので、両者が協働するように修正しなければいなりませんでした。
やり方の一つとしては、両者を順々に占有させる方法があります。 それぞれの環境は、ある瞬間には片方だけがスクリーンを完全に占有する形で、ユーザーが切り替えます。 この方式はフルスクリーンや rooted モードと呼ばれています。 rooted とは、 X11上で、完全に他のシステムと同じルートウィンドウが存在するためにこう呼ばれています。
もう一つの方法は、ウィンドウごとに両者の環境を混在させることです。 これによって二つのスクリーンを切り替える必要がなくなり、また既に Quartz が背景を管理しているので、 X11 ルートウィンドウを除くことができます。 こうして (目に見える) ルートウィンドウがなくなるので "rootless" と呼ばれています。 これが Mac OS X 上で X11 を使う最適な方法です。
ほとんどのグラフィック環境においてはウィンドウ枠の見た目 (タイトルバー、閉じるボタン) はシステムによって決められています。 X11 は違います。 X11 では、ウィンドウ枠 (または " 装飾 ") は別のプログラムによって提供されていて、これをウィンドウマネージャと呼びます。 多くの点で、ウィンドウマネージャは一つのクライアントアプリケーションにすぎません。 起動する仕方も、 X サーバに通信するときのチャンネルもまったく一緒です。
ウィンドウマネージャの一覧は xwinman.org にあります。 有名どころは テーマ と呼ばれる外観のカスタマイズをすることができます。 ウィンドウマネージャによっては、ルートウィンドウでのポップアップメニュー、ドック、ランチャ−などの機能も備えています。
多くのウィンドウマネージャが Fink パッケージ化されています。 一覧をご覧下さい。
いずれもデスクトップ環境です。 これ以外にも沢山あります。 デスクトップ環境は、統一した外観や操作性の枠組みを提供します。 例えば:
描画エンジン: X11
ウィンドウマネージャ: sawfish
デスクトップ: Gnome
描画ディスプレイエンジン、ウィンドウマネージャ、デスクトップ環境は似たような機能が実装されていることもあるので、境界線は非常に曖昧です。 このため、ウィンドウマネージャとデスクトップ環境によっては一緒に使えない組み合わせもあります。
多くのアプリケーションは特定のデスクトップに統合された形で開発されています。 たいてい、これはデスクトップ環境用のライブラリ (と低レベルのライブラリ) をインストールすることで、そのアプリケーションの機能を損なうことなく使うことができます。 たとえば、いまでも増加中の GNOME アプリケーション は、GNOMEがなくとも動作します。 残念なことに、 KDE アプリケーション ではまだそこまで達していません。
[大げさな言葉を使ってしまいました。 どうしても使いたかったんです...]
始まりは無だった。 Darwin は赤子の様で、 Mac OS X はまだ開発段階だった。 どちらにしても、 X11 もなかった。
やがて John Carmack がやってきて、 XFree86 を Mac OS X サーバに移植した。 唯一の Darwin ファミリーの OS であった。 後に、これは Dave Zarzycki によって XFree86 4.0 と Darwin 1.0 に更新された。 パッチは Darwin の CVS レポジトリへの道を見いだし、そこで眠りについた。 時がくるのを待っていたのだ。
ある晴れた日、 Torrey T. Lyons がやってきて Darwin パッチに待ち望まれていた陽の目を見ることになる。 彼は公式の XFree86 CVS レポジトリという新しい家を用意した。 この時、 Mac OS X Public Beta と Darwin 1.2 の頃である。 XFree86 4.0.2 は Darwin 上で動いたが、 Mac OS X 上ではユーザが Aqua をログアウトし一旦コンソールに移動する必要があった。 そこで Terry は XonX チーム を組織し、 XFree86 を Mac OS X にもたらす旅に出たのだった。
これと同じ頃、 XFree86 を元に Tenon が Xtools をビルドし始めたのだった。
直ぐに、 XonX チームは XFree86 を Quartz と平行してフルスクリーンで走らせることに成功した。 これはテストリリースとして冒険好きなユーザに提供された。 リリースされた名称は XFree86-Aqua あるいは短く XAqua であった。 Torrey がリーダーであったため、変更は直接 XFree86 の CVS レポジトリに反映され、 4.1.0 に向かったのであった。
当初、 Quartz とのインターフェイスは Xmaster.app と呼ばれる (当初は Carbon で書かれ、後に Cocoa 化された) 小さなアプリケーションが行っていた。 後にコードは X サーバに統合され、 XDarwin.app が誕生した。 この頃、共有ライブラリのサポートが追加された (Tenon はバイナリ互換性のためこの方式にするように説得された) 。 また、 (Carbon API を使った) ルートレスモードも進んでいたのだが、 XFree86 4.1.0 には少し遅かった。 こうしてルートレスパッチは自由にネット上を解き放たれたのだった。 XFree86 4.1.0 がフルスクリーンモードで登場した後、ルートレスモードの作業は続き、 Cocoa API を使うようになった。 実験的なルートレスモードが XFree86 の CVS レポジトリに取り込まれた。
この頃、 Apple は Mac OS X 10.0 と Darwin 1.3 をリリースし、 Tenon は Xtools 1.0 を数週間後にリリースした。
開発は引き続き ルートレスモードに XFree86 を統合するよう働きかけ、 2002 年 1 月 の XFree86 4.2.0 には Darwin/Mac OS X は完全に XFree86 ディスリビューションに統合された。
Fink はどのような X11 がインストールされていても問題なく動作しますが、また独自の XFree86 パッケージも提供しています。 fink install ... と入力すれば、ソースコードをダウンロードしてコンパイルを開始します。 もし apt-get install ... か dselect フロントエンドを使ったら、 X11 の公式ディストリビューションに似たコンパイル済みのパッケージをインストールします。
一般的事項:
逆は通常は問題ありません: 古い X11 用にビルドされたパッケージは、後のバージョンでも動作します。
10.3 と 10.4 では、X11 のヒエラルキー (新しい -> 古い コードベース) は以下の通り:
xorg > xfree86 > Apple's X11
10.4 利用者:
XFree86 version 4.5.0-23 をソースからインストールすることができます。 xfree86 と xfree86-shlibs の両方が必要です。
X.org の X11 リリースをインストールすることもできます (現在のバージョンは 6.8.2-35) 。 これは unstable ツリーの xorg と xorg-shlibs をインストールします。 この X11 は、 XFree86-4.5 に似ていますが、バグフィックス、新しい機能があり、係争中のライセンスのコードが除かれています。
10.3 利用者:
XFree86 version 4.4.0-13 (現在のバイナリディストリビューション内) または 4.5.0-13 (ソースで提供) をインストールすることができます。 xfree86 と xfree86-shlibs の両方が必要です。
X.org-6.8.2 は、上記の方法で xorg と xorg-shlibs をインストールします。
10.2 利用者:
10.2 の利用者は、バージョン 4.3 をソースまたはバイナリで、4.4 を unstable ツリーからインストールできます。 上述の通り、xfree86 と xfree86-shlibs です。
10.2 には、XFree86 4.2.1.1 もあり、normal と -threaded の2種類あります (これ以降は全てスレッドをサポートしています)が、既に古くなっています。 xfree86-base, xfree86-base-shlibs, xfree86-shlibs, and xfree86-rootless-shlibs パッケージ (または -threaded 付き)の全てをインストールする必要があります。 これに加え、Fink が新しいバージョンをインストールしないよう、xfree86-base-dev と xfree86-rootless-dev (または -threaded 付き)をインストールする必要があります。
10.1 利用者:
バイナリディストリビューション (のみ) からバージョン 4.2.0 をインストールすることができます。 xfree86-base と xfree86-rootless をインストールします。
2003年1月7日、 Apple はXFree86-4.2 ベースの X11 をリリースしました。 これは Quart レンダリングエンジンや高速化 OpenGL をサポートしています。 新しいバージョンが2003年2月10日にリリースされ、機能追加とバグ修正がなされました。 3回目のリリース (Beta 3) は 2003年3月17日に行われ、さらに機能追加とバグ修正がなされました。 このバージョンは Jaguar で使うことができます。
2003年10月24日、 Apple は Panther (10.3) をリリースしました。 これには X11 が同梱されていて、このバージョンは XFree86-4.3 をベースにしたものです。
2003年10月24日、 Apple は Tiger (10.4) をリリースしました。 これには X11 が同梱されていて、このバージョンは XFree86-4.4 をベースにしたものです。
アップルのバイナリを使うには、 X11 User パッケージがインストールされている必要があります。 また、Fink の update も行ってください。
fink-0.16.2 では X11 SDK パッケージも必要です。 インストール後、 Fink は system-xfree86 バーチャルパッケージを作成します。
fink-0.17.0 以降は、 X11 SDK はソースからパッケージをビルドする場合のみ必要になります。 この場合、 SDK がなくても system-xfree86 バーチャルパッケージが存在します。 SDK をインストールした場合は、 system-xfree86-shlibs パッケージと system-xfree86-dev が追加され、それぞれライブラリとヘッダファイルを表しています。
XFree86 ディストリビューションが既にある場合、 Fink でインストールしたかどうかに関わらず X11 パッケージをべつのものに切り替える方法 を参照して下さい。 この場合、まず最初に既存パッケージを削除してから Apple X11 (および必要に応じて X11 SDK) をインストールしてください。
Apple X11 使用上の注意:
autocutsel パッケージは不要です。 もし X11 で選択している場合、無効にして下さい。
Apple X11 は ~/.xinitrc ファイルを使います。 Quartz を完全に生かしたい場合、ウィンドウマネージャに /usr/X11R6/bin/quartz-wm を使う必要があります。 ~/.xinitrc を編集するか、完全に削除して下さい。
他のウィンドウマネージャを使いたいけれどカットアンドペーストも使いたい場合、以下の例のようにして下さい:
/usr/X11R6/bin/quartz-wm --only-proxy & exec /opt/sw/bin/fvwm2
もちろん、 startkde のようなウィンドウマネージャ起動も書く必要があります。
quartz-wm は Gnome/KDE ウィンドウマネージャのヒント機能を完全にはサポートしていません。 無駄なデコレーションをされたウィンドウを見ることがあると思います。
Apple X11 は Fink の環境設定をデフォルトでは認識しません。 Fink でインストールした起動アプリケーション (例 ウィンドウマネージャ, gnome-session, その他の/opt/sw/bin 内のアプリケーション) を呼び出すには、 ~/.xinitrc の上の方 ("#!/bin/sh" より下、他のプログラムより上) に以下の行を追加します;
. /opt/sw/bin/init.sh
これにより Fink 環境が初期化されます。 注記: init.sh を使います。 .xinitrc は tcsh ではなく sh によって実行されるので init.csh は使用しません。
Fink ツリー下にあるプログラムをアプリケーションメニューから呼び出すときに、そのプログラムが他のプログラムを呼ぶようなものの場合、特別な処置が必要です。 このような場合、フルパスを追加するのではなく、例えば
/opt/sw/bin/emacs
ではなく、 bash であれば:
. /opt/sw/bin/init.sh ; emacs
tcsh であれば:
source /opt/sw/bin/init.sh ; emacs
これにより PATH 情報が正しく伝わります。 Fink でインストールしたアプリケーションなら、どれでもこの方法が使えます。
もし Apple X11 用にパッケージをビルドしようとして、以下のようなエラーが出た場合:
ld: err.o illegal reference to symbol: _XSetIOErrorHandler defined in indirectly referenced dynamic library /usr/X11R6/lib/libX11.6.dylib
リンク時に -lX11 がされているかどうか確認して下さい。 パッケージの設定オプションを確認し、この引数の追加方法を調べて下さい。
もし以前に xfree86 を使っていて、 Apple X11 (10.2.x または 10.3.x) に切り替えた場合、 バイナリ互換ではないので xfree86 用にビルドしたパッケージをビルドし直す必要があります。
10.3 と 10.4 の利用者: XFree86 や X.org の上に、Apple のディスプレイサーバとウィンドウマネージャーを使うこともできます。 applex11tools をインストールすれば、 X11User.pkg があれば必要なものがインストールされます。
Apple X11 の使用に関しては、Apple Developer Connection の記事 が参考になります。
XFree86 プロジェクトには公式の Xfree86 4.5.0 バイナリディストリビューションがあります。 これは XFree86 ミラー 内の 4.5.0/binaries/Darwin-ppc-6.x (10.1 用は 4.5.0/binaries/Darwin-ppc-5.x ) ディレクトリにあります。 Xprog.tgz と Xquartz.tgz は、たとえ "optional" と書かれてあっても忘れずに入手して下さい。 もし何が必要なファイルかわからなければ、ディレクトリごとダウンロードして下さい。 Xinstall.sh スクリプトを root で実行してインストールします。 (インストール前に official instructions を読むといいでしょう。)
これで Mac OS X 上でフルスクリーンとルートレスの XFree86 が入りました。
もし時間が許せば、 XFree86 4.5 はソースからビルドすることもできます。 ソースは XFree86 ミラー の 4.5.0/source ディレクトリ内にありますので X420src-#.tgz の3つの tarball を同じディレクトリ内で取得・解凍して下さい。 XFree86 ソースツリーにある config/cf/host.def ファイルにマクロ定義をすることで、ビルドをカスタマイズできます。 (注記: #ifndef チェックがされているマクロだけが、 host.def で上書きできるマクロです。)
設定を終了したら、以下のコマンドで XFree86 をコンパイルしてインストールしましょう。
make World sudo make install install.man
4.2.1.1 にアップデートするには、 公式バイナリ 節の解説を参照して下さい。
4.3.0 をインストールするには、上述の "2" のところを "3" に変えて実行して下さい。 ただし、4.2.1.1 へのアップグレードは無視して下さい。
公式バイナリと同様、これで Mac OS X でフルスクリーンとルートレスの XFree86 とサーバがインストールされました。
もし時間だけではなく、図太い神経もあるようでしたら、最新の開発版の XFree86 を公開 CVS レポジトリから手に入れることもできます。 コードは常に開発中ですので、今日手に入るものと昨日手に入れたものは違うものになっていますので注意して下さい。
インストールするには、 XFree86 CVS の解説に従い、 xc モジュールをダウンロードします。 あとは上述のソースからのビルドに従って下さい。
以前に Fink で XFree86 パッケージをインストールして削除や他のものに変えたい場合の方法は簡単です。 dpkg データベースをそのままにするため、強制的に古いパッケージを削除し、新しいものをインストールします。
これには二つの方法があります:
FinkCommander を使う
FinkCommander を使っている場合、メニューから force removal を選択します。 例えば、 xfree86-rootless がインストールされていてスレッド版に変えたい場合、 xfree86-rootless, xfree86-rootless-shlibs, xfree86-base, xfree86-base-shlibs を選択して:
Source -> Force Remove
を実行します。
コマンドラインから手動で行う
手動で行う場合、 dpkg を --force-depends のオプションをつけて実行します:
sudo dpkg -r --force-depends xfree86-rootless\ xfree86-rootless-shlibs xfree86-base xfree86-base-shlibs
もしスレッド版の XFree86 を必要とするアプリケーションがある場合、force remove を行って他のXFree86 や代替パッケージをインストールすると、 dpkg データベースに問題が生じることがありますので注意して下さい。
逆に Fink 以外でインストールした X11 が既にある場合、コマンドラインから削除します:
sudo rm -rf /usr/X11R6 /etc/X11
これは Fink 以外の X11 を削除する正しい方法です。 また、インストールしたものによって XDarwin.app | X11.app も削除する必要があるでしょう。 Apple X11 を削除する場合は .xinitrc を開いて quartz-wm を実行しないか確認して下さい。 これで新しい X11 を手動でも Fink でもインストールすることができます。
インストールオプションと必要な Fink パッケージの要点:
Install Type | Fink packages |
---|---|
XFree86-4.4.0 または 4.5.0 (10.3 と 10.4) |
xfree86 と xfree86-shlibs |
X.org-6.8.2 (10.3 と 10.4) |
xorg と xorg-shlibs |
Apple's X11 (全てのバージョン) |
system-xfree86 と system-xfree86-shlibs (+system-xfree86-dev が X11 に依存するパッケージのビルド時に必要) |
XFree86-4.x 公式バイナリ |
system-xfree86 と system-xfree86-shlibs (+system-xfree86-dev が X11 に依存するパッケージのビルド時に必要) |
ソースまたは最新の CVS からビルドした XFree86-4.x |
system-xfree86 と system-xfree86-shlibs (+system-xfree86-dev が X11 に依存するパッケージのビルド時に必要)) |
XFree86-4.2.1.x (10.2 のみ) または 4.2.0 (10.1 のみ) |
xfree86-base と xfree86-rootless (および その -shlibs) または xfree86-base-threaded と xfree86-rootless-threaded (および -shlibs) |
純粋な Darwin 上では XFree86 は他の Unix と同様に動作します。 通常、コンソールから startx で起動させると、サーバとウィンドウマネージャやターミナルエミュレータなどのクライアントが実行されます。 純粋 Darwin 上ではパラメータは必要ありません。 単純に:
startx
と入力します。 ホームディレクトリにあるファイルを編集することで、何を起動させるかをカスタマイズすることもできます。 .xinitrc はどのクライアントを起動するかを管理します。 .xserverrc はサーバオプションや他のサーバを起動させることもできます。 もし問題があれば (真っ暗な画面やコンソールに戻ってしまったら) 、上述のファイルを削除してみて下さい。 startx はこれらのファイルがない場合は安全なデフォルト設定で起動するはずです。
あるいは、サーバに XDMCP オプションをつけて、次のように起動することもできます:
X -query remotehost
これについての詳細は Xserver のマニュアルページに書かれています。
最後に、 xdm オプションを設定して起動することもできます: これについての詳細はマニュアルページをご覧下さい。
注記: Panther 以前のMac OS X では、 ログイン画面で >console と入力することでテキストコンソールに入ることもできます。 これは
注記: Mac OS X Panther 以降では、 console ウィンドウからは XFree86 は起動できません。
Mac OS X で XFree86 を起動するには、基本的に二つの方法があります。 ひとつはアプリケーションフォルダ内の XDarwin.app アプリケーションをダブルクリックします。 この後、起動ダイアログでフルスクリーンかルートレスかを選択します。 このダイアログは毎回でてきますが、 Preferences ダイアログで設定を行うと出てこなくなります。
4.2.0 より前は自動的にフルスクリーンモードで、ダブルクリックによる起動ではルートレスに変える方法はありませんでした。
もうひとつの方法は、 Mac OS X 上で ターミナル.appから startx を実行します。 この方法でサーバを起動する場合、Quartz と共存することを伝える必要があります。 これは、 -fullscreen オプションをつけて:
startx -- -fullscreen
とします。 これにより、フルスクリーンモードでサーバが起動します。 クライアントは .xinitrc に書き込んで下さい。
注記: 4.2 より前では -quartz でフルスクリーンモードになりました。
-rootless オプションを使って:
startx -- -rootless
-quartz オプションはもうフルスクリーンモードを選択しません。 代わりに、 Preferences のデフォルトモードを使用します。
4.3 時点では、引数なしで startx を実行すると起動ダイアログが表示されます。
X.org は XFree86 と全く同じ要領で起動します。
機能としては、 Apple X11 は XFree86 と同様です (例えば、.xinitrc を 使って、クライアントを制御します) 通常の起動方法は X11.app をダブルクリックします (これは/アプリケーション/ユーティリティ内にあります)。 startx コマンドを使うことも可能ですが、コマンドラインオプションを使ってディスプレーモードを指定することはできません; X11.app は、初期設定で選択されたモードで起動します。
ウィンドウマネージャーは、ほかの設定をしない限り quartz-wm となります。 X11.app の初期設定で、再起動することなくフルスクリーンとルートレスを切り替えることができます。 しかし、これは quartz-wm では動作しません; ほかのウィンドウマネージャーを (.xinitrc で設定して) 使う必要があります。
Fink の applex11tools を用いると、 OS 10.3 以降では、 XFree86 4.4 以降や X.org で X11.app と quartz-wm を組み合わせることができます。
このパッケージを使用するにはunstable ツリー を設定し、X11User.pkg を /Users または /Volumes のどこかに置きます。 X11.app は、 Fink ツリー内の Applications フォルダーにインストールされます。 これで X11.app や XDarwin.app を使うことができます。
ホームディレクトリに .xinitrc という名前のファイルがある場合、自動的にウィンドウマネージャや xterm, GNOME などのデスクトップ環境といったX クライアントを起動するために使われます。 .xinitrc はコマンドを実行するシェルスクリプトです。 通常の #!/bin/sh を先頭に書いたり、実行可能フラグをたてる必要はありません。 xinit はシェルを通して起動する方法を知っています。
.xinitrc ファイルがホームディレクトリ内にない場合、 X11 はデフォルトのファイル /private/etc/X11/xinit/xinitrc. を使用します。 このデフォルトのファイルを元に編集するとよいかもしれません。
cp /private/etc/X11/xinit/xinitrc ~/.xinitrc
Fink を使っている場合、 source init.sh を一番最初に実行します。 これによって環境が正しく設定されます。
.xinitrc には任意のコマンドを追加できますが、いくつかの注意点があります。 まず、シェルはデフォルトではプログラムを一つづつ実行していきます。 次にプログラムは、前のプログラムが完全に終了するまで実行されません。 同時に複数のプログラムを実行したい場合、シェルに "バックグラウンド " で実行するよう伝えるため & を各行の最後に追加します。
次に、 xinit は .xinitrc スクリプトがが終了しするまで待ち、 "セッションは終了しました。 X サーバを終了します。" と解釈します。 この意味は、.xinitrc の最後のコマンドはバックグランドで実行してはならず、ずっと実行されていなければならないということです。 慣習的にウィンドウマネージャはこの目的のために使われてきました。 実際、ほとんどのウィンドウマネージャは xinit が待っていることを想定し、メニューの "ログアウト" ではこれを使います。 (注記: メモリと CPU サイクルを節約するために、下記の例のように exec を追加すると良いでしょう。)
以下の簡単な例では、XFree86 または Xorg 上で GNOME を起動しています:
source /opt/sw/bin/init.csh exec gnome-session
より複雑に、 bell をオフにし、クライアントをいくつか起動してから Enlightenment ウィンドウマネージャを起動するには:
source /opt/sw/bin/init.sh xset b off xclock -geometry -0+0 & xterm & xterm & exec enlightenment
GNOME2.4 以降を Apple X11 下で起動するには:
. /opt/sw/bin/init.sh quartz-wm --only-proxy & exec gnome-session
KDE 3.2 (version < 3.2.2-21) を Apple X11 下で起動するには
. /opt/sw/bin/init.sh export KDEWM=kwin quartz-wm --only-proxy & /opt/sw/bin/startkde >/tmp/kde.log 2>&1
最後に、最新版の unstable な KDE を Apple X11 下で起動するには:
. /opt/sw/bin/init.sh /opt/sw/bin/startkde >/tmp/kde.log 2>&1
OroborOSX は、X11.app や XDarwin ディスプレイマネージャーの代わりになります。 これは、あらかじめ X11 を必要とします。 X11.app または XDarwin.app もそのまま使うことができます。
OroborOSX が実行されると、独自のルートレスのみのウィンドウマネージャーを立ち上げ、 システムの xinitrc やユーザーの .xinitrc は読み込みません。 起動後に .xinitrc を実行するメニューがあります。 しかし、起動時にアプリケーションを設定する独自の方法が採用されています。 また、Finder から X11 アプリケーションを、スクリプトを用いて起動することができるメカニズムもあります。
詳しい情報は、 OroborOSX ホームページをご覧ください。
楽勝、楽勝。 インストーラを見つけて、ダブルクリックして、ガイドに従うだけです。 起動ディスクを選択するのを忘れずに。
Fink を使っている場合、Xtools のインストール後に system-xtools パッケージをインストールします。 このパッケージはファイルは何もインストールしません。 代わりにライブラリなどをチェックして Fink の依存性システム上の代替物となります。
Xtools を起動するには、アプリケーションフォルダ内の Xtools.app アイコンをダブルクリックします。 XFree86 と同様、 Xtools は .xinitrc ファイルに書かれているクライアントを起動します。 Xtools ではさらにメニューからもクライアントを起動することができます。
Xtools はハードウェア加速の OpenGL をルートレスで行い、サポートするライブラリもついてきます。 主要な libGL ライブラリは問題ないのですが、 libGLU と libglut は静的なライブラリとしてのみ存在し、 XFree86 とのバイナリ互換の問題を引き起こします。 また、ヘッダに足りないものがあり、 Fink ではまだ解決できていません。 Xtools 1.1 までには修正されることを期待します。
VNC は X11 と設計上よく似ているネットワーク可能な画像表示システムです。 よく似ていますが、低レベルで動作していて実装が容易になっています。 Xvnc サーバと Mac OS X ディスプレイクライアントを組み合わせて Mac OS X 上で X11 アプリケーションを実行することも可能です。 Jeff Whitaker 氏の Xvnc page にこれについての情報があります。
WiredX は Java で書かれた X11 です。 ルートレスモードも対応していて、ウェブ上に Installer.app パッケージもあります。
同社のウェブサイトによると、 Powerlan USA の eXodus 8 は Mac OS X 上でネイティブに動作するようです。 これに用いられているコードやローカルのクライアントをサポートしているかはわかっていません。 このため、 Fink では eXodus をサポートしてはいません。 もし何らかの情報があれば、我々に下さい。
慌てない、慌てない。 XFree86 をおかしくする原因は沢山あります。 このなかで、起動に関連するものは特に多いです。 起動時に問題があった場合、当然 XDarwin がクラッシュすることもよくあります。 この節では起こりうる問題についての対処の完全な一覧を提供していきたいと思います。 まず最初は、二種類の情報が必要です。
XDarwin バージョン XDarwin のバージョンは、 Finder の XDarwin アイコンを 一回だけ クリックして、メニューから " 情報を見る" を選択します。 バージョンは、新しいバイナリテストリリースが XonX プロジェクトから出たときだけあがります。 つまり、 "1.0a1" は実際は 1.0a1 と 1.0a2 の間にあります。
エラーメッセージ これは問題を特定するために必須の情報です。 エラーメッセージを見るのは、どうやって XDarwin を起動したかによって変わります。 startx をターミナルから起動した場合、そのウィンドウ内に出力されます。 スクロールアップして見つけて下さい。 XDarwin アイコンをダブルクリックして起動した場合、メッセージはシステムログに書かれます。 アプリケーションフォルダ内のユーティリティーから Console を起動し、該当するメッセージを探して下さい。
メッセージについての説明をします:
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
Class: Harmless. X11 は隠しディレクトリを /tmp に作り、ソケット "ファイル" をローカル接続用に作成します。 セキュリティー上の問題から、 X11 は root を所有者にしますが、誰でも書き込めるため実行時には問題にはなりません。 (注記: ディレクトリを root に持たせることは困難です。 Mac OS X では /tmp を 再起同時に削除し、 XDarwin 自体は root 権限では実行されないためです)
QuartzAudioInit: AddIOProc returned 1852797029
-[NSCFArray objectAtIndex:]: index (2) beyond bounds (2)
kCGErrorIllegalArgument : CGSGetDisplayBounds (display 35434400)
No core keyboard
Class: Bogus (嘘八百). これは前のエラーをリセットする際に発生するものです。 この間、起動バナーがもう一つできますが、これは XDarwin では動作しないため、このエラーを出力します。 もしこのメッセージが出てきたら、ターミナルまたは Console をさらにスクロールアップして他のメッセージを探して下さい。 この問題は 1.0a3 あで存在しましたが、これ以降では修正されました。
cat: /Users/chrisp/.Xauthority: No such file or directory
Class: Mostly harmless. このメッセージがどこからきたのかわかっていません。 動作には特に影響しないようです。 これはホームディレクトリ内で touch .Xauthority を起動すると取り除くことができます。
Gdk-WARNING **: locale not supported by C library
Class: Harmless. これは、文字通りのことで、アプリケーションの実行には関係しません。 詳細は、下記を参照して下さい。
Gdk-WARNING **: locale not supported by Xlib, locale set to C Gdk-WARNING **: can not set locale modifiers
Class: Bad, but not fatal. このメッセージは上記のメッセージと一緒に出てくることがあります。 これは、 XFree86 のロケールデータファイルが存在しないことを示しています。 ソースからビルドした場合、このエラーは発生しないようです。 ほとんどのアプリケーションは動作しますが、 GNU Emacs は例外です。
Unable to open keymapping file USA.keymapping. Reverting to kernel keymapping.
Class: Often fatal. これは XDarwin 1.0a1 で "Load from file" keymapping オプションがオンの場合に発生します。 このバージョンでは Preferences ダイアログでファイルを指定する場合にフルパスで指定する必要がありますが、コマンドラインで指定した場合は自動的に検索します。 このメッセージは通常、下の "assert" メッセージが続きます。 この問題を解決するには、下に書かれていることに従って下さい。
Fatal server error: assert failed on line 454 of darwinKeyboard.c!
Fatal server error: Could not get kernel keymapping! Load keymapping from file instead.
Class: Fatal. Apple の Mac OS X 10.1 における変更が XFree86 のキーボードレイアウトをオペレーティングシステムカーネルから読むコードを壊しました。 上記のメッセージはこのために出てきます。 Mac OS X 10.1 上では "Load from file" keymapping オプションを使わなければなりません。 この設定は XDarwin Preferences ダイアログにあります。 ファイルが選択されているか確認します ("Pick file" ボタンを使う) 。 XDarwin のバージョンによってはチェックボックスをオンにするだけでは動作しません。 もし XDarin が直ぐに終了して Preferences ダイアログまでたどり着けない場合、 startx -- -quartz -keymap USA.keymapping を実行してターミナルから起動します。 これで通常は XDarwin が起動します。 Preferences で設定を保存します。
Fatal server error: Could not find keymapping file .
Class: Fatal (メッセージの通り). これは Panther でキーマッピングファイルがないために発生します。 xfree86-4.3.99-16 以降のバージョンではキーマッピングファイルを必要としないので、これをインストールして下さい。
Warning: no access to tty (Inappropriate ioctl for device). Thus no job control in this shell.
Class: Mostly harmless. XDarwin 1.0a2 以降ではクライアント起動ファイル (.xinitrc) を実行する際に裏で対話的にシェルを起動しています。 これによって PATH を設定せずにすんでいます。 シェルによっては、実際のターミナルには接続していないとメッセージを発しますが、ジョブ管理などにはシェルを使わないので無視します。
Fatal server error: failed to connect as window server!
Class: Fatal. Aqua が存在しているのにコンソールモードのサーバ (純粋な Darwin) が起動されたことを意味しています。 通常、公式 XFree バイナリディストリビューションをインストールして XQuartz.tgz tarball を残していた場合にこのエラーが発生します。 また、 /usr/X11R6/bin のシンボリックリンクが壊れていたり、ターミナルからXDarwin を実行しても発生することがあります (ターミナルからの起動には startx を使います。XFree86の起動 を参照) 。
いずれの場合も、 ls -l /usr/X11R6/bin/X* を実行して出力の、特に以下のようになっている4カ所を見ます。 X XDarwinStartup へのシンボリックリンク; XDarwin, 実行可能ファイル (コンソールモードサーバ); XDarwinQuartz /Applications/XDarwin.app/Contents/MacOS/XDarwin へのシンボリックリンク; XDarwinStartup 小さい実行可能ファイル。 もしどれか一つでもないか、違うファイルへリンクされていたら、修正する必要があります。 修正の方法はどうやって XFree86 をインストールしたかによって変わります。 Fink で XFree86 をインストールした場合、 xfree86 パッケージ (または OS 10.2 以前はxfree86-rootless) を再インストールする必要があります。 手動でインストールした場合、Xquartz.tgz からファイルを取得します。
The XKEYBOARD keymap compiler (xkbcomp) reports: > Error: Can't find file "unknown" for geometry include > Exiting > Abandoning geometry file "(null)" Errors from xkbcomp are not fatal to the X server
Class: Mostly harmless. メッセージの通り、致命的ではありません。 私が知っている限り、 XDarwin は XKB 拡張は使っていません。 おそらくクライアントプログラムによっては使ってることもあるでしょうが...
startx: Command not found.
Class: Fatal. これは XDarwin 1.0a2 と 1.0a3 で シェルの初期かファイルが /usr/X11R6/bin を PATH 変数に追加しない場合に発生します。 Fink を使っていてデフォルトのシェルを変えていない場合、 (Fink の解説の通り) source /opt/sw/bin/init.csh という一行をホームディレクトリ内の .cshrc に追加すれば十分です。
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed _XSERVTransMakeAllCOTSServerListeners: server already running
Fatal server error: Cannot establish any listening sockets - Make sure an X server isn't already running
Class: Fatal. これは、間違って複数の XDarwin を起動しようとしたときに発生します。 あるいは、 (クラッシュなど) XDarwin を正常に終了しなかった場合もあり得ます。 または、ローカル接続用ソケットのファイル権限の問題かもしれません。 rm -rf /tmp/.X11-unix できれいにするか、コンピュータの再起動でなおります (Mac OS X では自動的に起動時に /tmp をきれいにし、ネットワークスタックをリセットします) 。
Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server
Class: Fatal. 誤った認証データのためにクライアントプログラムが表示サーバ (XDarwin) に接続できません。 これはある種の VNC インストール、 root で XDarwin を起動、あるいはすごく変な状況下が原因となります。 通常、ホームディレクトリから .Xauthority ファイル (認証データが保存されている) を削除し、空ファイルを作成します:
cd rm .Xauthority touch .Xauthority
この他に、 .xinitrc ファイルが原因となることもあります。 .xinitrc が実行されて直ぐに終了するような場合、 xinit は ユーザーのセッションが終了したと解釈して XDarwin を終了します。 .xinitrc 節 の詳細をご覧下さい。 PATH を設定し、終了しないプログラムをバックグラウンドでひとつだけ起動させることは絶対に忘れないで下さい。 exec xterm を追加して、ウィンドウマネージャが見つからない場合の安全策にする方法もあります。
よくある問題に、アイコンや他の画像が黒い長方形や輪郭だけ表示されるといったものがあります。 究極的には、これはオペレーティングシステムの限界によるものです。 この問題は Apple に報告されていますが、現時点では修正する気はないようです。 Darwin bug report をお読みください。
現状は、 X11 プロトコルの MIT-SHM 拡張 が Darwin と Mac OS X では実用的には使用できないようです。 このプロトコル拡張はサーバ側またはクライアント側で無効化することができます。 Fink でインストールされた XFree86 サーバ (xfree86-server と xfree86-rootless) は既に無効化しています。 GIMP と GNOME パネルも対処しています。 他のアプリケーションで同様の問題が発生した場合、 --no-xshm コマンドラインオプションをつけて実行してみて下さい。
この問題は今のところノート (PowerBook, iBook) だけで発生するようです。 この問題を回避するために "Load from file" keymapping オプションが実装されました。 現在では古い方法 (カーネルからマッピングを読む) は Mac OS X 10.1 で使えなくなったため、デフォルトになっています。 もしこのオプションが有効になっていない場合、 XDarwin の Preferences ダイアログで有効にできます。 "Load from file" チェックボックスをチェックしてキーマッピングファイルを選択して下さい。 XDarwin を再起動後、キーボードが使えるはずです (下記参照)。
XFree86 をコマンドラインから実行している場合、オプションとしてキーマッピングファイルを渡すこともできます:
startx -- -quartz -keymap USA.keymapping
これは、 "Load keymapping from file" オプションを有効にした場合におこることがあります。 マッピングファイルはバックスペースキーを "Delete" キーとして登録し、 "Backspace" ではありません。 これは、 .xinitrc ファイルに以下の行を追加して直します:
xmodmap -e "keycode 59 = BackSpace"
もし私の記憶が正しければ、 XDarwin 1.0a2 以降では自動的に Backspace キーとしてマップしています。
このメッセージはよく見かけますが、無害です。 メッセージの通り、国際化が標準 C ライブラリを通してサポートされていないので、プログラムはデフォルトの英語でメッセージ、日時などを使います。 この問題の対処法はいくつかあり:
無視する.
環境変数 LANG をアンセットしてメッセージが出てこなくする。 これは、国際化されている他のプログラムが (gettext/libintl の) サポートを使用しなくなるので注意して下さい。 .xinitrc の例として、
unset LANG
.cshrc の例:
unsetenv LANG
(10.1 のみ) libxpg4 Fink パッケージを使用する。 これはシステムライブラリより前にロードされる (DYLD_INSERT_LIBRARIES 環境変数を使った) ロケール関数などを含む小さなライブラリです。 この場合、 LANG 環境変数に完全な値、例えば ja_JP.eucJP を使う必要があります。 ja や ja_JP では動作しません。
Apple に将来の Mac OS X に、ちゃんとしたロケールサポートを追加してもらう。
X11 アプリケーションをターミナル.app から起動するには、環境変数 "DISPLAY" が必要です。 この値はアプリケーションにどこで X11 ウィンドウサーバを探すかを指定します。 デフォルト設定では、 XDarwin は同じマシン上で動作し、以下のように環境変数を設定します:
tcsh の場合:
setenv DISPLAY :0.0
bash の場合:
export DISPLAY=":0.0"
ログイン時に XDarwin.app を起動するようにし (MacOSX 10.2 の場合、システム環境設定のログインパネルで、 MacOSX 10.3 の場合、アカウントパネルの起動項目で) 、
tcsh の場合: 以下を .cshrc に追加:
if (! $?DISPLAY) then setenv DISPLAY :0.0 endif
bash の場合: 以下を .bashrc に追加:
[[ -z $DISPLAY ]] && export DISPLAY=":0.0"
全てのシェルで DISPLAY を自動的に設定しますが、既に設定されている場合は上書きをしません。 これにより、 X11 アプリケーションを遠隔から、 ssh や X11 トンネリングで実行することができます。
Aqua アプリケーションの xterm (他のシェルでも) からの起動方法は、 open コマンドを使います。 例えば:
open /Applications/TextEdit.app open SomeDocument.rtf open -a /Applications/TextEdit.app index.html
2番目の例では、アプリケーションに関連するドキュメントを開いています。 3番目の例では、明示的にアプリケーションを指定しています。
コピーとペーストは Aqua と X11 環境間でも使うことができますが、バグもまだ残っています。 Emacs は現在の選択に好き嫌いが多いという報告があります。 Classic と X11 間では、コピーとペーストはできません。
いずれにせよ、それぞれの環境でそれぞれの方法を使うだけです。 テキストを Aqua から X11 へ移すには、 Aqua で Cmd-C とし、移す先のウィンドウを開いて "ミドルマウスボタン" 、ワンボタンマウスの場合は Option-click を押して (これは XDarwin の Preferences で設定できます) ペーストします。 テキストを X11 から Aqua に移す場合、 X11 ではマウスでテキストを選択し、 Aqua 側で Cmd-V してペーストします。
X11 システムは複数のクリップボード (X11 的な言葉では カットバッファ) を持っていて、 アプリケーションによっては変なことをしているものもあります。 特に、 GNU Emacs や XEmacs にペーストするときにうまく行かないことがあります。 autocutsel というプログラムは、これを解消するために自動的に両方のカットバッファを同期させます。 これを実行するには、 Fink パッケージの autocutsel をインストールして、以下の行を .xinitrc に追加します:
autocutsel &
(注記: ウィンドウマネージャを exec する前に、バックグラウンドで実行して下さい。 最後に追加するだけでは起動されません。) これは Apple X11 では必要ではありません。 (Apple X11 を使う際の注意点 を参照)。
Apple X11 を使う場合、通常の Map アプリのように Command-C か Edit->Copy を使ってクリップボードにコピーすることができます。 ペーストは、マウスの中ボタンをクリックか Command-V を押します。
いずれにせよ、 Aqua と X11 の間のコピー・ペーストで問題が合った場合、 まずはペーストを2回試してください (コピーに時間がかかる場合があるようです)。 これで駄目なら、他のアプリケーションを試してください。 例: Aqua 側では TextEdit や Terminal.app 、 X11 側では nedit や xterm 。 私の経験上、これでうまく行きます。
Copyright (c) 2001 Christoph Pfisterer, Copyright (c) 2001-2020 The Fink Project. You may distribute this document in print for private purposes, provided the document and this copyright notice remain complete and unmodified. Any commercial reproduction and any online publication requires the explicit consent of the author.
Generated from $Fink: x11.ja.xml,v 1.17 2023/08/04 5:08:13 nieder Exp $