Niriとは
Hyprlandと同じようにWaylandのコンポジターの一つです。コンポジターとはなんぞやと言う説明は別で個人的に検索してもらうとしてウィンドウマネージャだと思ってもらえたら正確ではないにしろ間違ってはいないと思います。
なぜ正確でないかはモニターを制御したり、オーディオコントロール、その他諸々ができるので単純にウィンドウだけを管理しているわけではないからです。
操作感や考え方のようなものはHyprlandと同じとも思えますが、大きく異なるのは無限に横にスクロールするようにウィンドウを開けば右に追加されていく所です。さらにワークスペースは縦に作られ縦横無尽に広がる画面をスクロールで切り替えて操作できるため、scrollable-tiling Wayland compositor(スクロール可能なタイル型のWayland用のコンポジター)と呼ばれます。
開いたウィンドウの順序が変えられるのはHyprlandと同じですが、やや違うのは選んだウィンドウが左右に移動しているのか、それ以外が左右に移動しているのかは定かではないものの、Super + Shift + (←/→)で移動させると横に他に開いているウィンドウがスクロールします。
これは何かを参考に作業している時にとても便利です。開いたウィンドウサイズは保持されます。ブラウザに記載されているシェルのコマンドをコピーして開いているターミナルにコピペとか、ブラウザに記載されているやり方を見ながらそれぞれのアプリを操作するなどです。
横に広がるワークスペースですからSuper + Cでアクティブなウィンドウを画面のセンターにすることもできます。これはHyprlandではできませんでした。設定すればフローティングウィンドウとしてできるのですが、ワークスペースをタイル状に埋めていくHyprlandはフロートさせたウィンドウを従来のスタッキング型のようにして作業もできますがやはりワークスペースを切り替える方が主体となるでしょう。しかしNiriでは切り替えずともフルサイズにしたウィンドウの横に別のウィンドウが並びます。
最大化した画面の横にウィンドウが並んでいるので三本指左右スクロールで切り替えができます。タイルに並べた元のサイズから拡大縮小と切り替えることなくスクロールでそれらが確認できるわけです。これを便利と思うかはHyprlandとNiriを使い比べないとわかりにくいかもしれません。
ワークスペースは動的に新しく縦に作られます。それらの操作はHyprlandとほぼ同じです。これは逆にウィンドウを開きすぎてメモリを消費してしまう元にもなるのでどちらが良いかというのはなかなか評価が難しい所です。
個人的には、Super + [あるいはSuper + ]でウィンドウをまとめられるのは良いと思いました。Cosmicでもスタック((Windowsのような重なっていくウィンドウ管理))して表示している時に、Super + Yだったかでタイル状にまとめる機能があります。これが便利かどうかは使い方にもかなりよりますが、スタックするウィンドウの奥にあるウィンドウを探すのに上に重なっているものをどけてちょっと見えたらクリックしてアクティブにさせると言うのが個人的にはそれどうなん?と思うわけです。
少し小さくなっても内容がある程度わかるぐらいで表示されていたら切り替えるのが楽ではなかろうかと言うことです。そこから拡大したりのサイズを変更して表示することはできるのですから人目でわかるようにしておくのが管理的には良いのではなかろうかということです。
Hyprlandに慣れているとその設定はややわかりにくい事もありますが、Wikiが充実しているので英語ではあるもののかなり細かく設定できるでしょうし、元々の設定ファイルがよくできているので多くを設定することはありません。あくまでDank Shellを適用したらの話ではあるのですけども。
CachyOSデフォルトのNiriはありますが触ったことはありません。ハイパランドよりは設定されているようですがやはり基本機能の設定だけで便利に使えるわけではないのでHyprlandにもNiriにもできるDankMaterialShellは使い勝手が良いかと。
念の為DankMaterialShellのインストールスクリプトのおさらい
curl -fsSL https://install.danklinux.com | sh
これをターミナルから実行して、Niriを選択してアカウントのパスワードを1度だけ入れる所があります。後は待つだけです。もしかするとターミナルを何にするかなどを問われるかもしれませんがなんでも良いです。
入れたばかりはそれまでにフォントの設定などをしていないなら1からする必要がありますし他の難しそうな設定は一切ありません。
DankMaterialShellはHyprlandもNiriも同じUIです。DankMaterialShell自体の設定は同じですからいずれかで触っておけばどちせも同じようにあるいはカスタマイズして違った見た目にもできます。
DankMaterialShellはCachyOSのデフォルトのキーバインドと異なりますし、独自に設定されています。なので最初からNiriを選んでインストールする必要はありません。むしろソフト的にはGnomeなどを選んでおいた方が良いかもしれません。
またデフォルでFishではありません。しかしCachyOSのデフォルトはfishらしいので、インストール後にBashは色々面倒くさいと感じたら、設定する必要がありますが、これはniriの設定から行います。
fishの設定
~/.config/niri/config.kdlをテキストエディターで編集します。下の方ですが、
binds {
# === Application Launchers ===
}
とある中に、
Mod+T hotkey-overlay-title="Open Terminal" {spawn "ghostty"}
とある部分を、
Mod+T hotkey-overlay-title="Open Terminal" {spawn "ghostty" "-e" "/usr/bin/fish";}
と直すだけです。これでターミナルのghosttyがFishインタラクティブモードで起動します。他のシェルを使用する場合は前述のリンクからそれぞれのやり方を参照してください。
最初の設定
まずはHyprlandと同様にディスプレイが拡大されて表示されていると思うので、wikiを参考にして、自身の使用しているディスプレイの設定をします。
output "eDP-1" {
mode "1920x1080@60.00"
scale 1.0
}
などと書きます。使用するディスプレイが複数あるのであれば複数設定します。
次にInputの設定をして日本語配列のキーボードが使用できるようにします。
input {
keyboard {
xkb {
layout "jp"
}
numlock
}
touchpad {
tap
nanural-scroll
}
}
などと修正します。touchpadは物理ボタンは使えますが、パッドをタップしても何の反応もないのでタップしてクリックが行えるようにします。ナチュラルスクロールが不要であれば書かないか先頭に//などとしてコメントアウトしておきます。
日本語の設定
日本語はfcitx5を入れると特別何かをしなくても動作するようになっていました。ただし、それらの入力設定は自身で行う必要があります。例えば、デフォルトの入力切り替えはCtrl + Spaceですが、半角/全角キーやひらがな/カタカナキーでもできるようにしておくと便利です。
これらは、まずfcitx5を導入して、Dank Bar(トップバー)の右側にIMEのアイコンが表示されると思うのでそこからしても良いですし、Ctrl + Spaceでアプリランチャーを出して、fcitx5設定ツールを起動してもよいかと思います。
導入は、
sudo pacman -S fcitx5-im fcitx5-mozc
で、導入できます。
設定ツールでは、上部タブの「入力メソッド」に、
キーボード - 日本語
Mozc
と並ぶように設定します。英語キーボードが必要なら追加するわけですが、通常は不要です。
「グロージルオプション」は、上の方にある項目で、どのキーで切り替えをするかを設定します。「アドオン」では、中央ぐらいにある「Mozc」の設定で入力モードや句読点、諸々の設定を行います。開いたダイアログのこれも中央辺りにある「設定ツール」の横にある設定を押すと、Mozcの設定画面が出てきます。ローマ字入力かかな入力、句読点やスペースを常に半角にしたり、現在の入力に合わせて行うかなどを設定します。
これらfcitx5のウィジェット(アイコン)がパッケージの導入だけで操作できるように鳴るのは、~/.config/niri/config.kdlにあるenvironment {...}部分があるからです。本来これらは自身で書く必要がありますが、niriの設定はよくできているので既に準備されています。
HyprlandにできてNiriにはできないこと

