🏔 【随時更新】Arch Linux + Hyprlandの環境整備
はじめに
これは何❓
かれこれ数年くらいArch Linuxをメイン環境として使い続けています。しばらくi3wmを使っていましたがWaylandネイティブなコンポジタであるHyprlandに移行しました。
ここではArch LinuxとHyprlandを使った環境構築の手順や便利ツール、Linuxデスクトップに関連する知見をまとめて随時更新していきます。
方針
おおむね、次のような方針で構築とカスタマイズを行っています。
- CLI/TUIでの操作体系を基本にしつつ必要に応じてシンプルなGUIのツールを導入すること
- カラーテーマをお気に入りのものに統一すること
- 基本操作はキーボードのみで完結できること
Linuxデスクトップの良さとは何か🐧
まず、Linuxデスクトップの特徴として高いカスタマイズ性が挙げられます。WindowsユーザーやmacOSユーザーが壁紙を変えるような感覚でアプリケーションの配色テーマを変更し、システムフォントを変更し、キーバインドを設定し、自分好みの環境を作り込むことができます。
しかしながら、こういったカスタマイズ(いわゆる 盆栽)に時間を掛けるのは骨が折れる作業かもしれません。
それでも、「手に馴染む」「かゆいところに手が届く」環境が手に入ったときの喜びは格別なものです。(むしろ、Linuxをデスクトップとして使い始めてから かゆい と感じる部分に気づけたというか、自分が欲しいUIはこうだ!という感覚が分かってきた感覚があります。)
特に、キーボードを使った操作を特定のコマンドに柔軟に割り当てられるためマウスに手を伸ばさずに高速かつ快適に操作できるところが気に入っています。
あと見た目がハッカーっぽくてカッコいいところですね。ここが一番大事です。
それでは、よいLinux生活を!🐑♥🐧
AURヘルパー paru のインストール
paruの導入
AURのページにあるPKGBUILDをダウンロードし、makepkg -sicを実行するとインストールできる。
以降、パッケージのインストールは paru を使う。
cd "(mktemp -d)"
curl -sL "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=paru"
makepkg -sic
補足
makepkg はArch Linuxのパッケージをビルドするためのツールであり、pacmanパッケージの中に同梱されている。
上記で使ったオプションの意味は次の通り。
-
-s,--syncdeps: 依存パッケージをインストールする。 -
-i,--install: ビルドしたパッケージをインストールする。 -
-c,--clean: パッケージをビルドした後、残ったファイルをクリーンアップする。
詳しくはArch Wikiを参照。
Hyprlandの基本設定
設定ファイルの編集
Hyprlandの設定ファイルは ~/.config/hypr/hyprland.conf にある。
設定に使われるキーワードの一覧は公式ドキュメントのここにある。
設定ファイルを編集したら、hyprctl reload を実行すると設定をリロードできる。
キーバインド
メインのモディファイアキーは規定では SUPER(いわゆるWindows)キーになっている。
左Altキーに変更する場合は次のようにする。
$mainMod = LALT
キーバインドは次のような構文になっている。値にはたとえば $mainModのような変数を使うことができる。
bind = MODS, key, dispatcher, params
設定例:
$terminal = wezterm
$fileManager = thunar
bind = $mainMod, T, exec, $terminal
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod CTRL, Q, exit,
bind = $mainMod, E, exec, $fileManager
hyprland.confで使われるキーシンボルの一覧は、xdbcommonの xkbcommon-keysyms.hというヘッダーファイルに書いてある。
XKB_KEY_の後ろにある名前がシンボル名になる。
アプリケーションランチャー(rofi-wayland)
rofi-wayland をインストールする。
paru -S rofi-wayland
rofi-wayland(rofi)は次のようなコマンドで起動する。-modiは表示するモード -showは起動時に表示するモード
rofi -modi drun,run -show drun # アプリケーションランチャーとして動作させる
rofi -modi window -show window # ウィンドウスイッチャーとして動作させる
hyprland.confでキーバインドをセットすることでキーボード操作のみで素早くアプリケーションの起動やウィンドウの切り替えができる。
$launcher = rofi -modi drun,run -show drun
$windowSwitcher = rofi -modi window -show window
bind = $mainMod, SPACE, exec, $launcher
bind = $mainMod, TAB, exec $windowSwitcher
日本語入力(fcitx5 + mozc)
Linuxで日本語入力を行うには、インプットメソッドエディタ(IME)とインプットメソッドフレームワーク(IMF)それぞれインストールされていて、なおかつ利用するアプリケーションがIMFによりサポートされている必要がある。
- IME: ラテン文字を使って非ラテン文字を入力するためのアプリケーション。代表的なものにGoogle日本語入力から派生したMozc、文節を明示的に指定して変換できるSKK、そしてKKCなどがある。
- IMF: 複数のIMEを簡単に切り替えられるようにするためのアプリケーション。代表的なものにFcitx5、Fcitx、IBus、Uimなどがある。
ここでは、IMFとしてFcitx5を、IMEとしてMozcをインストールする。
paru -S fcitx-im fcitx5-mozc
fcitx5-imはグループパッケージになっており、GTK/Qtをサポートするためのモジュール(fcitx5-gtk/fcitx5-qt)とGUIの設定ツール(fcitx5-configtool)が同梱されている。個別にインストールすることもできるが、まとめて入れておくのが無難と思われる。
次に fcitx5-configtool を起動し、インプットメソッドの一覧から mozc エントリを追加してKeyboardエントリの下になるように配置する。

