LPIC あずき本v5.0 ch8 ユーザーインタフェースとデスクトップ

LPICLinux勉強メモ

出典: 

Xのインストールと設定

GUIを実現する技術

  • X Window System(X, X11)

    • 実装

      • XFree86

        • かつての標準的実装
        • フリー
      • X.Org

        • 現在の主流
        • XFree86からの派生
    • C-S構成

      • Xサーバ

        • ハードウェアの管理

          • モニター
          • ビデオカード
          • キーボード
        • 手元のホストマシンで動かすやつ
      • Xクライアント

        • ユーザーアプリケーション

          • Webブラウザ等
          • リモートホストで動かす可能性があるやつ
          • サーバと同じマシンで動かしてもいい
      • 一般的な「サーバー」「クライアント」の配置と逆
    • 太古の昔からある

      • 現在のコンピュータ環境で利用するには無理が出てきている
  • Wayland

    • プロトコル名・Linux用ライブラリ名
    • まったく新しい仕組み
    • ウィンドウマネージャ

      • ハードウェアやグラフィックを管理
    • クライアント

      • グラフィックライブラリ呼び出す
      • Waylandコンポジタと連携する

        • コンポジット型ウィンドウマネージャ

X.Orgの設定

  • LPIC的には/etc/X11/xorg.confで設定することになっている

    • 現在その必要は殆ど無い
    • 手元のUbuntu18.04環境ではファイルが存在しなかった
  • /etc/X11/xorg.conf.d/ディレクトリ下に複数の*.confが配置されることも
  • セクションごとにあれこれ設定する
セクション 説明
Files フォントやカラーデータベースファイルのパス
Module ダイナミックモジュールの設定
InputDevice キーボードやマウスなどの入力装置の設定
InputClass 入力装置の「クラス」に適用される設定
Device ビデオカードの設定
Monitor モニターの設定
Modes ビデオカードの設定
Screen ディスプレイの色深度や画面サイズの設定
ServerLayout 入出力デバイスとスクリーンの指定
  • 設定は難解。補助ツールがある
  • ハードウェアをスキャンしてxorg.confファイルを自動生成できる
Xorg -configure
  • 駄目
/usr/lib/xorg/Xorg.wrap: Only console users are allowed to run the X server
  • /etc/X11/Xwrapper.configでユーザが絞られている
# Xwrapper.config (Debian X Window System server wrapper configuration file)
#
# This file was generated by the post-installation script of the
# xserver-xorg-legacy package using values from the debconf database.
#
# See the Xwrapper.config(5) manual page for more information.
#
# This file is automatically updated on upgrades of the xserver-xorg-legacy
# package *only* if it has not been modified since the last upgrade of that
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command as root:
#   dpkg-reconfigure xserver-xorg-legacy
allowed_users=console
  • ちゃんと動くと/root/xorg.conf.newファイルが生成される
  • ためす
X -config /root/xorg.conf.new
  • マウスポインタだけの画面が表示されれば、最低限の設定ができている
  • 項目を設定したら/etc/X11/xorg.confを上書きして設定了
  • ログファイル

    • X

      • /var/log/Xorg.0.log
    • デスクトップアプリケーション

      • ~/.xsession-errors

Xサーバの起動

  • startxで起動

    • xinitが実行される
    • /etc/X11/xinit/xinitrcスクリプトが実行される

/etc/X11/xinit/xinitrc

#!/bin/sh

# /etc/X11/xinit/xinitrc
#
# global xinitrc file, used by all X sessions started by xinit (startx)

# invoke global X session script
. /etc/X11/Xsession

/etc/X11/Xsession抜粋

SYSSESSIONDIR=/etc/X11/Xsession.d
...

# sanity check; is our session script directory present?
if [ ! -d "$SYSSESSIONDIR" ]; then
  errormsg "no \"$SYSSESSIONDIR\" directory found; aborting."
fi
...

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
  set -e
fi
  • /etc/X11/Xsession.d/ディレクトリ下のシェルスクリプトが実行される

ネットワーク経由でのXの利用

  • XサーバーとXクライアントを別マシンで動かす

    • ホストでサーバ、リモートホストでクライアントを動かすことに注意
  • xhostコマンド

    • XクライアントがXサーバを利用できるよう許可を与える
