第7章 X Windowシステム

目次

7.1. 重要パッケージ
7.2. デスクトップ環境の設定
7.2.1. Debianメニュー
7.2.2. Freedesktop.orgメニュー
7.2.3. GNOMEデスクトップ環境下のDebianメニュー
7.3. サーバー/クライアント関係
7.4. Xサーバー
7.4.1. Xサーバーの(再)設定
7.4.2. Xサーバーへの接続方法
7.5. X Windowシステムの起動
7.5.1. gdmでXセッションをスタート
7.5.2. Xセッションのカスタム化(古典的方法)
7.5.3. Xセッションのカスタム化(新方法)
7.5.4. リモートXクライアントをSSH経由で接続
7.5.5. インターネット経由のセキュアーなXターミナル
7.6. X Windowでのフォント
7.6.1. 基本的フォント
7.6.2. 追加のフォント
7.6.3. CJKフォント
7.7. Xアプリケーション
7.7.1. Xオフィスアプリケーション
7.7.2. Xユーティリティーアプリケーション
7.8. Xトリビア
7.8.1. Xでのキーマップとポインターボタンのマッピング
7.8.2. 古典的Xクライアント
7.8.3. Xターミナルエミュレーター — xterm
7.8.4. Xクライアントをrootで実行

Debianシステム上のX WindowシステムX.Org由来のソースに基づいています。2009年7月現在、それはX11R7.1(etch)とX11R7.3(lenny)とX11R7.3(squeeze)とX11R7.4(sid)です。

7.1. 重要パッケージ

インストールを簡略化するための(メタ)パッケージが少々あります。

表7.1 X Windowのためのキーとなる(メタ)パッケージのリスト

(メタ)パッケージ ポプコン サイズ 説明
xorg * I:48 56 Xライブラリー、Xサーバー、フォントセット、基本的なXクライアントとユーティリティーの集合(メタパッケージ)
xserver-xorg * V:33, I:55 276 このパッケージはXサーバーのフルスイーツとその設定
xbase-clients * V:7, I:52 140 Xクライアントの雑多な集合
x11-common * V:46, I:92 568 X Windowシステムのためのファイルシステムインフラ
xorg-docs * I:9 5124 X.Orgソフトウエアースイーツの雑多な文書
xspecs * I:1.3 6504 Xプロトコルや拡張やライブラリーの技術スペック
menu * V:28, I:55 2028 メニューに対応しているアプリケーションに関してDebianメニューを生成
gksu * V:25, I:49 176 su(1)かsudo(8)のGtk+フロントエンド
menu-xdg * I:52 76 Debianメニュー構造をfreedesktop.orgのxdgメニュー構造に変換
xdg-utils * V:14, I:48 256 freedesktop.orgによって提供される統合デスクトップ環境のためのユーティリティー
gnome-desktop-environment * I:30 20 標準のGNOMEデスクトップ環境(メタパッケージ)
kde-core * I:8 NOT_FOUND コアのKDEデスクトップ環境(メタパッケージ)
xfce4 * I:5 40 Xfce軽量デスクトップ環境(メタパッケージ)
lxde-core * I:2 36 LXDE軽量デスクトップ環境(メタパッケージ)
fluxbox * V:0.9, I:3 4280 Fluxbox: 自由自在に設定可能でリソース消費が少ないXウィンドウマネージャー

Xの基本に関しては、X(7)とthe LDP XWindow-User-HOWTOを参照下さい。

7.2. デスクトップ環境の設定

デスクトップ環境は、通常Xウィンドウマネージャーとファイルマネージャーと互換性あるユーティリティープログラムのスイートの組み合わせです。

GNOMEKDEXfceLXDE等の充実したデスクトップ環境aptitudeのタスクメニューを使って設定できます。

[ティップ] ティップ

タスクメニューはDebianのunstable/testing環境下では最新のパッケージの変遷状態を反映していないかもしれません。そのような状況ではパッケージ間のコンフリクトを避けるためにaptitude(8)のタスクメニューの下でいくつかの(メタ)パッケージを非選択にする必要があります。(メタ)パッケージを非選択にする場合には、それらに依存関係を提供しているパッケージが自動削除されないように特定のパッケージを手動選択しなければいけません。

上記と違う方法として、Fluxbox等のXウィンドウマネージャーだけを使って簡単な環境を設定する事もできます。

