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に接続されているディスプレイに表示する
- localpcで
xhost +remotepc
-
remotepcで
export DISPLAY=localpc:0
- 0はデフォルトのディスプレイ
- デフォルト
:0
- remotepcで
rxvt &
- localpcで
コラム: 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回
マウスキー
- マウスを扱うのが困難なユーザー向け
- マウスの代わりにテンキーでカーソル移動・クリック操作