第13章 X Windowシステム

目次

13.1. X Window システムの手動設定
13.2. フォントのインストールと設定
13.3. 詳細情報

X Window System (X11)は、UNIX系のグラフィカルユーザインタフェースで、事実上の標準となっています。Xはネットワークベースであり、あるホスト上で起動されたアプリケーションを、任意のネットワーク(LAN やインターネット)を介して接続されている他のホスト上で表示できるようにします。この章ではX Window System環境のセットアップと最適化について説明し、SUSE® Linux Enterprise Serverでのフォント使用の背景情報を提供します。

[Tip]IBM System z:グラフィカルユーザインタフェースの設定

IBM System zには、X.Orgがサポートする入出力デバイスはありません。そのため、このセクションで説明している環境設定手順は適用されません。IBM zSeriesの関連情報は、第4章 IBM System zへのインストール (↑導入ガイド)を参照してください。

13.1. X Window システムの手動設定

デフォルトでは、X Windowシステムは「グラフィックカードとモニタの設定」 (第8章 YaSTによるハードウェアコンポーネントの設定, ↑導入ガイド)に説明されているSaX2インタフェースを使って設定されます。代わりに設定ファイルを編集して、手動設定することもできます。

[Warning]X環境設定ファイルに不適切な設定を行うとハードウェアが損傷する可能性があります

X Window Systemの設定は慎重に行う必要があります。設定が完了するまでは、X Window Systemを起動しないでください。システムが正しく設定されていないと、ハードウェアが復元不能な損傷を受ける可能性があります(特に固定周波数モニタの場合)。本書およびSUSE Linux Enterprise Serverの作成者は、このような原因による損傷や損害に対していかなる責任も負いません。この情報は慎重に調査されたものですが、ここで説明する方法がすべて正しく、ハードウェアが損傷を受けないという保証はありません。

コマンドsax2/etc/X11/xorg.confファイルが作成されます。これはX Window Systemの基本設定ファイルです。このファイルには、グラフィックカード、マウス、およびモニタに関する設定がすべて含まれています。

[Important]X -configureの使用

SUSE Linux Enterprise ServerのSaX2で失敗した場合は、X -configureを使ってXセットアップの設定を行ってください。セットアップにバイナリのみの専有ドライバが使用される場合、X -configureは動作しません。

ここでは、設定ファイル/etc/X11/xorg.confの構造について説明します。xorg.confは複数のセクションで構成され、各セクションは設定の特定の側面を取り扱います。各セクションは、キーワードSection <designation>で始まってキーワードEndSectionで終わります。すべてのセクションで、以下の表記規則を使用します。

Section "designation"
  entry 1
  entry 2
  entry n
EndSection 

使用可能なセクションのタイプのリストは表13.1「/etc/X11/xorg.confのセクション」にあります。

表13.1 /etc/X11/xorg.confのセクション

タイプ

意味

Files

フォントとRGBカラーテーブルで使用するパス。

ServerFlags

サーバ動作の汎用スイッチ。

Module

サーバがロードする必要があるモジュールリスト

InputDevice

キーボードや特殊入力デバイス(タッチパッド、ジョイスティックなど)といった入力デバイスを設定します。このセクションで重要なパラメータはDriverと、ProtocolおよびDeviceを定義するオプションです。通常、コンピュータに接続した1つのデバイスごとに1つのInputDeviceがあります。

Monitor

使用するモニタ。このセクションの重要な要素は、後でScreenの定義で参照するID、リフレッシュレートのVertRefresh、および同期周波数の制限(HorizSyncおよびVertRefresh)です。設定値はMHz、kHz、およびHz単位です。通常、サーバはモニタ仕様に対応しないmodelineを拒否します。このため、意図せずに高すぎる周波数がモニタに送信されるのを防止できます。

Modes

特定の画面解像度のmodelineパラメータ。これらのパラメータは、ユーザ指定の値に基づいてSaX2で計算でき、通常は変更不要です。固定周波数モニタに接続する場合などは、この時点で手動で介入します。個々の数値の意味の詳細については、HOWTOファイル/usr/share/doc/howto/en/html/XFree86-Video-Timings-HOWTOを参照してください(howtoenhパッケージ内)。VESAモードを手動で計算する場合は、ツールcvtを使用できます。たとえば、1680x1050@60Hzモニタのmodelineを計算する場合は、コマンドcvt 1680 1050 60を使用します。