Xウィンドウマネージャーやデスクトップ環境のガイドはXのためのウィンドウマネージャーを参照下さい。

7.2.1. Debianメニュー

Debianメニューシステムmenuパッケージのupdate-menus(1)を使って、テキストとXの両指向のプログラムに関して一般化されたインターフェースを提供します。各パッケージは"/usr/share/menu/"ディレクトリーにメニューデーターをインストールします。"/usr/share/menu/README"を参照下さい。

7.2.2. Freedesktop.orgメニュー

Freedesktop.orgのxdgメニューシステム対応の各パッケージは"/usr/share/applications/"の下の"*.desktop"で提供されるそのメニューデーターをインストールします。Freedesktop.orgスタンダード対応の現代的デスクトップ環境はxdg-utilsパッケージを使ってこれらのデーターからそれぞれのメニューを生成します。"/usr/share/doc/xdg-utils/README"を参照下さい。

7.2.3. GNOMEデスクトップ環境下のDebianメニュー

GNOMEデスクトップ環境下で伝統的なDebianメニューにアクセスするにはmenu-xdgをインストールし、"System" → "Preference" → "Main Menu"とし、"Debian"のボックスをチェックします。

[ティップ] ティップ

Freedesktop.orgスタンダード対応の他の現代的デスクトップ環境でも同様の対応が必要かもしれません。

7.3. サーバー/クライアント関係

X Windowシステムはサーバーとクライアントのプログラムの組み合わせとして起動されます。ローカルリモートと言う言葉に対応するサーバークライアントと言う言葉の意味に注意を払う必要があります。

表7.2 サーバー/クライアントの用語法のリスト

タイプ 説明
Xサーバー ユーザーのディスプレーや入力デバイスが接続されたローカルホスト上で実行されるプログラム。
Xクライアント データーを処理しXサーバーへ話しかけるリモートホスト上で実行されるプログラム。
アプリケーションサーバー データーを処理しクライアントへ話しかけるリモートホスト上で実行されるプログラム。
アプリケーションクライアント ユーザーのディスプレーや入力デバイスが接続されたローカルホスト上で実行されるプログラム。

7.4. Xサーバー

Xサーバーの情報はxorg(1)を参照下さい。

7.4.1. Xサーバーの(再)設定

[注記] 注記

Xサーバー(lenny以降)は、その設定に"/etc/X11/xorg.conf"からの情報よりHALD-bus等の標準化されたOSサービスからの情報を使うように書き換えられています。このため"/etc/X11/xorg.conf"の内容は減ってきています。Xサーバーの移行問題の回避をする必要があるかもしれません。

次のようにするとdexconf(1)を使って新たな"/etc/X11/xorg.conf"ファイルが生成してXサーバーが(再)設定されます。

# dpkg-reconfigure --priority=low x11-common
# dpkg-reconfigure --priority=low xserver-xorg

この"/etc/X11/xorg.conf"ファイルを手動編集してはいるが自動的にファイルを更新したい場合には、次のコマンドを実行します。

# sudo dpkg-reconfigure -phigh xserver-xorg

あなたのモニターのスペックに関して注意深く確認します。大きな高解像度のCRTモニターの場合、チラつきを軽減するためにモニターの許容する限りできるだけ高いリフレッシュレート(85 Hzなら十二分、75 Hzで十分)設定することが望ましい。LCDモニターの場合、その低速反応性のためにより低速の標準リフレッシュレート(60 Hz)設定で通常問題はありません。

[注記] 注記

あなたのモニターシステムのハードウエアーを破壊するかもしれないので、高過ぎるリフレッシュレートを使わないように注意して下さい。

7.4.2. Xサーバーへの接続方法

"Xサーバー" (ディスプレー側)が"Xクライアント" (アプリケーション側)からの接続を許可するようにするにはいくつかの方法があります。

表7.3 Xサーバーへの接続方法のリスト

