第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 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:239 486 GNOME 個人情報管理 (グループウエアと電子メール)
thunderbird V:48, I:119 224760 GTK Eメールクライアント (Mozilla Thunderbird)
kontact V:1, I:12 2208 KDE 個人情報管理 (グループウエアと電子メール)
libreoffice-writer V:117, I:435 31474 LO ワードプロセッサ
abiword V:1, I:8 3542 GNOME ワードプロセッサ
calligrawords V:0, I:7 6097 KDE ワードプロセッサ
scribus V:1, I:16 31345 KDE PDF ファイルを編集するための デスクトップパブリッシング
glabels V:0, I:3 1338 GNOME ラベルエディター
libreoffice-calc V:111, I:432 26009 LO スプレッドシート
gnumeric V:4, I:14 9910 GNOME スプレッドシート
calligrasheets V:0, I:5 11396 KDE スプレッドシート
libreoffice-impress V:69, I:429 2646 LO プレゼンテーション
calligrastage V:0, I:5 5339 KDE プレゼンテーション
libreoffice-base V:26, I:121 5003 LO データーベース管理
kexi V:0, I:1 7118 KDE データーベース管理
libreoffice-draw V:72, I:430 10312 LO ベクトル画像エディター (ドロー)
inkscape V:15, I:112 99800 GNOME ベクトル画像エディター (ドロー)
karbon V:0, I:6 3610 KDE ベクトル画像エディター (ドロー)
dia V:2, I:22 3741 GTK フローチャートやダイアグラムエディター
gimp V:50, I:252 19304 GTK ビットマップ画像エディター (ペイント)
shotwell V:17, I:255 6263 GTK デジタル写真オーガナイザー
digikam V:1, I:9 293 KDE デジタル写真オーガナイザー
darktable V:4, I:13 30554 GTK 写真家のためのライトボックスと暗室
planner V:0, I:4 1394 GNOME プロジェクト管理
calligraplan V:0, I:2 19013 KDE プロジェクト管理
gnucash V:2, I:8 28928 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 8963 Qt アプリ コンピューター支援設計 (CAD) システム (2D)
freecad I:18 36 Qt アプリ コンピューター支援設計 (CAD) システム (3D)
kicad V:3, I:14 236461 GTK 電気回路図と PCB デザインソフトウェアー
xsane V:12, I:144 2339 GTK スキャナーのフロントエンド
libreoffice-math V:51, I:432 1898 LO 数式エディター
calibre V:6, I:28 63385 KDE e-book コンバーターとライブラリーの管理
fbreader V:1, I:9 3783 GTK e-book リーダー
evince V:92, I:314 941 GNOME 文書 (pdf) ビューワー
okular V:40, I:123 17728 KDE 文書 (pdf) ビューワー
x11-apps V:31, I:463 2460 純粋な X アプリ xeyes(1) など。
x11-utils V:192, I:566 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:216, I:306 572 59 - - Cantarell (GNOME 3, 画面表示)
fonts-noto I:153 31 61 63 40 Noto フォント (Google, multi-lingual with CJK)
fonts-dejavu I:421 35 58 68 40 DejaVu (GNOME 2, MCM:Verdana, 拡張 Bitstream Vera)
fonts-liberation2 V:130, I:427 15 56 60 40 LibreOffice 用の Liberation フォント (Red Hat, MCMATC)
fonts-croscore V:20, I:40 5274 56 60 40 Chrome OS: Arimo, Tinos と Cousine (Google, MCMATC)
fonts-crosextra-carlito V:21, I:131 2696 57 - - Chrome OS: Carlito (Google, MCM:Calibri )
fonts-crosextra-caladea I:128 347 - 55 - Chrome OS: Caladea (Google, MCM:Cambria ) (Latin文字のみ)
fonts-freefont-ttf V:76, I:218 14460 57 59 40 GNU FreeFont (拡張 URW Nimbus)
fonts-quicksand V:123, I:438 392 56 - - Debian task-desktop, Quicksand (画面表示, Latin文字のみ)
fonts-hack V:24, I:120 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:167, I:472 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 V:0, I:3 452 - - 33 クールなレトロなターミナルフォント
ttf-mscorefonts-installer V:1, I:49 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:35, I:221 1068 RDP GNOME Remote Desktop サーバー
xrdp V:22, I:24 3202 RDP xrdp, リモート デスクトップ プロトコル (RDP) サーバー
x11vnc V:6, I:23 2107 RFB (VNC) x11vnc, リモート フレームバッファー プロトコル (VNC) サーバー
tigervnc-standalone-server V:4, I:15 2768 RFB (VNC) TigerVNC, リモート フレームバッファー プロトコル (VNC) サーバー
gnome-connections V:0, I:1 1356 RDP, RFB (VNC) GNOME リモート デスクトップ クライアント
vinagre V:2, I:68 4249 RDP, RFB (VNC), SPICE, SSH Vinagre: GNOME リモート デスクトップ クライアント
remmina V:15, I:72 953 RDP, RFB (VNC), SPICE, SSH, ... Remmina: GTK リモート デスクトップ クライアント
krdc V:1, I:17 3873 RDP, RFB (VNC) KRDC: KDE リモート デスクトップ クライアント
guacd V:0, I:0 83 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" のような値を取ります。

X コアプロトコルを使うリモートのアプリからローカルの X サーバーへのアクセスは X11 フォワーディング機能を使ってサポートされます。

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

SSH/SSHD に関しては「リーモートアクセスサーバーとユーティリティー (SSH)」を参照下さい。

[警告] 警告

X サーバーへの TCP/IP 接続はセキュリティー上の理由で Debian システム上では無効化されています。回避可能であれば、"xhost +" と単純に設定しこれを有効化してはいけないし、また XDMCP 接続 を有効化してこれを有効化してもいけません。

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

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

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