Device

特定のグラフィックカード。グラフィックカードは記述名で参照されます。このセクションで利用可能なオプションは、使用するドライバに大きく依存します。たとえば、i810ドライバを使用する場合では、マニュアルページman 4 i810に使用可能なオプションの詳細が記載されています。

Screen

MonitorDeviceを組み合わせて、X.Orgに必要な設定を形成します。Displayサブセクションでは、仮想画面のサイズ(Virtual)、ViewPort、およびこの画面で使用するModesを指定します。

一部のドライバでは、いずれかの場所にあるDisplayセクションにすべての使用設定が存在しなければならないことに注意してください。たとえば、ラップトップを使用している場合で、内部LCDより大きい外部モニタを使用するときは、内部LCDによりサポートされる以上の分解能をModes行の最後に追加することが必要になる場合があります。

ServerLayout

シングルまたはマルチヘッド設定のレイアウト。このセクションにより、入力デバイスInputDeviceと表示デバイスScreenがバインドされます。

DRI

DRI(Direct Rendering Infrastructure)の情報を提供します。


ここでは、MonitorDevice、およびScreenについて詳しく説明します。他のセクションの詳細については、X.Orgおよびxorg.confのマニュアルページを参照してください。

xorg.confには、複数の異なるMonitorおよびDeviceセクションを記述できます。複数のScreenセクションを記述することも可能です。ServerLayoutセクションでは、このセクションのうち使用するものを判定します。

13.1.1. Screenセクション

Screenセクションでは、MonitorセクションとDeviceセクションを組み合わせて、どの解像度とカラー設定を使用するかを決定します。Screenセクションは例13.1「ファイル/etc/X11/xorg.confのScreenセクション」のようになります。

例13.1 ファイル/etc/X11/xorg.confのScreenセクション

Section "Screen"1
  DefaultDepth  162
  SubSection "Display"3
    Depth       164
    Modes       "1152x864" "1024x768" "800x600"5
    Virtual     1152x8646
  EndSubSection
  SubSection "Display"
    Depth       24
    Modes       "1280x1024"
  EndSubSection
  SubSection "Display"
    Depth       32
    Modes "640x480"
  EndSubSection
  SubSection "Display"
    Depth        8
    Modes       "1280x1024"
  EndSubSection
  Device        "Device[0]"
  Identifier    "Screen[0]"7
  Monitor       "Monitor[0]"
EndSection

1

Sectionはセクションタイプを判定し、この場合はScreenになります。

2

DefaultDepthは、色深度が明示的に指定されていない場合にデフォルトで使用する色深度を示します。

3

各色深度に対して、異なるDisplayサブセクションが指定されます。

4

Depthは、このセットのDisplay設定とともに使用する色深度を示します。8151624、および32を指定できますが、すべてのXサーバモジュールまたは解像度がこれらの値をすべてサポートしている訳ではありません。

5

Modesセクションは、可能な画面解像度のリストから成り立っています。Xサーバは、このリストを左から右に検査します。解像度ごとに、XサーバはModesセクション内で適切なModelineを検索します。Modelineは、モニタとグラフィックカード両方の機能に応じて異なります。Monitor設定により、Modelineが決まります。

最初に検出される解像度はDefault modeです。<Ctrl> + <Alt> + +(数字パッド上のキー)を使用すると、リスト内で右隣の解像度に切り替えることができます。以前の値に切り替えるには、<Ctrl>+<Alt>+–(数字パッド上のキー)を使用します。これにより、Xの実行中に解像度を変更できます。

6

Depth 16が指定されているDisplayサブセクションの最終行は、仮想画面のサイズを指します。仮想画面の最大許容サイズは、モニタの最大解像度ではなく、グラフィックカードにインストールされているメモリの容量と必要なカラー設定に応じて異なります。この行を省略すると、仮想解像度は物理解像度と同じになります。最近のグラフィックカードはビデオメモリ容量が大きくなってきているため、きわめて大型の仮想デスクトップを作成できます。ただし、ビデオメモリのほとんどが仮想デスクトップを占めると、3D機能を使用できなくなる場合があります。たとえば、カードのビデオRAMが16MBであれば、仮想画面には8ビットカラー深度で最大4096x4096ピクセルのサイズを設定できます。ただし、特にアクセラレータカードの場合は、仮想画面にメモリすべてを使用しないことをお勧めします。この種のカードのメモリは、複数のフォントやグラフィックキャッシュにも使用されるからです。

