第7章 GUI システム

目次

7.1. GUI デスクトップ環境
7.2. GUI 通信プロトコル
7.3. GUI インフラストラクチャー
7.4. GUI アプリケーション
7.5. ユーザーディレクトリー
7.6. フォント
7.6.1. 基本的なフォント
7.6.2. フォントのラスタ化
7.7. サンドボックス
7.8. リモートデスクトップ
7.9. Xサーバ接続
7.9.1. X サーバ ローカル接続
7.9.2. X サーバリモート接続
7.9.3. X サーバ chroot 接続
7.10. クリップボード

Debian システム上のフル機能の GUI デスクトップ環境にはいくつかの選択肢があります。


[ヒント] ヒント

タスク メタパッケージによって選ばれた依存パッケージは、Debian unstable/testing 環境下で最新のパッケージ移行状態と同期していないかもしれません。task-gnome-desktop の場合、以下のようにパッケージ選択を調整する必要があるかもしれません:

  • sudo aptitude -u として aptitude(8) をスタートします。

  • カーサを "Tasks" に移動し "Enter" を押します。

  • カーサを "End-user" に移動し "Enter" を押します。

  • カーサを "GNOME" に移動し "Enter" を押します。

  • カーサを task-gnome-desktop に移動し "Enter" を押します。

  • カーサを "Depends" に移動し "m" (手動で manually 選択) を押します。

  • カーサを "Recommends" に移動し "m" (手動で manually 選択) を押します。

  • カーサを "task-gnome-desktop に移動し "-" を押します。 (drop)

  • パッケージ間コンフリクトを引き起こしている問題あるパッケージを落としながら選択されたパッケージを調整します。

  • "g" を押してインストールを開始します。

本章は Debian のデフォルトデスクトップ環境にフォーカスします: wayland 上の GNOME を提供する task-gnome-desktop

GNOME デスクトップで使用されうる GUI 通信プロトコル:

Wayland アーキテクチャーは X Window アーキテクチャーとどう違うのかという freedesktop.org サイトを確認して下さい。

ユーザー視点からは、相違点は以下のように口語的にまとめられます。

  • Wayland は 同一ホスト上の GUI 通信プロトコル: 新規、簡単、高速、非 setuid root のバイナリー

  • X Window は ネットワーク対応可能な GUI 通信プロトコル: 伝統的、複雑、低速、setuid root のバイナリー

Wayland プロトコルを使うアプリケーションにとって、その表示内容へのリモートホストからのアクセスは VNCRDP によって支えられています。「リモートデスクトップ」を参照下さい。

現代的な X サーバーは MIT 共有メモリー拡張 機能があり、ローカルの X クライアントとローカルの共有メモリーを使って通信します。これはネットワーク透過性の Xlib プロセス間通信チャンネルをバイパスし性能が得られるようにしています。この状況がローカル限定の通信プロトコルの Wayland が作られた背景です。

GNOME ターミナルから起動された xeyes プログラムを使うことで、各 GUI アプリケーションが使う GUI コミュニケーションプロトコルが確認できます。

 $ xeyes
  • Wayland 表示サーバープロトコルを使う "GNOME ターミナル" のようなアプリケーション上にマウスカーソールがある際には、目玉はマウスカーソールにつれて動きません。

  • X Window システムコアプロトコルを使う "xterm" のようなアプリケーション上にマウスカーソールがある際には、X Window アーキテクチャーの分離不十分性がさらされ目玉はマウスカーソールにつれて動きます。

2021年4月の時点で、GNOME や LibreOffice (LO) アプリケーション等の多くの人気ある GUI アプリケーションが Wayland 表示サーバープロトコルに移行しました。xtermgitkchromiumfirefoxgimpdia や KDE アプリケーションが、未だに X Window システムコアプロトコルを使っていると見受けます。

[注記] 注記

Wayland 上の xwayland とネイティブの X Window システムの両方とも、古い X サーバー設定ファイル "/etc/X11/xorg.conf" はシステム上に存在するべきではありません。画像や入力デバイスは DRMKMSudev によるカーネルによって設定されます。 ネイティブの X Window サーバーはこれらを使うように書き換えられました。Linux カーネル文書の"modedb デフォルトビデオモードサポート" を参照下さい。

Wayland 環境上の GNOME のための特記すべき GUI インフラパッケージは以下です。


ここで、"[自動]" は task-gnome-desktop がインストールされた際に自動的にインストールされるパッケージの意味です。

[ヒント] ヒント

gnome-tweaks は不可欠の設定ゆーてぃりてぃーです。例えば:

  • "General" から音量ボリュームの "Over-Amplification" を強制できます。

  • "Keyboard & Mouse" -> "Keyboard" -> "Additional Layout Option" から "Caps" が "Esc" になるよう強制できます。