例えばですが、上記のようなレイアウトで、左上のAPP1~2のような横並びにしたウィンドウの下にAPP3を持ってくるようなレイアウトはNiriではできません。何かしらプラグインや方法がないわけではないのでしょうが、基本的には横に分割していき、そのカラムの中に垂直にいくつかのウィンドウを配置することはできます。
これはデスクトップでFHD(1920x1080)以上の大きな画面であれば耐えられると思いますが、ノートPCでは限界があります。詰め込むと文字が小さくなり操作もしにくいということですし。
上記画像はHyprlandのレイアウトですがこれならワークスペースを切り替えずにAPP1とAPP2で並行してダウンロードや何かをさせて、APP3でそれらの状況を記入や確認しつつ、APP4でブラウザを開いていればそれらダウンロードをするリンクを調べたりなどができるわけですが、NiriだとAPP1とAPP2は縦並びになるので、APP3で何かを書くのがきつく、横幅を狭めることもできますが何かを書くには狭くとなってしまい、少なからずスクロールか切り替えが必要になります。
そういった切り替えが面倒でなければ、あるいはこういうレイアウトを使わないというのであればNiriは十分使用に耐えられます。
切り替えの操作は3本指スクロールですぐできますし、Hyprlandと同様にSuper + 左右矢印でできますから最小限の手間で済みます。個人的には、上記画像のようなレイアウトを使うこともあり、APP4がブラウザであった場合、違うワークスペースでファイルマネージャを開いてそれをWindowsの方に送るということもしたりするのでワークスペースの1と2を切り替えれば済むというだけでほとんどができるのは便利ではあります。
このあたりをスクロールが便利かどうか、使用するアプリはどういう物を使うか、最初にHyprlandかNiriのいずれで覚えるかなどで使い勝手や操作感の各々に思う所は変わるのではなかろうかと思います。
Animationの仕組み
animations {
workspace-switch {
spring
damping-ratio=1.0
stiffness=1000
epsilon=0.0001
}
// 他のアニメーション設定 (window-open, window-close など) もここに含まれます
}
- spring:スプリング(バネ)ベースのアニメーションを有効にします。弾力のある自然な動きが生まれます。
- damping-ratio (減衰比):アニメーションの減衰の速さ。値が大きいほど早く落ち着きます。
- stiffness (剛性):バネの硬さ。値が大きいほどアニメーションが速くなります。
- epsilon:アニメーションを停止する閾値。
niriの設定は上記のような書き方でそれぞれのアクションに対して設定することができます。ライブリロードに対応しているので、設定してファイルを保存すればすぐに効果が確かめられるので色々と値を変えて自分に合った設定を見つけてください。
damping-ratioの減速率は0.1~10.0までで、以下の特性があります。
- 1.0未満:減衰不足のスプリング。最終的には振動します。
- 1.0以上:減衰過剰のスプリング。振動しません。
- 1.0:臨界減衰のスプリング。振動することなく最短時間で停止します。
ただし、減衰率が1.0であっても、タッチパッドのスワイプによって十分な速度で「起動」された場合、スプリングアニメーションが振動することがあります。1.0以上の過剰減衰スプリングは数値的な問題がありグラフィックの不具合を起こす可能性があるので1.0以上に設定することは非推奨です。
これらの他に、イージングを設定する方法もあります。
animations {
workspace-switch {
duration-ms=300 # アニメーションの時間(ミリ秒)
curve="ease-out-expo" # 使用するカーブの種類
}
}
- ease-out-quad
- ease-out-cubic
- ease-out-expo
- linear
- cubic-bezier