7

Identifier行(ここではScreen[0])では、このセクションに以降のServerLayoutセクションで固有に参照できる定義済みの名前を割り当てています。Device行とMonitor行では、この定義に属しているグラフィックカードとモニタを指定しています。これらは、対応する名前または識別子を持つDeviceおよびMonitorセクションにリンクされます。これらのセクションの詳細については、以下を参照してください。

13.1.2. Deviceセクション

Deviceセクションでは、特定のグラフィックカードを記述します。名前が異なっていれば、キーワードIdentifierを使用してxorg.conf内で必要な数だけデバイスエントリを指定できます。複数のグラフィックカードをインストールしている場合、セクションには順番に番号が付けられます。最初のセクションはDevice[0]、2 番目のセクションはDevice[1]となります。次のファイルは、Matrox Millennium PCIグラフィックカードが搭載されているコンピュータのDeviceセクションから抜粋したものです(SaX2が設定)。

Section "Device"
  BoardName     "MGA2064W"
  BusID         "0:19:0"1
  Driver        "mga"2
  Identifier    "Device[0]"
  VendorName    "Matrox"
  Option        "sw_cursor"
EndSection

1

BusIDは、グラフィックカードがインストールされているPCIスロットまたはAGPスロットの定義です。これは、lspciコマンドで表示されるIDと一致します。Xサーバは10進形式による詳細を必要としますが、lspciではこれらが16進形式で表示されます。BusIDの値は、SaX2が自動検出します。

2

Driverの値はSaX2が自動的に検出し、グラフィックカードで使用するドライバを指定します。カードがMatrox Millenniumである場合は、ドライバモジュールはmgaと呼ばれます。Xサーバは、driversサブディレクトリのFilesセクションで定義されているModulePathを検索します。標準インストールでは、これは/usr/lib/xorg/modules/driversディレクトリ、または64ビットオペレーティングシステムディレクトリでは/usr/lib64/xorg/modules/driversディレクトリです。_drv.o名前にはが追加されるので、mgaドライバの場合は、ドライバファイルmga_drv.oがロードされます。

Xサーバやドライバの動作は、その他のオプションを使用して変更することもできます。その一例がDeviceセクションで設定するオプションsw_cursorです。このオプションは、ハードウェアのマウスカーソルを無効にし、ソフトウェアを使用してマウスカーソルを示します。ドライバモジュールによっては、さまざまなオプションを使用できます。各オプションは、ディレクトリ/usr/share/doc/packagepackage_name内のドライバモジュールの記述ファイル内にあります。通常、有効なオプションについてはマニュアルページ(man xorg.confman 4 <ドライバモジュール>、およびman 4 chips)でも確認できます。

グラフィックカードに複数のビデオコネクタがある場合、この1枚のカードの異なるデバイスを単一ビューとして設定できます。SaX2を使用してグラフィックインタフェースをこのように設定します。

13.1.3. MonitorセクションとModesセクション

Deviceセクションと同様に、MonitorセクションとModesセクションでもモニタを1つずつ記述します。設定ファイル/etc/X11/xorg.confでは、Monitorセクションを必要な数だけ指定できます。Monitorセクションはそれぞれ、UseModes行があるModesセクションを参照します。MonitorセクションにModesセクションがない場合、Xサーバは該当する値を一般的な同期の値から計算します。サーバレイアウトセクションでは、どのMonitorセクションが関係するかを指定します。

熟練者以外は、モニタ定義を設定しないでください。modelineは、Monitorセクションで重要な役割を果たします。modelineでは、関連解像度の水平と垂直のタイミングを設定します。モニタ特性、特に許容周波数は、Monitorセクションに格納されます。標準VESAモードは、ユーティリィティcvtにより生成できます。詳細については、マニュアルページcvt man cvtを参照してください。