方法 パッケージ ポプコン サイズ ユーザー 暗号化 適切な用途
xhostコマンド xbase-clients * V:7, I:52 140 非確認 いいえ 非推奨
xauthコマンド xbase-clients * V:7, I:52 140 確認済み いいえ パイプ経由のローカル接続用
ssh -Xコマンド openssh-client * V:52, I:99 2076 確認済み はい リモートネットワーク接続用
GNOMEディスプレーマネージャー gdm * V:29, I:41 15207 確認済み いいえ(XDMCP) パイプ経由のローカル接続用
KDEディスプレーマネージャー kdm * V:9, I:13 4116 確認済み いいえ(XDMCP) パイプ経由のローカル接続用
Xディスプレーマネージャー xdm * V:0.7, I:2 688 確認済み いいえ(XDMCP) パイプ経由のローカル接続用
WindowMakerディスプレーマネージャー wdm * V:22, I:84 1964 確認済み いいえ(XDMCP) パイプ経由のローカル接続用
LTSPディスプレーマネージャー ldm * V:0.02, I:0.11 308 確認済み はい リモートSSHネットワーク接続用(シンクライアント)

[警告] 警告

暗号手法を使っている等といった非常に良い理由無しには、X接続のためにセキュアーされていないネットワーク経由のリモートTCP/IP接続を使ってはいけません。暗号化無しのリモートTCP/IPソケット接続は盗聴の被害に会いやすく、Debianシステムではデフォールトで無効化されています。"ssh -X"を使います。

[警告] 警告

セキュアーされていないネットワーク経由でXDMCP接続も使ってはいけません。XDMCP接続は、UDP/IP経由で暗号化せずデーターを送信するので盗聴攻撃を受けやすいです。

[ティップ] ティップ

もし完全にセキュアーな環境の中では、"/usr/share/gdm/defaults.conf"をオーバーライドするように"/etc/gdm/gdm.conf" 中に"DisallowTCP=false"と設定し、"find /etc/X11 -type f -print0 | xargs -0 grep nolisten"で見つかる行から"-nolisten"を削除することでリモートTCP/IP接続を無理やり有効にする事ができます。

[ティップ] ティップ

LTSPは、Linuxターミナルサーバープロジェクトのことです。

7.5. X Windowシステムの起動

X WindowシステムはXサーバーとそれに接続するXクライアントの組み合わせのXセッションとしてよく起動されます。通常のデスクトップ環境ではそれらの両方ともワークステーション上で実行されます。

X sessionは次で起動されます。

  • コマンドラインからのstartxコマンド
  • "/etc/rc?.d/"ディレクトリー("?"はランレベルに対応)中の最後にある起動スクリプトから起動されるXディスプレーマネージャーデーモンプログラム*dmの1つ
[ティップ] ティップ

ディスプレーマネージャーデーモンの起動スクリプトは実際に実行される前に"/etc/X11/default-display-manager"ファイルの内容を確認します。こうすることでXディスプレーマネージャーデーモンプログラムが1つだけが実行されることを確実にします。

[ティップ] ティップ

Xディスプレーマネージャーの初期環境変数に関しては、「X Windowの下でのみ特定ロケール」を参照下さい。

本質的にこれらすべてのプログラムは"/etc/X11/Xsession"スクリプトを実行します。そうすることで、"/etc/X11/Xsession"スクリプトは、"/etc/X11/Xsession.d/"ディレクトリー中のスクリプトをrun-parts(8)風に実行します。これは本質的に次の順番で見つかる最初のプログラムをexec builtinコマンドで実行することです。

  1. もし定義されていた場合には、Xディスプレーマネージャーにより"/etc/X11/Xsession"の引数として指定されたスクリプト。
  2. もし定義されていた場合には、"~/.xsession"か"~/.Xsession"スクリプト。
  3. もし定義されていた場合には、"/usr/bin/x-session-manager"コマンド。
  4. もし定義されていた場合には、"/usr/bin/x-window-manager"コマンド。
  5. もし定義されていた場合には、"/usr/bin/x-terminal-emulator"コマンド。

このプロセスは"/etc/X11/Xsession.options"の内容に影響されます。これらの"/usr/bin/x-*"コマンドが指し示すプログラムが正確に何であるかはDebianのalternativeシステムにより決定され、"update-alternatives --config x-session-manager"等によって変更されます。

7.5.1. gdmでXセッションをスタート

gdm(1)はメニューからXセッションのセッションのタイプ(デスクトップ環境: 「デスクトップ環境の設定」)とか、言語(ロカール: 「ロケール」)を選択できるようにします。それは"~/.dmrc"の中に選択されたデフォールト値を次のように保存します。