[ヒント] ヒント

GNOME デスクトップ環境の詳細機能は、Super キー打鍵後、"settings" か "tweaks" か "extensions" とタイプして起動されるユーティリティーで設定できます。

有用な GUI アプリケーションの多くは Debian で利用できるようになりました。対応する機能が GNOME デスクトップ環境下では利用できないため、scribus (KDE) のようなソフトウェアを GNOME デスクトップ環境にインストールするのはまったく問題ありません。しかしながら、機能が重複するパッケージをインストールしすぎるとあなたのシステムが散らかってしまいます。

著者の目に止まった GUI アプリケーションのリストを記します。

表7.3 特筆すべき GUI アプリケーションのリスト

パッケージ ポプコン パッケージサイズ タイプ 説明
evolution V:26, I:236 492 GNOME 個人情報管理 (グループウエアと電子メール)
thunderbird V:46, I:111 273862 GTK Eメールクライアント (Mozilla Thunderbird)
kontact V:1, I:11 2258 KDE 個人情報管理 (グループウエアと電子メール)
libreoffice-writer V:117, I:439 33053 LO ワードプロセッサ
abiword V:0, I:5 3576 GNOME ワードプロセッサ
calligrawords V:0, I:5 6937 KDE ワードプロセッサ
scribus V:1, I:14 32052 KDE PDF ファイルを編集するための デスクトップパブリッシング
glabels V:0, I:2 1283 GNOME ラベルエディター
libreoffice-calc V:111, I:435 28164 LO スプレッドシート
gnumeric V:3, I:11 9958 GNOME スプレッドシート
calligrasheets V:0, I:4 13593 KDE スプレッドシート
libreoffice-impress V:92, I:434 2469 LO プレゼンテーション
calligrastage V:0, I:4 6017 KDE プレゼンテーション
libreoffice-base V:24, I:82 5031 LO データーベース管理
kexi V:0, I:0 7565 KDE データーベース管理
libreoffice-draw V:92, I:434 10985 LO ベクトル画像エディター (ドロー)
inkscape V:12, I:86 113183 GNOME ベクトル画像エディター (ドロー)
karbon V:0, I:5 3962 KDE ベクトル画像エディター (ドロー)
dia V:1, I:19 4086 GTK フローチャートやダイアグラムエディター
gimp V:45, I:232 32135 GTK ビットマップ画像エディター (ペイント)
shotwell V:15, I:255 6334 GTK デジタル写真オーガナイザー
digikam V:1, I:9 302 KDE デジタル写真オーガナイザー
darktable V:4, I:12 35873 GTK 写真家のためのライトボックスと暗室
planner V:0, I:5 1400 GNOME プロジェクト管理
calligraplan V:0, I:3 19241 KDE プロジェクト管理
gnucash V:2, I:7 29748 GNOME 個人会計
homebank V:0, I:1 3196 GTK 個人会計
lilypond V:0, I:6 16924 - 音楽用タイプセッター
kmymoney V:0, I:2 18826 KDE 個人会計
librecad V:1, I:15 9100 Qt アプリ コンピューター支援設計 (CAD) システム (2D)
freecad I:20 110 Qt アプリ コンピューター支援設計 (CAD) システム (3D)
kicad V:3, I:15 163802 GTK 電気回路図と PCB デザインソフトウェアー
xsane V:10, I:135 1512 GTK スキャナーのフロントエンド
libreoffice-math V:83, I:437 1904 LO 数式エディター
calibre V:7, I:27 65174 KDE e-book コンバーターとライブラリーの管理
fbreader V:0, I:7 3783 GTK e-book リーダー
evince V:79, I:300 963 GNOME 文書 (pdf) ビューワー
okular V:41, I:135 4415 KDE 文書 (pdf) ビューワー
x11-apps V:31, I:467 2461 純粋な X アプリ xeyes(1) など。
x11-utils V:217, I:565 651 純粋な X アプリ xev(1), xwininfo(1) 等。

デスクトップ環境が使う、"~/Desktop"、"~/Documents"、...、のようなユーザーディレクトリーのデフォールトの名前はシステムのインストールが使ったロケールに依存します。これらは英語環境の名前に以下でリセットできます:

 $ LANGUAGE=C xdg-user-dirs-update --force 

そしてすべてのデーターを新ディレクトリーに手動で移動させます。xdg-user-dirs-update(1) を参照下さい。

それらは "~/.config/user-dirs.dirs" を編集することで如何なる名前にも設定できます。user-dirs.dirs(5) を参照下さい。

多くの有用なスケーラブルフォントが Debian 上のユーザーに使えるようになっています。ユーザーの関心事は如何に重複を回避するかとか、如何にインストール済みフォントを無効化するかです。こうしないとあなたの GUI アプリケーションのメニューが無用なフォントの選択肢で一杯になります。

