電気ひつじ牧場

技術メモ

Archlinuxにデスクトップ環境構築

最近は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