最近はArchlinuxをいじって遊んでいます.今日はZoomでオンライン会議している時に「今Archlinuxで繋いでるんですよwwww」と自慢するためにデスクトップ環境を構築します*1.
デスクトップ環境に関する用語
- デスクトップ環境
- ウィンドウマネージャ
- GUIにおけるウィンドウの位置,見た目を管理する
- デスクトップ環境の一部として提供される場合が多い
- ディスプレイサーバ(ウィンドウシステム)
- ディスプレイマネージャ
- ブートプロセスの最後に表示され,ログイン画面を構成する
- ディスプレイサーバを起動しセッションを開始する
- 代表的なのはCDM, GDM, LightDMなど
ディスプレイサーバをインストール
今回はX Window Systemの実装であるXを利用します.
$ sudo pacman -S xorg-server
ビデオドライバの導入
ビデオカードを確認する
$ lspci | grep -e VGA -e 3D 00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) 01:00.0 VGA compatible controller: NVIDIA Corporation GF108GLM [Quadro 1000M] (rev a1)
自分のマシンでは2種類あるようです.
インストール
NVIDIAとかいう謎の企業のビデオチップはたまにLinuxと問題を起こすらしいので,今回はチキってIntelチップに対するドライバを利用します.
$ sudo pacman -S xf86-video-intel
ディスプレイマネージャの導入
lightdmのインストール
今回はlightdmとそのデフォルトgreeter(認証情報を入力するGUI)を利用します.
$ sudo pacman -S lightdm lightdm-gtk-greeter
有効化
$ sudo systemctl enable lightdm
この状態でリブートするとログイン画面が出てきますが,正しいアカウント情報を入力してもfailed to start session
というエラーになり,先に進めなくなってしまいます.これはまだウィンドウマネージャを導入していないためです.
ctrl + alt + {F2~F6のいずれか}
を入力することで,CUIでのログイン画面に切り替わるので,そこからログインして設定を続行できます.
脱線: ctrl+alt+Fxについて
これはgettyという端末管理の仕組みを利用しています.Archlinuxにおけるデフォルトのgetty実装としてagettyというパッケージがutil-linuxに含まれており,システムインストール時に導入したbaseパッケージに同包されています.
agettyは物理端末or仮想端末からのログインを受け付ける際に,設定やログインプロンプトの表示を行います.Archlinuxではブート時にデフォルトで6つの仮想端末が起動し,それぞれctrl + alt + Fx
のxに対応しています..
デスクトップ環境の導入
軽量,省エネと言われているLXDEを利用します.
$ sudo pacman -S lxde
グループでインストールを行うことで,LXDEがデフォルトで利用するウィンドウマネージャのopenboxも同時にインストールされます.
LXDEをインストールすると,ディスプレイマネージャが読み込むXセッションのリストにLXDE.desktopが追加されます./usr/share/xsessions
で確認することができます.
$ ls /usr/share/xsessions/ LXDE.desktop openbox.desktop openbox-kde.desktop
Xの起動方法について
ざっくり2パターンあります.
- xinitから起動
- ディスプレイマネージャから起動
後者を利用します.LightDMのインストール時点でセットアップが完了しているので特にすることはありません.
(オプション)キーボード関連
好みや必要性に応じてキーマップの設定を変更します.
$ sudo vim /usr/share/X11/xorg.conf.d/50-mypref.conf
Section "InputClass" Identifier "Keyboard Setting" MatchIsKeyboard "yes" Option "XkbLayout" "jp" Option "XkbOptions" "ctrl:nocaps" EndSection
キーマップをJP配列にして,CapsLockをCtrlにしています.
起動
ブートプロセスの最後にLightDMによるGUIのログイン画面が表示されます.右上の方にあるアイコンをクリックすると,Xのセッションを選択できます(/usr/share/xsessions/*.desktop
と対応します).
*1:実は公式でもしっかりサポートされています. https://bit.ly/2XfqYsB