fcitx5をHyprlandの起動時に自動起動するよう、hyprland.conf に次の行を追加する。
exec-once=fcitx5-remote -r # 設定をリロードする
exec-once=fcitx5 -d --replace # fcitx5をバックグラウンドで起動し、既に起動しているインスタンスがあれば置き換える
FirefoxなどのGUIアプリケーションを起動して Ctrl+Space で日本語入力に切り替えられればOK!
キーボード入力やタッチパッド入力の調整
hyprland.confを次のように編集する。
input {
repeat_delay = 140 # リピート遅延時間
repeat_rate = 50 # リピートレート
kb_layout = us # キーボードレイアウト
#kb_variant =
#kb_model =
#kb_options =
#kb_rules =
follow_mouse = 1 # ウィンドウフォーカスをマウスに追従させる
touchpad {
natural_scroll = yes # タッチパッドの上下操作とスクロール方向を同じ方向にする
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
GTK/Qtやカーソルのテーマ
Linuxでは、GUIの開発ツールキットとしてGTKやQtがよく使われる。デスクトップの見た目に統一感を出すには、GTKとQtそれぞれのテーマ選定し個別に設定する必要がある。
テーマの選定
各種テーマはPlingのサイトから見つけることができる。
次のテーマがカッコよくておすすめ。
GTK
Xorg環境でのGTKテーマ設定方法
i3などのXorg環境では、GTKの設定ファイル ~/.config/gtk-3.0/settings.iniや ~/.gtkrc-2.0などを変更するには、LXDEにも含まれる
lxappearance を使う方法があった。
GUIでテーマの設定を行い、GTKの設定ファイル内の値を自動で読み込ませる(nwg-look + gsettings)
一方、HyprlandではWaylandネイティブで動く nwg-lookというツールを使うことができる。ただし、設定を変更しただけではHyprlandの環境に読み込まれないため、GNOMEの gsettings というコマンドライン設定ツールを使ってセットした値を読み込ませる。
gsettings set org.gnome.desktop.interface gtk-theme <gtk-theme>
gsettings set org.gnome.desktop.interface icon-theme <icon-theme>
gsettings set org.gnome.desktop.interface cursor-theme <cursor-theme>
gsettings set org.gnome.desktop.interface font-name <font-name>
Hyprlandの起動時に自動でテーマを読み込む
settings.ini の内容をgssettingsに渡すスクリプトを作り、Hyprlandの起動時にそれを読み込ませる方法がSway Wikiにあったため紹介する。
まず、nwg-lookとGTKに対応したテーマやアイコン等をインストールしてnwg-lookを使って好みのテーマをセットする。
paru -S nwg-look
paru -S kali-themes papirus-icon-theme matcha-gtk-theme
次に、下記ようなスクリプトを作り、hyprland.confからこれを呼び出すように構成する。
#!/bin/sh
#
# init-gtk.sh
#
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then
echo "GTK config file not exists: ${config}" 1>&2
exit 1
fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep -F 'gtk-theme-name' "${config}" | sed 's/.*\s*=\s*//')"
icon_theme="$(grep -F 'gtk-icon-theme-name' "${config}" | sed 's/.*\s*=\s*//')"
cursor_theme="$(grep -F 'gtk-cursor-theme-name' "${config}" | sed 's/.*\s*=\s*//')"
font_name="$(grep -F 'gtk-font-name' "${config}" | sed 's/.*\s*=\s*//')"
gsettings set "${gnome_schema}" gtk-theme "$gtk_theme"
gsettings set "${gnome_schema}" icon-theme "$icon_theme"
gsettings set "${gnome_schema}" cursor-theme "$cursor_theme"
gsettings set "${gnome_schema}" font-name "$font_name"
#
# hyprland.conf
#
exec = "${XDG_CONFIG_HOME:-${HOME}/.config}/hypr/init-gtk.sh"
Qt
Qtの構成ツールとしてQt5ct, Qt6ct, Kvantum, Kvantum Qt5をインストールし、
Qtに対応したテーマをインストールする。
paru -S qt5ct qt6ct kvantum kvantum-qt5
paru -S kvantum-theme-matchama
Kvantumでテーマを選択し、Qt5ct, Qt6ctにてStyleを「kvantum-dark」に、Standard dialogsを「GTK3」にセットすることで統一感のある見た目になる。


カーソルテーマ
hyprcursor をインストールして、hyprland.confに次の内容を追加する。
paru -S hyprcursor
env = HYPRCURSOR_THEME, Qogir Cursors
env = HYPRCURSOR_SIZE, 24
Polkitと認証エージェント
特権の必要なユーザーアプリケーション(例えばパーティショニングツールのGpartedやKDEパーティションマネージャ、ファイヤウォール構成ツールであるfirewall-configなど)を使うにはPolkitとその認証エージェントが必要となる。今回は認証エージェントとして polkit-gnome を使う。
Polkitと認証エージェントをインストール後、polkit.service を有効化・開始し、hyprland.confにて認証エージェントを自動起動するように構成する。アプリケーションの起動時にパスワードの入力を促すダイアログが出ればOK。

paru -S polkit polkit-gnome
systemctl enable --now polkit.service
# ~/.config/hypr/hyprland.conf
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
GUIファイルマネージャ(Thunar)
ファイル操作は専らシェルでやるかkamiyaa/joshutoやgokechan/lfなどのTUIツールを使っているが、GUIのファイルマネージャもときどき必要になるので入れておく。
GUIのファイルマネージャにはLXDEのPCManFMや KDEのDolphin、GNOMEのNautilusなどがあるが、XFCEのThunarがシンプルで使い勝手がよく気に入っている。
Thunarのインストール
Thunarと、必要であればそのプラグインをインストールする。
paru -S thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman
外部ストレージ・リモートサーバー等へのアクセス(GVfs)
外部ストレージやリモートサーバー、クラウドストレージなどのリソースにアクセスする際はGVfsというGNOMEの仮想ファイルシステムがよく使われる。GVfsはユーザー空間で動作するため、特権を必要とせずにいろいろなリソースに対してローカルのストレージと同じように統合された方法でアクセスすることができる。
paru -S gvfs
外付けのHDD/SSDやUSBメモリなどを自動でマウントする
Thunarでは、リムーバブルメディアを自動でマウントすることができる。
メインメニューの「Edit」→「Preferences」から設定画面を開き、「Advanced」タブにある「Volume Management」の「Configure」と書いてあるリンクからリムーバブルメディアの設定画面を開く。
「Mount removable drives when hot-plugged」にチェックを入れると、リムーバブルメディアのThunarの左側ペインにデバイスが表示されるようになる。


SSH経由で外部のサーバーのファイルシステムにアクセスする
sshfs をインストールして、Thunarのアドレスバーに次のURIを入力することでアクセスできる。
ssh://サーバー名またはIPアドレス
NTFSでフォーマットされたドライブにアクセスする
ntfs-3gをインストールする。
Windowsの共有フォルダ(SMB/CIFS)にアクセスする
gvfs-smb パッケージをインストールして、アドレスバーに次のURIを入力することでアクセスできる。
smb://サーバー名またはIPアドレス/共有フォルダ名
Android端末等のファイルシステムにアクセスする(MTP)
Android端末等とUSB経由でファイルをやりとりするにはMTP: Media Transfer Protocolというプロトコルが使われる。 gvfs-mtpパッケージをインストールし端末とPCを接続後、Android端末の通知領域を開き「ファイル転送」を選択するとThunarから端末のファイルシステムにアクセスすることができる。
ステータスバー(waybar)
Wayland環境では、シンプルなステータスバーである waybar を使うことができる。

waybar パッケージをインストールして、Hyprlandに下記の内容を追記すると自動起動できる。
paru -S waybar
exec-once = waybar -c ~/.config/waybar/waybar.conf
カスタマイズの例はGitHubにあるWikiのexamplesの項で見つけることができる。
Bluetoothを使う(BlueZ)
Linuxにおいて、Bluetoothプロトコルスタックの実装にはBlueZが標準的に使われる。
BlueZのインストールと有効化
bluez と bluez-utils をインストールし、bluetooth.service を有効化する。
paru -S bluez bluez-utils
systemctl enable --now bluetooth.service
サービスを有効化したら systemctl status bluetooth.serviceを実行して、ステータスが 🟢 active (running) となっていることを確認する。
コマンドラインでBluetoothデバイスに接続する(bluetoothctl)
bluez-utilsパッケージに含まれる bluetoothctlを使ってBluetoothデバイスに接続する。コマンドライン引数を指定せずに起動すると対話セッションに入る。(bluetoothctl devicesのように、コマンドライン引数に直接 内部コマンドを指定してもよい。)
基本的な使い方は次の通り。
$ bluetoothctl
[bluetooth]# power on # コントローラの電源をONにする
[bluetooth]# scan on # デバイスのスキャンをONにする
[bluetooth]# devices # デバイスの一覧を取得する
[bluetooth]# pair <接続したいデバイスのMACアドレス> # デバイスとPCをペアリングする
[bluetooth]# connect <接続したいデバイスのMACアドレス> # デバイスに接続する
[bluetooth]# <Ctrl-D>
$
TUIで操作する(bluetui)
linuxmint/blueberryやbluemanなどのGUIフロントエンドがあるが、軽量なTUIフロントエンドである bluetui を使うこともできる。
TUIであればマウスに手を伸ばすことなくデバイスの一覧を見ながら簡単に接続できて便利。
paru -S bluetui

ラップトップのモニターの明るさを調整する(brightnessctl)
ラップトップに備え付けのモニターの明るさを調整するには、brightnessctlを使う。
paru -S brightnessctl
brightnessctlの使い方
コマンドの基本的な使い方は次の通り。
brightnessctl info # デバイスの情報を取得する
brightnessctl get # 現在の明るさの値を取得する
brightnessctl set 50% # 最大値の50%の明るさに変更
brightnessctl set +10% # 現在の明るさより10%明るくする
Hyprlandでキーを割り当てる
hyprland.conf に次の内容を書き hyprctl reload で設定をリロードすると、キーショートカットで明るさを調整できるようになる。
# ~/.config/hypr/hyprland.conf
bind = $mainMod SHIFT, comma, exec, brightnessctl set -5%
bind = $mainMod SHIFT, period, exec, brightnessctl set +5%
対話的なログインUIによるセッション管理を実現する(greetd + tuigreet)
Hyprlandやswayなどのセッションに対話的にログインできるようにするための環境を整える。
そのためには、ログインセッションを管理する「ログインマネージャ」とそのUIを提供する「Greeter」をインストールする必要がある。
ここでは、ログインマネージャのgreetdとコンソールベース(TUI)のGreeterであるtuigreetを使ってみる。もちろん、グラフィカルなGreeterであるgtkgreetやqtgreetなどを使っても良い。
まず、greetdとgreetd-tuigreetをインストールする。
paru -S greetd greetd-tuigreet
次に、/etc/greetd/config.tomlを編集して tuigreetのコマンドを指定する。
tuigreetは --themeオプションの引数でボタンや枠線などの色をカスタマイズできる。ハイライトカラーをシアンやグリーンにすると某映画みたいでカッコいい。
[terminal]
# greetdが実行される仮想コンソールの番号
vt = 1
[default_session]
# greetdに内蔵のGreeterであるagreetyを使う場合
#command = "agreety --cmd /bin/sh"
# tuigreetを使う場合
command = "tuigreet --theme 'border=cyan;container=black;button=cyan' --cmd Hyprland"
#コマンドを実行するユーザー。このユーザーが持つ必要がある権限は、Greeterによって異なる。たとえば、グラフィカルなGreeterでは、ユーザーが `video` グループに属している必要がある。
user = "greeter"
その後、Hyprlandのセッションからログアウトし、greetd.service サービスを有効化する。
問題が発生した場合は、Ctrl+Alt +ファンクションキー(F2など)を押して仮想コンソールを切り替えた後、シェルにログインし直せば良い。
systemctl enable --now greetd.service
ログイン画面が表示されるので F3でセッションをHyprlandに切り替えるか F12 でコマンド Hyprland を指定しユーザー名とパスワードを入力する。Hyprlandが立ち上がればOK!
ドキュメントビューワ(Zathura)
Linuxデスクトップ上でPDFの電子書籍や論文を読みたいことがある。リッチなPDFビューワを使うかブラウザでPDFファイルを直接開く方法もあるが、Zathuraというビューワを使うと操作をキーボードだけで完結できてとても便利。
インストール
paru -S zathura zathura-pdf-mupdf
基本的な使い方
基本的な操作はVimやlessページャに似ている。
また、Zathuraは Ctrl-r キーによるリカラー(白黒反転) や Tabキーを押すと表示されるインデックスモード(文書のアウトラインの表示とジャンプ)にも対応している。
以下に基本的な使い方を示す。
キーボード操作
ナビゲーション(移動)
| 操作 | キー |
|---|---|
| 次のページへ |
J, PgDn
|
| 前のページへ |
K, PgUp
|
| 下にスクロール |
j, Down
|
| 上にスクロール |
k, Up
|
| 左にスクロール |
h, Left
|
| 右にスクロール |
l, Right
|
| 半ページ下/上/左/右にスクロール |
Ctrl-d, Ctrl-u, Ctrl-t, Ctrl-y
|
| 全ページ分スクロール |
Space, Shift-Space, t, Ctrl-f, Ctrl-b, y
|
| 最初のページへ | gg |
| 最後のページへ | G |
| 任意のページへ |
nG(例:10G で10ページ目) |
| 現在ページにスナップ | P |
| ページ内の先頭/末尾へ移動 |
H, L
|
| ジャンプリストを戻る/進む |
Ctrl-o, Ctrl-i
|
| ジャンプポイントを切り替え |
Ctrl-j, Ctrl-k
|
表示とズーム
| 操作 | キー |
|---|---|
| 拡大 |
+, zI
|
| 縮小 |
-, zO
|
| 等倍に戻す |
=, z0
|
| 指定倍率でズーム |
n=(例:150=) |
| 回転 | r |
| リカラー(白黒/反転) | Ctrl-r |
| リロード | R |
| フルスクリーン | F11 |
| プレゼンテーションモード | F5 |
| ステータスバー切り替え | Ctrl-n |
| 入力バー切り替え | Ctrl-m |
文書操作・その他
| 操作 | キー |
|---|---|
| リンクをたどる | f |
| リンク先を表示 | F |
| リンク先をコピー | c |
| 検索(前方/後方) |
/, ?
|
| 検索結果 次/前に移動 |
n, N
|
| コマンドモードに入る | : |
| 幅/最適サイズに調整 |
a, s
|
| ドキュメントを開く |
o, O
|
| 終了 | q |
| 中断(操作キャンセル) |
Ctrl-c, Esc
|
クイックマーク
| 操作 | キー |
|---|---|
| クイックマークを設定 |
mX(Xは任意の文字) |
| クイックマークへジャンプ |
'X(Xは設定済み文字) |
各モードの操作
フルスクリーン/プレゼンテーションモード共通
| 操作 | キー |
|---|---|
| 次/前ページ |
J, K
|
| 下/上に1ページ分スクロール |
Space, Shift-Space, BackSpace
|
| 最初/最後/任意ページへ |
gg, G, nG
|
| 終了またはキャンセル |
Ctrl-c, Esc
|
| フルスクリーンを抜ける |
F11(フルスクリーン) |
| 通常モードに戻る |
F5(プレゼンテーション) |
| 拡大/縮小/等倍 |
+, -, =, zI, zO, z0
|
インデックスモード(目次)
| 操作 | キー |
|---|---|
| 上/下の項目へ移動 |
k, j
|
| 項目を展開/全展開 |
l, L
|
| 項目を折りたたみ/全折りたたみ |
h, H
|
| 項目を選択して移動 |
Space, Return
|
マウス操作
| 操作 | マウス操作 |
|---|---|
| 上/下にスクロール | ホイールスクロール |
| 拡大/縮小 |
Ctrl + ホイールスクロール |
| ドラッグでスクロール(移動) | 中ボタンドラッグ(Button2) |
| リンクを開く | 左クリック(Button1) |
| テキスト選択 | 左クリック+ドラッグ |
| 範囲ハイライト |
Shift + 左クリック+ドラッグ |
| 画像の右クリックメニュー | 右クリック(Button3) |
設定のカスタマイズ
設定は $XDG_CONFIG_HOME/zathura/zathurarc を編集することでカスタマイズできる。詳しくはマニュアルページ man zathurarc を参照。
# ズーム・スクロール
set zoom-step 20
set scroll-step 80
# クリップボード
set selection-clipboard clipboard
# 検索
set incremental-search true
# キーバインド
map u scroll half-up
set d scroll half-down
map D toggle_page_mode
map K zoom in
map J zoom out
# カラーテーマ(Iceberg)
set recolor true
set recolor-darkcolor "#bcc0d1"
set recolor-lightcolor "#161821"
set highlight-color "#84a0c6"
set highlight-active-color "#a093c7"
set default-fg "#bcc0d1"
set default-bg "#161821"
set inputbar-fg "#bcc0d1"
set inputbar-bg "#161821"
set notification-fg "#bcc0d1"
set notification-bg "#353a50"
set notification-error-fg "#e27878"
set notification-error-fg "#161821"
set notification-warning-fg "#e2a478"
set notification-warning-fg "#161821"
set statusbar-fg "#bcc0d1"
set statusbar-bg "#444b71"
set completion-fg "#bcc0d1"
set completion-bg "#161821"
set completion-highlight-fg "#161821"
set completion-highlight-bg "#84a0c6"
set completion-group-fg "#bcc0d1"
set completion-group-bg "#353a50"
set statusbar-home-tilde true
set window-title-basename true
# UIオプション
# c: コマンドライン
# s: ステータスバー
# h: 水平スクロールバー
# v: 垂直スクロールバー
set guioptions cshv
# フォント
#set font Iosevka\ Term\ Curly\ 11
#set font Sarasa\ Mono\ J\ 11
set font UDEV Gothic NFLG
set font monospace
おすすめの本
Linuxを普段づかいする上で参考になる本を紹介しておく。
入門 モダンLinux (おすすめ!)
Linuxを使いこなす上で必要な基本知識と、クラウド時代にも対応できるモダンな技術の概要について幅広く解説してある本。まずはこの本に目を通しておくとLinuxに関連した技術に対する見通しが良くなると思う。
Efficient Linuxコマンドライン
Linuxにおけるシェルの基本概念や現実的な問題を解決する方法を学ぶのに最適な本。
シェル・ワンライナー160本ノック
いろいろなコマンドラインツールやスクリプト言語を使ってひたすら問題を解いていくいわゆる「シェル芸」の本。さらにコマンドラインを極めたい場合はこちらがおすすめ。
スーパーユーザーなら知っておくべきLinuxシステムの仕組み(How Linux Works)