[Warning]

モニタおよびグラフィックカード機能の詳細な知識がない場合は、modelineを変更しないでください。モニタに重大な損傷が生じることがあります。

独自のモニタ記述を作成する場合は、/usr/share/X11/doc内のドキュメントを熟読する必要があります。PDFおよびHTMLページを参照するために、パッケージxorg-x11-docをインストールします。

modelineの手動指定が必要になることはほとんどありません。最新のマルチシンクモニタを使用している場合、許容周波数と最適解像度は、SaX2 設定のセクションで説明したように、原則としてXサーバがDDCを介してモニタから直接読み込みます。何らかの原因で直接読み込めない場合は、Xサーバに付属するVESAモードの1つを使用してください。このモードは、実際にはグラフィックカードとモニタの大半の組み合わせに機能します。

13.2. フォントのインストールと設定

SUSE Linux Enterprise Serverで追加のフォントをインストールするのは簡単です。フォントを、X 11フォントパスにある任意のディレクトリにコピーするだけです(13.2.1項 「X11コアフォント」を参照)。フォントの使用を有効にするには、インストールディレクトリが/etc/fonts/fonts.confに設定されているディレクトリのサブディレクトリでなければなりません(13.2.2項 「Xft」を参照)。または、このファイルを/etc/fonts/suse-font-dirs.confに入れなければなりません。

以下は、/etc/fonts/fonts.confから抜粋したものです。このファイルは、大半の設定に適合する標準設定ファイルです。また、インクルード済みのディレクトリ/etc/fonts/conf.dを定義します。このディレクトリには、すべてのファイルまたは2桁の数字で始まるシンボリックリンクがfontconfigによりロードされます。この機能の詳細な説明は、/etc/fonts/conf.d/READMEを参照してください。

<!-- Font directory list -->
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir> 
<dir>/opt/kde3/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>

/etc/fonts/suse-font-dirs.confが自動的に生成されて、LibreOffice、Java、またはAdobe Readerなどのアプリケーション(ほとんどの場合サードパーティ製)に付属のフォントを取り込みます。エントリの例を次に示します。

<dir>/usr/lib/Adobe/Reader9/Resource/Font</dir>
<dir>/usr/lib/Adobe/Reader9/Resource/Font/PFM</dir>
 

システム全体に追加フォントをインストールするには、フォントファイルを/usr/share/fonts/truetypeなどの適切なディレクトリに手動コピーしてください(rootとして)。また、この作業は、KDEコントロールセンターでKDEフォントインストーラを使用して行うこともできます。結果は同じです。

フォントを実際にコピーする代わりに、シンボリックリンクを作成することもできます。たとえば、マウントされているWindowsパーティション上にライセンスを取得しているフォントがあり、それらのフォントを使用したい場合は、シンボリックリンクを作成します。次に、SuSEconfig--module fontsコマンドを実行します。

SuSEconfig--module fontsコマンドは、フォントを設定するスクリプト、/usr/sbin/fonts-configを実行します。このスクリプトの詳細については、マニュアルページ(man fonts-config)を参照してください。

手順は、ビットマップフォント、TrueTypeフォントとOpenTypeフォント、およびType1 (PostScript)フォントの場合と同様です。これらのタイプのフォントはすべて、任意のディレクトリにインストールできます。

X.Orgには、従来の[X11コアフォントシステム]と、新たに設計された[Xftおよびfontconfig]システムの2種類のまったく異なるフォントシステムが含まれています。以降のセクションでは、これらの2つのシステムについて簡単に説明します。

13.2.1. X11コアフォント

今日、X11コアフォントシステムは、ビットマップフォントだけでなく、Type1フォント、TrueTypeとOpenTypeフォントなどのスケーラブルフォントもサポートしています。スケーラブルフォントは、アンチエイリアスとサブピクセルレンダリングなしでサポートされており、多数の言語用のグリフを持つ大きいスケーラブルフォントのロードには時間がかかります。Unicodeフォントもサポートされていますが、使用すると時間がかかり、より多くのメモリが必要になります。

X11コアフォントシステムには、その他にも固有の弱点がいくつかあります。時代遅れになっており、これ以上拡張することはできません。下位互換性のために保持されていますが、可能なときはいつでも、新しいXftおよびfontconfigシステムを使用してください。