[Desktop]
Session=default
Language=ja_JP.UTF-8

7.5.2. Xセッションのカスタム化(古典的方法)

"/etc/X11/Xsession.options"が、"#"文字が前に付いていない"allow-user-xsession"と言う行を含んでいるシステム上では、誰でも"~/.xsession"か"~/.Xsession"を定義することでシステムコードを完全にオーバーライドして"/etc/X11/Xsession"の挙動をカスタム化できます。"~/.xsession"ファイル中の最後のコマンドはあなたの最も好むX window/セッションマネージャーを起動するように"exec some-window/session-manager"という形式の使う必要があります。

7.5.3. Xセッションのカスタム化(新方法)

上記のように完全にシステムコードをオーバーライドすること無しにXセッションをカスタム化する新方法を次に示します。

  • ディスプレーマネージャーgdmは特定のセッションを選択する事ができて、それを"/etc/X11/Xsession"の引数に設定できます。
  • "~/.xsessionrc"ファイルが起動プロセスの一部として実行されます。(デスクトップ非依存)
  • "~/.gnomerc"ファイルが起動プロセスの一部として実行されます。(GNOMEデスクトップのみ)
  • GUIプログラムで提供されるセッション管理ソフトが"~/.gnome2/session"ファイルなどを使うかもしれません。

7.5.4. リモートXクライアントをSSH経由で接続

"ssh -X"を使うことで、ローカルのXサーバーからリモートのアプリケーションサーバーへのセキュアーな接続が可能となります。

コマンドラインオプション"-X"を使わないでおくには、リモートホストの"/etc/ssh/sshd_config"中の"X11Forwarding"エントリーを"yes"と設定します。

ローカルホスト上のXサーバーの起動します。

ローカルホスト上でxtermを開きます。

ssh(1)を実行してリモートサイトとの接続を次のように確立します。

localname @ localhost $ ssh -q -X loginname@remotehost.domain
Password:

リモートホスト上の"gimp"等のXアプリケーションコマンドを次のように実行します。

loginname @ remotehost $ gimp &

ここに書かれた手法はリモートXクライアントがあたかもローカルのUNIXドメインソケット経由でローカル接続されているかのようにして、リモートXクライアントからの出力を表示できるようにします。

7.5.5. インターネット経由のセキュアーなXターミナル

インターネット経由のセキュアーなXターミナルはldm等の専用のパッケージを使えば簡単に実現でき、リモートで実行されるXデスクトップ環境の全てを表示します。あなたのローカル機器はSSH経由で接続されたリモートのアプリケーションサーバーのシンクライアントになります。

あなたの通常のディスプレーマネージャーのgdmに同様の機能を追加するには、"/usr/local/bin/ssh-session"上に実行可能な次に示すようなシェルスクリプトを追加します。

#!/bin/sh -e
# Based on gdm-ssh-session in gdm source (GPL)
ZENITY=$(type -p zenity)
TARGETHOST=$($ZENITY --width=600 \
--title "Host to connect to" --entry \
--text "Enter the name of the host you want to log in to as user@host.dom:")
TARGETSESSION=$($ZENITY --width=600 --height=400 \
--title "Remote session name" --list --radiolist --text "Select one" \
--column " " --column "Session" --column "description" --print-column 2 \
TRUE "/etc/X11/Xsession" "Debian" \
FALSE "/etc/X11/xinit/Xclients" "RH variants" \
FALSE "gnome-session" "GNOME session" \
FALSE "xterm" "Safe choice" \
FALSE "rxvt" "Safe choice" \
FALSE "gnome-terminal" "Safe choice")
echo "Connecting to "$TARGETHOST" with $TARGETSESSION"
/usr/bin/ssh -A -X -T -n "$TARGETHOST" "$TARGETSESSION"
#SSH_ASKPASS=/usr/bin/ssh-askpass /usr/bin/ssh -A -X -T -n "$TARGETHOST" "$TARGETSESSION"

次の内容を"/etc/dm/Sessions/ssh.desktop"に追加します。

[Desktop Entry]
Encoding=UTF-8
Name=SSH
Comment=This session logs you into a remote host using ssh
Exec=/usr/local/bin/ssh-session
Type=Application

7.6. X Windowでのフォント

