Waylandの新時代へ!niriの「スクロール可能タイル」がもたらす巨大ワークスペース活用術


Waylandの新時代へ!niriの「スクロール可能タイル」がもたらす巨大ワークスペース活用術

YaLTeR/niri

2025-10-09

「体操のお兄さん」風に、元気よく、そしてソフトウェアエンジニアの視点から「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」を使って、キーボードだけで操作できる、素早く快適な開発環境を手に入れよう!タイリングとスクロール機能で、あなたのデスクトップはまるで広々とした開発専用のジムになるよ!


YaLTeR/niri




もう待たない!ガシャポンのように手軽なMicroVM「Firecracker」入門

まるでガシャポンのカプセルを回すように、手軽に高速な環境を手に入れたい!そんな時に役立つのが「Firecracker」です。ガシャポンを回す前に、中身が何なのか知っておくことが重要ですよね。Firecrackerは、一言でいうと「超軽量・超高速の仮想マシン(MicroVM)を動かすための技術」です。


そのPython、Rustで書き直さない?闇バイトの甘い誘惑を論理的に論破するRustPython入門

ただ、今回は「闇バイトに注意」というテーマで、ちょっとしたコント仕立てでお届けします。怪しい勧誘には気をつけつつ、技術の深淵を覗いてみましょう!【登場人物】先輩エンジニア(A)Rustが大好き。何でも爆速にしたがる。後輩エンジニア(B)最近「高単価・即日払い」のエンジニアバイトを探している。


「彼女の下着は何色?」という問いにAIが即答できる理由 — CocoIndexによる動的データ処理

「彼女の下着は何色?」という、一見すると AI が答えに窮しそうな(あるいはプライバシーや文脈に依存する)「特定の、移り変わる、あるいは非常に個人的なデータ」を扱う場面で、なぜこのツールが最強の味方になるのか、という切り口でお話しします。一言でいうと、「情報の更新(増分更新)に特化した、爆速の AI データ整理棚」です。


pathwaycom/pathway タイトル集

簡単に言うと、リアルタイムでデータを処理できるPythonのETLフレームワークです。ETLとは、Extract(抽出)、Transform(変換)、Load(読み込み)の頭文字をとったもので、データ処理の基本となるプロセスです。普通のETLは、バッチ処理といって、ある程度のデータをまとめて処理することが多いですが、pathwaycom/pathwayはストリーム処理が得意です。つまり、データが流れてくるそばから、リアルタイムで処理してくれるんです。


警察 vs ヤクザのコントで学ぶ!Rust GUI「gpui-component」はなぜ高性能で使いやすいのか

これは、Rustで高性能かつクロスプラットフォームなデスクトップアプリケーションのGUI(グラフィカルユーザーインターフェース)を構築するためのコンポーネントライブラリです。要するに、Rustで素晴らしいデスクトップアプリを作るための、「部品の詰まった宝箱」のようなものです。特に、大規模なデータや高速な描画が必要なアプリ(例IDE、高性能なツール)開発に適しています。


開発効率爆上げ!Rust製P2Pライブラリ iroh徹底解説

レジ「いらっしゃいませ~!」あなた「(スマホ片手に)いや~、困ったなぁ。最近、プロジェクトでデータ共有するのに、DropboxとかGoogle Driveとか使ってるんですけど、なんかこう、もっとスマートな方法ないかなって。」レジ「おや、それはお困りですね!もしかして、ソフトウェアエンジニアさんですか?」


Daft:PythonとRustの二刀流でどんなデータも高速処理!

おっと、旦那、なんだいその渋い顔は。データ処理で困ってるとでもいうのかい? そんな旦那に、とっておきの江戸の秘伝、いや、世界の最先端技術を教えてやろうってんだ。今回のお題は、「Eventual-Inc/Daft」だ!なんだい、その顔は。「だふと?」だぁ? 違う違う!「Da-ft」って読むんだ。覚えておきな!


宇宙飛行士のためのAIツールキット:TensorZeroでLLM開発を加速せよ

今回紹介するのは、「TensorZero」という、LLMアプリケーション開発のためのオールインワンの宇宙船だ。このツールを使いこなせば、君はより少ない燃料(労力)で、より遠い宇宙(成功)へと到達できるはずだ。ソフトウェアエンジニアリングの観点から見ると、TensorZeroはLLM(大規模言語モデル)を扱うプロジェクトにおける、「信頼性と効率」を劇的に向上させるための、まるで宇宙船のコックピットのような存在だ。


Rust製ゲームエンジン「Bevy」入門:シンプルなレシピで始めるゲーム開発

Bevyは、Rustという銘柄の最高級スピリッツを使って作られた、とびきりシンプルで爽やかなゲームエンジンです。普通のゲームエンジンは、いろいろな素材が混ざり合って、ちょっと複雑で重たいカクテルになりがちですが、Bevyはまるでジンとトニックのように、シンプルだけど奥深い味わいが特徴です。


MinIO代替?「rustfs/rustfs」で高性能ストレージを構築する!

(舞台はとあるIT企業の開発室。エンジニアのAさんとBさんがストレージの課題に頭を抱えている。)Aさん 「はぁ〜、またストレージがパンパンだよ…。データが増えるのは嬉しいんだけど、管理が大変だし、レスポンスも遅い時があるんだよなぁ。もっと『うまい、早い、安い』ストレージはないもんかな…。」