Xサーバは、操作のためにどのようなフォントが使用可能で、そのフォントがシステム内のどこにあるかを認識する必要があります。この情報は、有効なすべてのシステムフォントディレクトリへのパスを含むFontPath変数で処理されます。これらの各ディレクトリでは、ファイルfonts.dirにそのディレクトリ内で使用可能なフォントのリストがあります。FontPathは、起動時にXサーバにより生成されます。設定ファイル/etc/X11/xorg.confの各FontPath エントリ内で、有効なファイルfonts.dirが検索されます。これらのエントリは、Filesセクションにあります。実際のFontPathを表示するには、xset qを使用します。このパスは、xsetを使用して実行時に変更することもできます。パスを追加するには、xset+fp <path>を使用します。不要なパスを削除するには、xset-fp <path>を使用します。

Xサーバがすでにアクティブである場合、マウントされたディレクトリに新たにインストールされたフォントは、コマンドxsetfp rehashで使用可能にできます。このコマンドは、SuSEconfig--module fontsによって実行されます。コマンドxsetが実行中のXサーバにアクセスする必要がある場合、これは、SuSEconfig--module fontsが実行中のXサーバにアクセスできるシェルから起動されている場合にのみ可能です。これを実行する簡単な方法は、surootパスワードを入力して、root パーミッションを取得することです。suによってXサーバを起動したユーザのアクセス許可がrootシェルに転送されます。フォントが正しくインストールされ、X11コアフォントシステムを介して使用可能かどうか検査するには、コマンドxlsfontsを使用して、すべての使用可能なフォントのリストを表示します。

デフォルトでは、SUSE Linux Enterprise ServerはUTF-8ロケールを使用します。そのため、Unicodeフォントを使用するようにします(xlsfontsの出力中でiso10646-1で終了するフォント名)。使用可能なすべてのUnicodeフォントは、xlsfonts| grep iso10646-1コマンドでリストを表示できます。SUSE Linux Enterprise Serverで使用可能なほとんどすべてのUnicodeフォントには、少なくともヨーロッパ言語に必要なグリフが含まれています(以前はiso-8859-*としてエンコードされていました)。

13.2.2. Xft

最初から、Xftのプログラムは、アンチエイリアスを含むスケーラブルフォントが適切にサポートされるようにしています。Xftが使用された場合、フォントは、X11コアフォントシステムにおけるXサーバではなく、そのフォントを使用するアプリケーションによってレンダリングされます。このようにすると、それぞれのアプリケーションは実際のフォントファイルにアクセスでき、グリフのレンダリング方法を完全に制御できます。これが、多数の言語においてテキストを正しく表示するための基本となっています。フォントファイルに直接アクセスできることは、印刷のためにフォントを組み込んで、画面出力と同じ印刷出力を得るのに役立ちます。

SUSE Linux Enterprise Serverでは、2種類のデスクトップ環境(KDEとGNOME、Mozilla)、Mozilla、および他の多くのアプリケーションが、すでにXftをデフォルトで使用しています。そのため、Xftはすでに、古いX11コアフォントシステムよりも多くのアプリケーションで使用されています。

Xftは、fontconfigライブラリを使ってフォントを検索し、フォントのレンダリング方法を制御します。fontconfigのプロパティは、グローバルな設定ファイル/etc/fonts/fonts.confによって制御されます。特別設定は、/etc/fonts/local.confおよびユーザ固有の設定ファイル~/.fonts.confに追加する必要があります。これらのfontconfig設定ファイルはどちらも、以下の行で始まっていなればなりません。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

さらに、以下の行で終っていなければなりません。

</fontconfig>

フォントを検索するためのディレクトリを追加するには、以下のような行を付加します。

<dir>/usr/local/share/fonts/</dir>

ただし、これは通常、必要ありません。デフォルトで、ユーザ固有のディレクトリ~/.fontsは、すでに/etc/fonts/fonts.confに入っています。その結果、追加のフォントをインストールするには、それらのフォントを ~/.fontsにコピーするだけです。

また、フォントの見栄えを制御する規則を導入することもできます。例えば、次のように入力して、すべてのフォントについてアンチエイリアスを無効にします。