Debian システムは FreeType 2.0 ライブラリーを使って多くのスケーラブルフォントフォーマットを画面や印刷用にラスター化します:

文字の大きさやグリフ提供範囲に関する明確な理解に基づき、適切なスケーラブルフォントをユーザーが選択する助けとなることを願って、以下のテーブルを編纂しました。ほとんどのフォントは全てのラテン文字とギリシャ文字とキリル文字をカバーします。最終的にアクティベートされるフォントの選択はあなたの美学によっても影響されます。これらの文字は画面表示にも紙への印刷にも使えます。

表7.4 特記すべき TrueTypeOpenType フォントのリスト

パッケージ ポプコン サイズ サンセリフ セリフ 等幅 フォントについての注釈
fonts-cantarell V:180, I:302 213 59 - - Cantarell (GNOME 3, 画面表示)
fonts-noto I:158 31 61 63 40 Noto フォント (Google, multi-lingual with CJK)
fonts-dejavu I:405 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 拡張 Bitstream Vera)
fonts-liberation2 V:71, I:239 15 56 60 40 LibreOffice 用の Liberation フォント (Red Hat, MCMATC)
fonts-croscore V:21, I:39 5274 56 60 40 Chrome OS: Arimo, Tinos と Cousine (Google, MCMATC)
fonts-crosextra-carlito V:18, I:102 2696 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea V:10, I:97 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (Latin文字のみ)
fonts-freefont-ttf V:78, I:209 14460 57 59 40 GNU FreeFont (拡張 URW Nimbus)
fonts-quicksand V:207, I:460 392 56 - - Debian task-desktop, Quicksand (画面表示, Latin文字のみ)
fonts-hack V:32, I:140 2507 - - 40 P ソースコードのためにデザインされたタイプフェース Hack (Facebook)
fonts-sil-gentiumplus I:30 14345 - 54 - Gentium SIL
fonts-sil-charis I:29 6704 - 59 - Charis SIL
fonts-urw-base35 V:189, I:536 15560 56 60 40 URW Nimbus (Nimbus Sans, Roman No. 9 L, Mono L, MCAHTC)
fonts-ubuntu V:2, I:5 4339 58 - 33 P Ubuntu フォント (画面表示)
fonts-terminus I:4 452 - - 33 クールなレトロなターミナルフォント
ttf-mscorefonts-installer V:0, I:43 85 56? 60 40 Microsoft の非フリーフォントのダウンローダー (以下を参照下さい)

ここで:

  • "MCM" は "metric compatible with fonts provided by Microsoft" の意味です。

  • "MCMATC" は "metric compatible with fonts provided by Microsoft: Arial, Times New Roman, Courier New" の意味です。

  • "MCAHTC" は "metric compatible with fonts provided by Adobe: Helvetica, Times, Courier" の意味です。

  • フォントタイプ列の数字は同一ポイントサイズのフォントに関する、"M" の概算相対幅を表します。

  • モノフォントタイプ列の "P" は、"0"/"O" と "1"/"I"/"l" がはっきり区別しやすいというプログラミング用としての使い勝手の良さを表します。

  • ttf-mscorefonts-installer パッケージはマイクロソフトの "Core fonts for the Web" をダウンロードして、ArialTimes New RomanCourier NewVerdana と ... をインストールします。こうしてインストールされるフォントデーターは non-free のデーターです。

多くのフリーの Latin フォントは、URW Nimbus ファミリーとか Bitstream Veraに、それらへの系統をたどれます。

[ヒント] ヒント

あなたのロケールが、上記のフォントでうまくカバーできないフォントを必要とする場合、aptitude を使って "Tasks" -> "Localization" の下にリストされたタスクパッケージをチェックしましょう。ローカリゼーションタスク中の "Depends:" か "Recommends:" としてリストされたフォントパッケージが主要候補です。

Debian は FreeType をフォントをラスタ化に使用します。そのフォント選択インフラは Fontconfig フォント設定ライブラリーで提供されます。


[ヒント] ヒント

fonts-noto* のようないくつかのフォントパッケージは多すぎるフォントインストールします。普通の使用状況下では、いくつかのフォントパッケージをインストールはしながら無効化したいかもしれません。いくつかの Unicode コードポイントでは 漢統一 (Han unification) のため複数のグリフが期待されていて、Fontconfig ライブラリーが設定がまだだと希望しないグリフが表示されかもしれません。最も気になるケースは CJK 国間の "U+3001 IDEOGRAPHIC COMMA" と "U+3002 IDEOGRAPHIC FULL STOP" です。フォントマネージャー GUI (font-manager) を使いフォントの可用性を設定することによりこのような問題状況は簡単に回避できます。