Debianシステム上のフォント設定は歴史的視点で次のように要約できます。

  • woody以前は、インストールされたフォントを設定するのに特定のマニュアル操作が各アプリケーション毎に必要でした。
  • 2000年に、このフォント設定の自動化のために、Debian固有の接着層を提供するDebianフォントマネージャー(defoma)が作成されました。

    • 各フォントパッケージはアプリケーションに依存しないフォントデーターをdefomaに開示します。
    • 各アプリケーションはそれぞれのパッケージスクリプト経由でこれらのデーターを使いインストールされた各フォントを設定します。
    • Xサーバーに関して、TrueTypeフォントやCIDフォント(CMapsも含めて)を設定するプログラムはx-ttcidfont-confとしてパッケージされています。
  • 2002年に、Fontconfig 2.0がフォントアクセスの設定とカスタム化のためのディストリビューション非依存のライブラリーとして作られました。

    • lennyリリースの時点では、フォントデーターにアクセスするほとんど全てのプログラムがこのシステムを使っているようです。
    • squeeze以降、DebianはFontconfig 2.0のみを使用し、Debian Font Manager (defoma)を廃止します。

X Windowシステムのフォントサポートは次のように要約できます。

  • 旧来のXサーバー側フォントサポートシステム

    • 旧式バージョンのXクライアントアプリケーションとの下位互換性ためにオリジナルの中核X11フォントシステムが提供されています。
    • オリジナルの中核X11フォントはXサーバーにインストールされます。
  • 現代的なXクライアント側フォントサポートシステム

表7.4 X Windowフォントシステムをサポートするパッケージのテーブル

パッケージ ポプコン サイズ 説明
xfonts-utils * V:30, I:71 516 X Windowシステムフォントユーティリティープログラム
libxft2 * V:44, I:75 148 Xft、XアプリケーションとFreeTypeフォントラスター化ライブラリーをつなげるライブラリー
libfreetype6 * V:57, I:87 796 FreeType 2.0フォントラスター化ライブラリー
fontconfig * V:33, I:74 536 Fontconfig、汎用フォント設定ライブラリー — サポートバイナリー
fontconfig-config * I:82 440 Fontconfig、汎用フォント設定ライブラリー — 設定データー
defoma * V:24, I:84 564 Debianフォントマネージャー — 自動フォント設定フレームワーク (lenny)
x-ttcidfont-conf * I:45 156 XのためのTrueTypeとCIDフォンとの設定 (CJKサポート付き)

フォント設定情報は次のようにして確認できます。

  • 中核X11フォントパスに関しては"xset q"
  • fontconfigのフォントデフォールトに関しては"fc-match"
  • fontconfigで利用可能なフォントに関しては"fc-list"
[ティップ] ティップ

"The Penguin and Unicode"は現代的なX Windowシステムの良い概論です。http://unifont.org/にある他の文書もUnicodeフォントやUnicode化されたソフトや国際化やUnicodeのフリー(英語で自由と無償という意味)/リブレ(仏語等で自由の意味、無償という意味は無い)/オープンソース(FLOSS)オペレーティングシステム上での使い勝手の問題に関する良い情報源です。

[ティップ] ティップ

Debianシステム上でフォント設定をするのにはfontconfigインフラを使うべきです。Debianフォントマネージャー(defoma(1))はlennyでのフォントのインストールやX論理フォント記述(XLFD)データーの登録等のみにしか役立ちません。

7.6.1. 基本的フォント

コンピューターフォントには大きくわけて2つのタイプがあります。

  • ビットマップフォント(低解像度のラスター化で良好)
  • アウトラインやストロークフォント(高解像度ラスター化で良好)

ビットマップフォントを拡大するとギザギザのイメージになってしまいますが、アウトラインやストロークフォント拡大するとスムーズなイメージになります。

Debianシステム上のビットマップフォントは、".pcf.gz"というファイル拡張子を持った圧縮されたX11 pcf ビットマップフォントファイルとして提供されます。

Debianシステム上のアウトラインフォントは次で提供されます。

  • ".pfb" (バイナリーフォントファイル)と".afm" (フォントメトリクスファイル)というファイル拡張子を持ったPostScript Type 1フォントファイル。
  • ".ttf"というファイル拡張子を通常持ったTrueType(もしくはOpenType)フォントファイル。
[ティップ] ティップ

OpenTypeTrueTypePostScript Type 1の両方を置き換えることを目指しています。