xhost -help
usage: xhost [[+-]hostname ...]
オプション 説明
なし アクセス制御が有効か無効かの表示
[+]name 指定のホストをXサーバ許可リストに追加
-name 指定のホストをXサーバ許可リストから削除
+ アクセス制御無効化 = 全ホスト許可
- アクセス制御有効化
  • 例) リモートホストremotepcでrxvtを起動し、自分のホストlocalpcに接続されているディスプレイに表示する

    1. localpcでxhost +remotepc
    2. remotepcでexport DISPLAY=localpc:0

      • 0はデフォルトのディスプレイ
      • デフォルト:0
    3. remotepcでrxvt &

コラム: X11フォワーディング

  • SSHの機能
  • SSHで接続した先のホスト(SSHサーバ)のGUIアプリケーションを手元のホスト(SSHクライアント)で使用できる

グラフィカルデスクトップ

ディスプレイマネージャ

  • GUIでログイン画面を表示し、ユーザー認証を行う
  • デフォルトログインをGUIにする例

    • Ubuntu標準のLightDM
systemctl enable lightdm.service

ウィンドウマネージャ

  • Xの外観制御

    • UIとかがらりと変わる

デスクトップ環境

  • 統合デスクトップ環境

    • ウィンドウマネージャも含め、アプリケーションまで揃えて統一的な操作を提供
  • 代表例

    • GNOME
    • KDE Plasma
GNOME KDE Plasma
テキストエディタ gedit KEdit
端末 GNOME端末 Konsole
ファイルマネージャ Nautilus Dolphin
GUIツールキット GTK+ Qt
ディスプレイマネージャ GDM SDDM
ウィンドウマネージャ Mutter KWin
標準採用 RedHat, CentOS, Fedora, Ubuntu openSUSE, Slackware, Kubuntu
  • かるいやつ

    • Xfce
    • LXDE: Lightweight X11 Desktop Environment

      • Raspbianで標準採用されてるやつ
    • MATE

      • GNOME2からフォーク

        • GNOME3を受け入れなかった者たちによる
      • マテ茶の「マテ」

リモートデスクトップ

  • 手元のWindowsのデスクトップからリモートのLinuxのデスクトップを操作したりできるやつ
  • 仮想デスクトップ環境

    • サーバ側で複数のデスクトップ環境を実行
    • 集中管理

      • アプリケーション
      • データ
      • セキュリティ
    • thin-clientなかんじ

VNC: Virtual Network Computing

  • クロスプラットフォームのリモートデスクトップソフトウェア

    • Windows
    • macOS
    • Linux
  • 操作される側: VNCサーバ起動
vncserver :1
  • 1はディスプレイ番号
  • 終了
vncserver -kill :1
  • 操作する側: VNCクライアント起動

RDP: Remote Desktop Protocol

  • Windows標準のリモートデスクトッププロトコル
  • Linuxデスクトップ上にWindowsのデスクトップを表示できる
  • Windows側で許可設定必要

SPICE: Simple Protocol for Independent Computing Environment

  • 画面転送プロトコル
  • オープンソース
  • VNCにない多数機能に対応しているそうな

    • 通信の暗号化
    • マルチモニタ

XDMCP: X Display Manager Control Protocol

  • ディスプレイマネージャをネットワーク越しに利用できるプロトコル
  • Xサーバとディスプレイマネージャとの間で使われる
  • 暗号化がない

    • SSHを介して利用する等が必要

アクセシビリティ

  • AT: Assistive Technology

    • 障がい者を支援するさまざまなソフトウェア
  • Accessibility

    • ユーザ補助機能全般をさす言葉

アクセシビリティの設定

スティッキーキー(固定キー)

  • 複数キーを同時に押すのが困難なユーザー向け
  • ラッチ

    • 修飾キーが押しっぱなし状態になる
    • 非修飾キーを押下したら解除
  • ロック

    • 修飾キーを連続で押すと押しっぱなし状態になる
    • 同じ修飾キーを再度押すまで継続

スローキー

  • 正確にキーを入力できないユーザー向け
  • キー押下を認識する時間を調整
  • キー押下に合わせてビープ音

バウンスキー

  • 連続入力を無視するやつ

    • debounceみたいなかんじ

トグルキー

  • 光るキーの視認が難しいユーザー向け

    • NumLock
    • CapsLock
    • ScrollLock
  • ビープ音を鳴らす

    • 有効化時: 1回
    • 無効化時: 2回

マウスキー

  • マウスを扱うのが困難なユーザー向け
  • マウスの代わりにテンキーでカーソル移動・クリック操作