<match target="font">
 <edit name="antialias" mode="assign">
  <bool>false</bool>
 </edit>
</match>

あるいは次のように入力します。

<match target="font">
 <test name="family">
  <string>Luxi Mono</string>
  <string>Luxi Sans</string>
 </test>
 <edit name="antialias" mode="assign">
 <bool>false</bool>
 </edit>
</match>

この場合、特定のフォントのアンチエイリアスが無効になります。

デフォルトで、ほとんどのアプリケーションは、フォント名のsans-serif (または等価のsans)、serif、あるいはmonospaceを使用します。これらは、実際のフォントではなく、言語設定に応じて適切なフォントに解決されるエイリアスにすぎません。

ユーザは、規則を~/.fonts.confファイルに追加して、それらのエイリアスを簡単に好みのフォントに変換できます。

<alias>
 <family>sans-serif</family>
 <prefer>
  <family>FreeSans</family>
 </prefer>
</alias>
<alias>
 <family>serif</family>
 <prefer>
  <family>FreeSerif</family>
 </prefer>
</alias>
<alias>
 <family>monospace</family>
 <prefer>
  <family>FreeMono</family>
 </prefer>
</alias>

ほとんどすべてのアプリケーションで、これらのエイリアスがデフォルトで使用されるので、システム全体が影響を受けます。そのため、個々のアプリケーションでフォント設定を変更しなくても、ほとんどどこででも好みのフォントを簡単に使用できます。

fc-listを使用して、どのフォントがインストールされており、使用可能になっているか調べます。たとえば、fc-listコマンドを実行すると、すべてのフォントのリストが表示されます。使用可能なスケーラブルフォント(:scalable=true)のうち、どのフォントがHebrew (:lang=he)に必要なすべてのグリフ、それらのフォント名(family)、それらのスタイル(style)、それらの幅(weight)、およびフォントを含むファイルの名前を含んでいるか調べるには、次のコマンドを入力します。

fc-list ":lang=he:scalable=true" family style weight

上記のコマンドの出力は、以下のようになります。

Lucida Sans:style=Demibold:weight=200
DejaVu Sans:style=Bold Oblique:weight=200
Lucida Sans Typewriter:style=Bold:weight=200
DejaVu Sans:style=Oblique:weight=80
Lucida Sans Typewriter:style=Regular:weight=80
DejaVu Sans:style=Book:weight=80
DejaVu Sans:style=Bold:weight=200
Lucida Sans:style=Regular:weight=80

fc-listで調べることができる重要なパラメータ:

表13.2 fc-listのパラメータ

パラメータ

意味と有効な値

family

フォントファミリの名前。たとえば、FreeSans

foundry

フォントメーカ。たとえば、urw

style

フォントスタイル。たとえば、MediumRegularBoldItalicHeavy

lang

フォントがサポートする言語。たとえば、ドイツ語にはde、日本語にはja、繁体字中国語にはzh-TW、簡体字中国語にはzh-CN

weight

フォント幅。たとえば、通常では80、ボールドでは200

slant

スラント。通常、なしでは0、イタリックでは100

file

フォントを含むファイルの名前。

outline

アウトラインフォントではtrue、他のフォントではfalse

scalable

スケーラブルフォントではtrue、他のフォントではfalse

bitmap

ビットマップフォントではtrue、他のフォントではfalse

pixelsize

ピクセル単位でのフォントサイズ。fc-listとの関連で、このオプションはビットマップフォントでのみ有効。


13.3. 詳細情報

X11に関する詳細情報を入手するには、xorg-x11-docおよびhowtoenhパッケージをインストールしてください。X11開発の詳細情報は、プロジェクトのホームページhttp://www.x.orgで参照できます。

パッケージxorg-x11-driver-videoで配布されるドライバの大半については、マニュアルページに詳細が記載されてます。たとえば、nvドライバを使用する場合は、man 4 nvでドライバの詳細を参照できます。

サードパーティーのドライバ情報は、/usr/share/doc/packages/<package_name>に記載されています。たとえば、x11-video-nvidiaG01の場合、パッケージのインストール後は、/usr/share/doc/packages/x11-video-nvidiaG01でマニュアルを参照できます。