表7.5 PostScript Type 1フォントへの対応表

フォントパッケージ ポプコン サイズ サンセリフフォント セリフフォント モノスペースフォント フォントの起源
PostScript N/A N/A Helvetica Times Courier Adobe
gsfonts * V:19, I:68 4792 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L URW (Adobe互換サイズ)
gsfonts-x11 * I:30 116 Nimbus Sans L Nimbus Roman No9 L Nimbus Mono L PostScript Type 1フォントでのXフォントサポート。
t1-cyrillic * I:2 5008 Free Helvetian Free Times Free Courier 拡張URW(Adobe互換サイズ)
lmodern * V:4, I:16 45644 LMSans* LMRoman* LMTypewriter* Computer Modern (TeX由来)に準拠したスケーラブルなPostScriptとOpenTypeのフォント

表7.6 TrueTypeフォントへの対応表

フォントパッケージ ポプコン サイズ サンセリフフォント セリフフォント モノスペースフォント フォントの起源
ttf-mscorefonts-installer * I:11 196 Arial Times New Roman Courier New Microsoft (Adobe互換サイズ) (これはnon-freeデーターをインストールします)
ttf-liberation * I:42 1724 Liberation Sans Liberation Serif Liberation Mono Liberationフォントプロジェクト (Microsoft互換サイズ)
ttf-freefont * I:22 4204 FreeSans FreeSerif FreeMono GNU freefont (Microsoft互換サイズ)
ttf-dejavu * I:81 68 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu、Unicode 対応Bitstream Vera
ttf-dejavu-core * I:64 2564 DejaVu Sans DejaVu Serif DejaVu Sans Mono DejaVu、Unicode対応Bitstream Vera (sans, sans-bold, serif, serif-bold, mono, mono-bold)
ttf-dejavu-extra * I:64 5744 N/A N/A N/A DejaVu、Unicode対応Bitstream Vera (oblique, italic, bold-oblique, bold-italic, condensed)
ttf-unifont * I:4 16060 N/A N/A unifont GNU Unifont、Unicode 5.1基本多言語面(BMP)中の全印刷可能文字

[ティップ] ティップ

DejaVuフォントはBitstream Veraフォントに基づきそれを包含します。

7.6.2. 追加のフォント

aptitude(8)を使うと追加のフォントを簡単に見つけられます。

  • "Tasks" → "Localization"の下の短いパッケージ一覧
  • debtagへの正規表現: "~Gmade-of::data:font"を使ってフォントデーターにフィルターされた平坦なパッケージ一覧
  • パッケージ名への正規表現: "~nxfonts-"を使ってBDF (ビットマップ)フォントパッケージにフィルターされた平坦なパッケージ一覧
  • パッケージ名への正規表現: "~nttf-"を使ってTrueType (アウトライン)フォントパッケージにフィルターされた平坦なパッケージ一覧

フリーなフォントは限られていることがあるので、Debianユーザーにとっていくつかの商用TrueTypeフォントをインストールする選択肢があります。こういったことをユーザーが簡単しやすいようにいくつかの利便性のためのパッケージが作成されています。

  • ttf-mathematica4.1
  • ttf-mscorefonts-installer

あなたのフリーなシステムをnon-Freeのフォントで汚染する事になるとはいえ、TrueTypeフォントの選択肢は非常に沢山あります。

7.6.3. CJKフォント

CJK(中日韓)文字のフォントに焦点を当てキーポイントを記します。

表7.7 CJKフォント名中でフォントタイプを示すために使われるキーワード表

フォントタイプ 日本語フォント名 中国語フォント名 韓国語フォント名
サンセリフ gothic, ゴチック hei, gothic dodu m, gulim, gothic
セリフ mincho, 明朝 so ng, ming ba tang

"P"の付いた"VL PGothic"のようなフォント名は、固定幅フォントの"VL Gothic"フォントに対応するプロポーショナルフォントです。

例えば、Shift_JISコードテーブルには7070文字があります。それらは次のように分類できます。

  • JIS X 0201 1バイト文字(191文字、別名: 半角文字)
  • JIS X 0208 2バイト文字(6879文字、別名: 全角文字)

2バイト文字はCJK固定幅フォントを使うコンソールターミナル上で倍の幅を占めます。このような状況に対応するために、ファイル拡張子".hbf"を使うHanziビットマップフォント(HBF)ファイルが1バイトと2バイトの文字を含むフォントのために使えます。

