第7章 GUI システム

目次

7.1. GUI デスクトップ環境
7.2. GUI 通信プロトコル
7.3. GUI インフラストラクチャー
7.4. GUI アプリケーション
7.5. フォント
7.5.1. 基本的なフォント
7.5.2. フォントのラスタ化
7.6. サンドボックス
7.7. リモートデスクトップ
7.8. Xサーバ接続
7.8.1. X サーバ ローカル接続
7.8.2. X サーバリモート接続
7.8.3. X サーバ chroot 接続
7.9. クリップボード

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 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:30, I:236 484 GNOME 個人情報管理 (グループウエアと電子メール)
thunderbird V:52, I:121 224527 GTK Eメールクライアント (Mozilla Thunderbird)
kontact V:1, I:12 2208 KDE 個人情報管理 (グループウエアと電子メール)
libreoffice-writer V:111, I:432 30969 LO ワードプロセッサ
abiword V:1, I:8 3467 GNOME ワードプロセッサ
calligrawords V:0, I:7 6097 KDE ワードプロセッサ
scribus V:1, I:17 30242 KDE PDF ファイルを編集するための デスクトップパブリッシング
glabels V:0, I:3 1338 GNOME ラベルエディター
libreoffice-calc V:104, I:429 25688 LO スプレッドシート
gnumeric V:3, I:15 9909 GNOME スプレッドシート
calligrasheets V:0, I:5 11396 KDE スプレッドシート
libreoffice-impress V:70, I:426 2542 LO プレゼンテーション
calligrastage V:0, I:5 5339 KDE プレゼンテーション
libreoffice-base V:28, I:128 5038 LO データーベース管理
kexi V:0, I:1 7118 KDE データーベース管理
libreoffice-draw V:71, I:427 10405 LO ベクトル画像エディター (ドロー)
inkscape V:15, I:118 99852 GNOME ベクトル画像エディター (ドロー)
karbon V:0, I:6 3610 KDE ベクトル画像エディター (ドロー)
dia V:3, I:23 3908 GTK フローチャートやダイアグラムエディター
gimp V:38, I:255 19303 GTK ビットマップ画像エディター (ペイント)
shotwell V:17, I:252 6237 GTK デジタル写真オーガナイザー
digikam V:2, I:10 293 KDE デジタル写真オーガナイザー
darktable V:4, I:13 30563 GTK 写真家のためのライトボックスと暗室
planner V:0, I:4 1394 GNOME プロジェクト管理
calligraplan V:0, I:2 19013 KDE プロジェクト管理
gnucash V:2, I:8 28309 GNOME 個人会計
homebank V:0, I:2 1218 GTK 個人会計
lilypond V:0, I:7 16092 - 音楽用タイプセッター
kmymoney V:0, I:2 13937 KDE 個人会計
librecad V:1, I:15 8798 Qt アプリ コンピューター支援設計 (CAD) システム (2D)
freecad I:18 53 Qt アプリ コンピューター支援設計 (CAD) システム (3D)
kicad V:2, I:14 235913 GTK 電気回路図と PCB デザインソフトウェアー
xsane V:12, I:145 2339 GTK スキャナーのフロントエンド
libreoffice-math V:52, I:429 1960 LO 数式エディター
calibre V:6, I:28 62167 KDE e-book コンバーターとライブラリーの管理
fbreader V:1, I:9 3783 GTK e-book リーダー
evince V:93, I:313 941 GNOME 文書 (pdf) ビューワー
okular V:40, I:121 17728 KDE 文書 (pdf) ビューワー
x11-apps V:31, I:460 2460 純粋な X アプリ xeyes(1) など。
x11-utils V:195, I:565 651 純粋な X アプリ xev(1), xwininfo(1) 等。

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

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

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

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

パッケージ ポプコン サイズ サンセリフ セリフ 等幅 フォントについての注釈
fonts-cantarell V:213, I:304 572 59 - - Cantarell (GNOME 3, 画面表示)
fonts-noto I:149 31 61 63 40 Noto フォント (Google, multi-lingual with CJK)
fonts-dejavu I:423 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 拡張 Bitstream Vera)
fonts-liberation2 V:125, I:420 15 56 60 40 LibreOffice 用の Liberation フォント (Red Hat, MCMATC)
fonts-croscore V:20, I:41 5274 56 60 40 Chrome OS: Arimo, Tinos と Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:138 2696 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:135 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (Latin文字のみ)
fonts-freefont-ttf V:74, I:220 14460 57 59 40 GNU FreeFont (拡張 URW Nimbus)
fonts-quicksand V:86, I:432 392 56 - - Debian task-desktop, Quicksand (画面表示, Latin文字のみ)
fonts-hack V:24, I:116 2508 - - 40 P ソースコードのためにデザインされたタイプフェース Hack (Facebook)
fonts-sil-gentiumplus I:32 14345 - 54 - Gentium SIL
fonts-sil-charis I:27 6704 - 59 - Charis SIL
fonts-urw-base35 V:164, I:457 15558 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 V:0, I:3 453 - - 33 クールなレトロなターミナルフォント
ttf-mscorefonts-installer V:1, I:51 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:38, I:211 1063 RDP GNOME Remote Desktop サーバー
xrdp V:22, I:25 3173 RDP xrdp, リモート デスクトップ プロトコル (RDP) サーバー
x11vnc V:7, I:25 2107 RFB (VNC) x11vnc, リモート フレームバッファー プロトコル (VNC) サーバー
tigervnc-standalone-server V:4, I:15 2712 RFB (VNC) TigerVNC, リモート フレームバッファー プロトコル (VNC) サーバー
gnome-connections V:0, I:1 1267 RDP, RFB (VNC) GNOME リモート デスクトップ クライアント
vinagre V:3, I:74 4249 RDP, RFB (VNC), SPICE, SSH Vinagre: GNOME リモート デスクトップ クライアント
remmina V:15, I:71 915 RDP, RFB (VNC), SPICE, SSH, ... Remmina: GTK リモート デスクトップ クライアント
krdc V:1, I:17 3873 RDP, RFB (VNC) KRDC: KDE リモート デスクトップ クライアント
guacd V:0, I:0 80 RDP, RFB (VNC), SSH / HTML5 Apache Guacamole: クライアントレス リモート デスクトップ ゲートウェー (HTML5)
virt-viewer V:5, I:52 1284 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 コマンドを使うと可能です。