フォント設定状態は以下のようにしても確認できます。

  • fontconfig のフォントデフォルトに関しては "fc-match(1)"

  • fontconfig で利用可能なフォントに関しては "fc-list(1)"

テキストエディターからフォント設定状態を設定できますが、これは簡単ではありません。fonts.conf(5) を参照下さい。

Linux 上の主に GUI アプリケーションの多くはバイナリー形式で非 Debian ソースから利用可能です。

[警告] 警告

これらのサイトからのバイナリーはプロプライエタリーな non-free ソフトウェアーパッケージが含まれているかもしれません。

各アプリのアップストリームデベロッパーが当該アプリに使っている本来のライブラリーの組み合わせを Debian が提供するライブラリーと独立にアプリに提供することを可能にするので、Debian を使うフリーソフトウェアー愛好家にとってもこれらのバイナリー形式ディストリビューションには一定の存在意義があります。

外部バイナリーを実行する本質的リスクは、Linux の現代的なセキュリティー機能を利用するサンドボックス環境を使うことで低減できます(「Linux のセキュリティ機能」を参照下さい)。

  • AppImage や いくつかのアップストリームサイトからのバイナリーに関しては、手動設定の下で firejail を実行します。

  • FLATHUB からのバイナリーに関しては、 Flatpak の中で実行します。(手動設定不要です。)

  • snapcraf からのバイナリーに関しては、 Snap の中で実行します。(手動設定不要です。デーモンプログラムとコンパチブルです。)

xdg-desktop-portal パッケージは共通のデスクトップ機能への標準化された API を提供します。 xdg-desktop-portal (flatpak) xdg-desktop-portal (snap) を参照下さい。


このサンドボックス環境技術はアプリが制御されたリソースアクセス下で実行されるスマートフォンの OS 上のアプリと非常に似ています。

ウエッブブラウザーのようないくつかの大きな GUI アプリも、より安全にするために内部的にサンドボックス環境技術を使います。

表7.7 特記すべきリモートアクセスサーバーのリスト

Wayland プロトコルを使いリモートホスト上で実行されるデスクトップやアプリへのローカルクライアントからのアクセスは VNCRDP 経由の GNOME リモートデスクトップによってサポートされています。

全ての QEMU 仮想マシンのデスクトップ環境へのアクセスは SPICE (the Simple Protocol for Independent Computing Environments) プロトコルによってサポートされています。

パッケージ ポプコン サイズ プロトコル 説明
gnome-remote-desktop V:110, I:246 2215 RDP GNOME Remote Desktop サーバー
xrdp V:25, I:28 4506 RDP xrdp, リモート デスクトップ プロトコル (RDP) サーバー
x11vnc V:8, I:41 1835 RFB (VNC) x11vnc, リモート フレームバッファー プロトコル (VNC) サーバー
tigervnc-standalone-server V:4, I:14 2967 RFB (VNC) TigerVNC, リモート フレームバッファー プロトコル (VNC) サーバー
gnome-connections V:5, I:112 1599 RDP, RFB (VNC) GNOME リモート デスクトップ クライアント
vinagre V:1, I:30 4249 RDP, RFB (VNC), SPICE, SSH Vinagre: GNOME リモート デスクトップ クライアント
remmina V:14, I:65 971 RDP, RFB (VNC), SPICE, SSH, ... Remmina: GTK リモート デスクトップ クライアント
krdc V:1, I:17 4052 RDP, RFB (VNC) KRDC: KDE リモート デスクトップ クライアント
virt-viewer V:5, I:46 1278 RFB (VNC), SPICE 仮想マシンマネージャー のゲスト OS の GUI 表示クライアント

ローカルホスト上の xwayland も含めた X サーバーにリモートホスト上のアプリが接続する方法がいくつかあります。


ローカルの UNIX ドメインソケット経由でローカル接続することで、X コアプロトコルを使うローカルのアプリはローカルの X サーバーにアクセスできます。これはアクセスクッキーを保持する権限ファイルによって許諾されます。権限ファイルの場所は "$XAUTHORITY" 環境変数により特定され、X ディスプレーは "$DISPLAY" 環境変数により特定されます。普通これらは自動設定されているので、例えば "gitk" の場合以下のように特段のアクションは不要です。

username $ gitk
[注記] 注記

xwayland の場合、XAUTHORITY は "/run/user/1000/.mutter-Xwaylandauth.YVSU30" のような値を取ります。

テキストのクリップボードへのクリップに関しては、「マウス操作」を参照下さい。

グラフィクスのクリップボードへのクリップに関しては、「画像データーツール」を参照下さい。

文字クリップボード (PRIMARY と CLIPBOARD) の操作は、いくつかの CLI コマンドを使うと可能です。