TrueTypeフォントファイルのための空間を節約するために、ファイル拡張子".ttc"を持つTrueTypeフォントコレクションファイルを使う事ができます。

文字の複雑なコード空間をカバーするために、CIDでキーされたPostScript Type 1フォントは"%!PS-Adobe-3.0 Resource-CMap"で始まるCMapファイルとともに使われます。これは通常のXディスプレーではほとんど使われませんがPDFのレンダリング等では使われます(「Xユーティリティーアプリケーション」参照)。

[ティップ] ティップ

ハン(漢)統一のために複数のグリフがいくつかのUnicodeコードポイントに対して期待されています。最も気になることの一つはCJK国間で文字の位置が異なる"U+3001 IDEOGRAPHIC COMMA"と"U+3002 IDEOGRAPHIC FULL STOP"です。"~/.fonts.conf"を使って日本語中心のフォントを中国語中心のフォントより優先順位を上げるよう設定することで日本人は安心できるようになります。

7.7. Xアプリケーション

7.7.1. Xオフィスアプリケーション

基本的なオフィスアプリケーションのリストを記します(OOはOpenOffice.org)。

表7.8 基本的なXオフィスアプリケーションのリスト

パッケージ ポプコン パッケージサイズ タイプ 説明
openoffice.org-writer * V:22, I:44 26468 OO ワードプロセッサ
openoffice.org-calc * V:22, I:44 19632 OO スプレッドシート
openoffice.org-impress * V:18, I:43 2956 OO プレゼンテーション
openoffice.org-base * V:16, I:43 9440 OO データーベース管理
openoffice.org-draw * V:19, I:43 9256 OO ベクトル画像エディター(ドロー)
openoffice.org-math * V:16, I:43 1504 OO 数式エディター
abiword * V:4, I:8 4748 GNOME ワードプロセッサ
gnumeric * V:4, I:9 8108 GNOME スプレッドシート
gimp * V:12, I:47 13472 GTK ビットマップ画像エディター(ペイント)
inkscape * V:11, I:30 87444 GNOME ベクトル画像エディター(ドロー)
dia-gnome * V:1.4, I:3 620 GNOME フローチャートやダイアグラムエディター
planner * V:0.8, I:7 7468 GNOME プロジェクト管理
kword * V:0.8, I:1.9 3744(*) KDE ワードプロセッサ
kspread * V:0.7, I:2 8748(*) KDE スプレッドシート
kpresenter * V:0.5, I:1.6 2184(*) KDE プレゼンテーション
kexi * V:0.2, I:1.9 NOT_FOUND KDE データーベース管理
kivio * V:0.6, I:1.8 NOT_FOUND KDE フローチャートやダイアグラムエディター
karbon * V:0.6, I:1.7 2816(*) KDE ベクトル画像エディター(ドロー)
krita * V:0.7, I:2 11488(*) KDE ビットマップ画像エディター(ペイント)
kplato * V:0.2, I:1.7 6372(*) KDE プロジェクト管理
kchart * V:0.5, I:1.7 2688(*) KDE 画像と図表ドロープログラム
kformula * V:0.4, I:1.4 NOT_FOUND KDE 数式エディター
kugar * V:0.4, I:1.4 NOT_FOUND KDE ビジネスクオリティーのレポートジェネレータ

7.7.2. Xユーティリティーアプリケーション

著者の目に止まった基本的ユーティリティーアプリケーションのリストを記します。

表7.9 基本的Xユーティリティーアプリケーションのリスト

パッケージ ポプコン パッケージサイズ タイプ 説明
evince * V:26, I:40 1104 GNOME 文書(pdf)ビューワー
kpdf * V:6, I:12 NOT_FOUND KDE3 文書(pdf)ビューワー
okular * V:3, I:5 3116 KDE4 文書(pdf)ビューワー
evolution * V:22, I:37 11180 GNOME 個人情報管理(グループウエアと電子メール)
kontact * V:1.8, I:11 1336 KDE 個人情報管理(グループウエアと電子メール)
scribus * V:0.5, I:3 26864 KDE デスクトップページレイアウトエディター
glabels * V:0.2, I:0.8 1088 GNOME ラベルエディター
kbarcode * V:0.06, I:0.4 2176 KDE バーコードとラベル印刷アプリケーション
gnucash * V:0.7, I:2 5912 GNOME 個人会計
homebank * V:0.08, I:0.4 904 GTK 個人会計
kmymoney2 * V:0.2, I:0.9 9504 KDE 個人会計
xsane * V:6, I:39 748 GTK スキャナーのフロントエンド
kooka * V:1.0, I:9 NOT_FOUND KDE スキャナーのフロントエンド

