Waylandの新時代へ!niriの「スクロール可能タイル」がもたらす巨大ワークスペース活用術
「体操のお兄さん」風に、元気よく、そしてソフトウェアエンジニアの視点から「YaLTeR/niri」がどう役立つのか、導入方法やサンプルコードの例まで、分かりやすく、フレンドリーに解説しますね!
みんな、こんにちはー!今日のデスクトップ体操のお時間だよ!担当は、みんなのデスクワークをサポートする、元気いっぱいの(仮称)AIアシスタントだよ!
さあ、今日紹介するのは、Waylandという新しいディスプレイ技術の上で動く、とってもイケてる窓管理ソフト、「niri」だよ!
「niri」はね、キーワードで言うと「scrollable-tiling Wayland compositor」なんだ!
みんなが今使っている画面、実は「コンポジタ」っていう親方ソフトが、全ての窓(ウィンドウ)を綺麗に並べて、絵を描いてくれているんだ。
エンジニアへのご利益
→ 古いX11じゃなくて、セキュアでモダンなWayland環境でバリバリ開発したい時に、自分でこの「親方ソフト」を選べるのが嬉しいね!Waylandネイティブなアプリ開発や環境構築に挑戦できるよ。
普通の窓管理は、窓を重ねて置いていくよね?でもタイリング(Tiling)は、窓と窓をタイルみたいに隙間なく、自動で敷き詰めてくれるんだ!
エンジニアへのご利益
→ ターミナル、エディタ、ブラウザ、デバッガ… 画面に同時にたくさんの情報を出したいエンジニアにとって、窓を手動でリサイズする手間がゼロになる!キーボード操作だけでサクサク移動・配置できるから、集中力を途切れさせずにコーディングできる、最高の環境なんだ!
ここがniriの一番面白いポイントだよ!
一般的なタイリングWMは、画面が窓でいっぱいになると、もう新しい窓は開けないか、小さい窓になっちゃう。
でもniriは、一つのワークスペース(デスクトップ)を、画面からはみ出る大きなキャンバスみたいに扱えるんだ!窓を開きすぎると、そのワークスペース全体がスクロールできるようになるんだよ!
エンジニアへのご利益
→ プロジェクトでたくさんのファイルやターミナルを開く時、それらを論理的にグルーピングしたまま、一つの巨大な「タスク・ボード」のように使える!例えば、「フロントエンド開発エリア」「バックエンド開発エリア」「データベース参照エリア」を一つのワークスペース内で横に並べておいて、Super + h/l(または設定したキー)でサッと切り替えられるから、脳内のコンテキストスイッチを最小限にできるんだ!複数ディスプレイでの運用も、このスクロール機能でスッキリ整理できるよ。
niriはRustで書かれているから、ビルド(構築)も簡単だよ!
Rust環境の準備
rustupなどを使って、Rustのコンパイラとツールチェインをインストールしておこう。
依存ライブラリのインストール
Waylandコンポジタとして動くために、OSに応じて必要なライブラリ(例wayland-protocols, libinputなど)をインストールする必要があるよ。ディストリビューションによって違うから、公式リポジトリのREADMEを確認してね。
ソースコードの取得
git cloneでリポジトリを取ってくるよ。
git clone https://github.com/YaLTeR/niri.git
cd niri
ビルド
Rustのビルドツールcargoを使ってビルド!
cargo build --release
インストール (任意)
実行ファイルをシステムパスの通ったところにコピー。
# 必要に応じて
sudo cp target/release/niri /usr/local/bin/
起動
既存のディスプレイマネージャから
niri.desktopファイルを作成し、ログイン時に選択できるように設定する。
TTYから直接
ターミナルで
niri
と実行する。
niriは、シンプルな設定ファイル(通常は~/.config/niri/config.kdl)を使ってカスタマイズするよ。
デフォルトでは、Superキー(WindowsキーやCommandキー)と組み合わせて操作することが多いよ。
niriの設定ファイル (config.kdl のイメージ)
# niriの設定ファイルはKDLフォーマットで書かれるよ
# キーバインドの設定
bind super {
# ターミナルを起動!みんな大好きSuper + Enter!
Enter { spawn "alacritty" }
# 窓を閉じるよ!Super + Q!
q { close }
# スクロール可能なワークスペース内の移動!
# H/Lで左右へスクロール(巨大なキャンバスを横に移動するイメージ)
h { scroll_workspaces left }
l { scroll_workspaces right }
# ワークスペースの切り替え(デスクトップの切り替え)
# 1番のワークスペースへ!
1 { switch_workspace 0 }
# 新しいワークスペースを作るよ!
# Nで新しいワークスペースへ移動&作成
n { new_workspace }
# 窓のフォーカス移動!
# タイルされた窓の間を移動するよ
j { focus_window next }
k { focus_window previous }
}
# 起動するアプリの設定
autostart {
# 起動時に必要なものを自動で実行!
spawn "waybar" # パネル/タスクバー
spawn "swayidle -w before-sleep 'swaylock'" # ロック画面設定
}
複数アプリの同時起動
autostartセクションで、開発に使うターミナルやエディタをまとめて起動させておくと、すぐに作業に取り掛かれるよ。
レイアウト
niriは自動で配置してくれるけど、特定の窓(例
小さなフローティングのデバッグツール)をフローティング(重ねて表示)にする設定もできるよ!
さあ、みんなも「niri」を使って、キーボードだけで操作できる、素早く快適な開発環境を手に入れよう!タイリングとスクロール機能で、あなたのデスクトップはまるで広々とした開発専用のジムになるよ!