[注意] 注意

evinceokularによってCJKのPDF文書をCmapデーター(「CJKフォント」)を使って表示する際にはpoppler-dataパッケージ(以前はnon-freeだった、「Ghostscript」参照)が必要です。

[注記] 注記

scribus (KDE)のようなソフトウエアーをGNOMEデスクトップ環境にインストールすることは、同様の機能がGNOMEデスクトップ環境に無いので、まったく問題ありません。でも機能の重複するたくさんのパッケージをインストールしすぎるとあなたのメニューが忙しくなってしまいます。

7.8. Xトリビア

7.8.1. Xでのキーマップとポインターボタンのマッピング

xmodmap(1)はX Windowシステム中でのキーマップとポインターボタンのマッピングのためのユーティリティーです。keycodeを知るには、X環境下でxev(1)を実行してキーを押さえます。keysymの意味を知るには、"/usr/include/X11/keysymdef.h"ファイル(x11proto-core-devパッケージ)中のMACRO定義を覗いて下さい。このファイル中の全ての"#define"文はkeysym名に"XK_"を前付けして名づけられています。

7.8.2. 古典的Xクライアント

xterm(1)のような多くの伝統的Xクライアントプログラムは、ジオメトリやフォントや表示を規定する標準化されたコマンドラインオプションの組み合わせを使って起動できます。

それらはその見栄えを設定するのにXリソースデーターベースも用います。Xリソースのシステム全体のデフォールトは"/etc/X11/Xresources/*"の中に保存されており、それらのアプリケーションのデフォールトは"/etc/X11/app-defaults/*"の中に保存されています。これらの設定をスタート点として使います。

"~/.Xresources"ファイルはユーザーのリソース規定を保存するために使われます。ログイン時にこのファイルは自動的にデフォールトのXリソースに合流されます。この設定変更をしてすぐ有効にするには、それを次のコマンドを使ってデーターベースに合流させます。

$ xrdb -merge ~/.Xresources

x(7)とxrdb(1)を参照下さい。

7.8.3. Xターミナルエミュレーター — xterm

xterm(1)に関することは、http://dickey.his.com/xterm/xterm.faq.htmlで学びます。

7.8.4. Xクライアントをrootで実行

[警告] 警告

gdmのようなディスプレーマネージャーのプロンプトにrootと入力してXディスプレー・セッションマネージャーをrootアカウントの下で実行してはいけません。なぜなら、たとえシステム管理業務を行おうとしている時ですら、こういう行為は安全でない(インセキュアー)と認識されているからです。Xアーキテクチャ全てがrootとして実行するとインセキュアーと認識されています。通常ユーザーのような、可能な限り最低レベルの特権を使うように常にするべきです。

例えば"foo"等の特定のXクライアントをrootとして実行する最も簡単な方法は次に記すようにsudo(8)を使うことです。

$ sudo foo &
$ sudo -s
# foo &
$ gksu foo &
$ ssh -X root@localhost
# foo &
[注意] 注意

この目的だけのために上記のようにssh(1)を使うことはリソースの無駄遣いです。

XクライアントがXサーバーに接続するためには次のことに注意下さい。

  • 元のユーザーの"$XAUTHORITY"と"$DISPLAY"環境変数の値は新たなユーザーの環境変数値にコピーされなければいけません。
  • "$XAUTHORITY"環境変数の値で指示されるファイルが新たなユーザーによって読めなければいけません。

gksuパッケージ(ポプコン: V:25, I:49)はルート特権を獲得することに特化したGTK+のGUIパッケージです。それがsu(1)またはsudo(8)をバックエンドに使うように"/apps/gksu/sudo-mode" gconfキーを使って設定できます。gconfキーを編集するにはgconf-editor(1)を使えばできます(メニュー: "Applications" → "System Tools" → "Configuration Editor")。