river
river は、wlroots ベースの Wayland 動的タイル型コンポジタです。Xmonad と bwspm からインスパイアされたものですが、これらをベースとしているわけではありません。設定は外部の実行ファイルによって行われます。
River の設計目標は:
- シンプルかつ予測可能な動作。River は簡単に使うことができ、認知負荷は低くあるべき。
- View と tag によるウィンドウ管理。
- ユーザによって作成された外部の実行ファイルから生成される動的レイアウト。デフォルトの rivertile レイアウトジェネレータも提供されています。
- カスタムの Wayland プロトコルと、それを実装する個別の riverctl バイナリによる、スクリプト化可能な設定と制御。
目次
インストール
River は river パッケージか AUR の git パッケージ river-gitAUR によってインストールできます。
起動
単一の実行ファイルを設定ファイルとして使います。初期ファイルはデフォルトでセットアップされません。なので、キーバインドやデフォルトのアプリケーションは、初期ファイルが作成されない限り利用できません。注意点として、これには終了するためのキーバインドも含まれます。そのため、river を実行する前に tty か他のデスクトップ環境から river をセットアップしてください。
設定の初期ファイル例は /usr/share/river/example/
にあります。それを ~/.config/river/init
にコピーし、実行可能属性を付与してください。
手動
river
(終了時には tty に戻り、ユーザはログインしたままです) または exec river
(終了時には tty に戻り、ユーザはログアウトします) と入力してください。
TTY から
River は startx と似たような方法で自動起動できます。.bash_profile
(あるいは、他のシェルの同等なファイル) で環境変数を設定することができます。Xinit#ログイン時に X を自動起動 を参照してください。ただし、$DISPLAY
は $WAYLAND_DISPLAY
に、exec startx
は exec river
に置き換えてください。
ディスプレイマネージャ
公式には、River はディスプレイマネージャをサポートしていません。しかし、ディスプレイマネージャの多くは特に問題なく動作します。デフォルトでは、セッションエントリは /usr/share/wayland-sessions/
にインストールされます。
設定
シェルスクリプトか実行ファイルを設定ファイルとして用いることができ、キーバインド、入力の設定、そしてウィンドウルールを定義する riverctl コマンドの集合で構成されます。設定ファイルはスタートアップ時に一度だけ実行されますが、他のシェルスクリプトと同じように再度実行することも可能です (ただし、プログラムが重複して自動起動されることの影響を考慮する必要があります)。また、riverctl コマンドをターミナルから実行することでも設定を行うことができます。これにより、初期設定を一時的に上書きしたり、動的に更新したり、新しい設定をテストしたりできます。
例えば、grim でスクリーンショットを撮って一時的な通知を表示するショートカットとして Super+PrtSc
を割り当てるには:
riverctl map normal Super Print spawn "grim && notify-send -t 2000 'Screenshot taken'"
spawn コマンドは任意のアプリケーションやスクリプトを起動することができますが、単一の実引数を期待します。なので、実行するべきコマンドに複数の単語が含まれる場合は、引用符で囲んでください。
キーボードレイアウト
riverctl keyboard-layout gb
コンマで区切ることで複数のレイアウトを入力することができます (例: gb,fr
)。
変数やシェルのコマンドを使用することもできます。例えば、mod='Mod4'
や set term foot
など (シェルごとに異なります)。
タッチパッドの例
タッチパッドの特定の動作とフォーカス設定が利用できます。
riverctl input pointer-2-7-SynPS/2_Synaptics_TouchPad tap enabled riverctl focus-follows-cursor normal
設定で使用することのできる、キーボード、マウス、そしてタッチパッドのモデル名は、以下のコマンドで確認できます:
riverctl list-inputs
ウィンドウルール
特定のウィンドウはデフォルトでタイル化させたくない場合があるでしょう。フローティングウィンドウはクラスかウィンドウタイトルを使って定義できます:
riverctl float-filter-add app-id 'galculator' riverctl float-filter-add title 'File Operation Progress'
新しい rule-add 設定は River 0.3 で導入される予定であり、構文はこれらの広範な定義に合わせて変化することに注意してください:
riverctl rule-add float -app-id 'galculator'
使用法
自動起動
キーバインドを指定せずに riverctl spawn
を使うと、スタートアップ時に任意の実行ファイルを実行することができます。例えば:
riverctl spawn "i3-battery-popup -n -m 'Battery Low!'"
ヒントとテクニック
スクラッチパッド
デフォルトではスクラッチパッドは定義されていませんが、デフォルトの 0-9 より大きい tag に対してスクラッチパッドを定義することができます。まず、tag 番号を定義し、次に、そのスクラッチパッドの tag にアプリケーションを移動して外観を切り替えるキーバインドを定義してください。最後に、新しいウィンドウがスクラッチパッドに割り当てられないようにしてください。
scratch_tag=$((1 << 20 )) riverctl map normal Super P toggle-focused-tags ${scratch_tag} # スクラッチパッドを切り替える riverctl map normal Super+Shift P set-view-tags ${scratch_tag} # ウィンドウをスクラッチパッドに送る # 明示的に操作しない限り新しいウィンドウがスクラッチパッドに割り当てられないように spawn tagmask を設定する。 all_but_scratch_tag=$(( ((1 << 32) - 1) ^ $scratch_tag )) riverctl spawn-tagmask ${all_but_scratch_tag}
モード
River では、キーバインドでモードを切り替えられます。これにより、キーバインドを再利用したり、少ないキーの組み合わせを使ったりできます。デフォルトでは、2つのモード 'normal' と 'locked' が存在します ('locked' は、画面がロックされている時に許可されるキーバインドを定義します)。 カスタムのモードを追加することもできます。例えば、フローティングウィンドウを滅多に使用しない場合、フローティングウィンドウを操作するためのキーバインドは 'float' モードに定義すると便利です。モードに入るためのキーバインドは最初に、モードから出るためのキーバインドは最後に設定し、その他のキーバインドはそれらのキーバインドの間に定義します。
riverctl declare-mode float riverctl map normal Super R enter-mode float # Super+R でフロートモード ### フローティングウィンドウのキーバインド。注: これらはタイルウィンドウにも使用できます。 # # Super {矢印キー} で view を移動 riverctl map float Super Left move left 100 riverctl map float Super Down move down 100 riverctl map float Super Up move up 100 riverctl map float Super Right move right 100 # Alt+{矢印} で view を画面端に snap riverctl map float Alt Left snap left riverctl map float Alt Down snap down riverctl map float Alt Up snap up riverctl map float Alt Right snap right # Shift+{矢印} で view をリサイズ riverctl map float Shift Left resize horizontal -100 riverctl map float Shift Down resize vertical 100 riverctl map float Shift Up resize vertical -100 riverctl map float Shift Right resize horizontal 100 riverctl map float None Escape enter-mode normal # float モードを終了し、normal モードへ戻る
外部ツール
他の多くの最小主義な Wayland タイリングコンポジタと同じように、その他のツールは同梱されていません。外部のステータスバー、スクリーンショットツール、ランチャーなどは、River の GitHub wiki で紹介されています (River 固有の機能についても記述されています)。
トラブルシューティング
フローティングウィンドウの修飾キーはタイルウィンドウに対しても機能することに注意してください。このせいで、タイルウィンドウを意図せずフローティングウィンドウ化してしまうかもしれません。
River の現在の安定バージョンでは、ウィンドウを特定のワークスペースで自動起動することができません。しかし、git バージョン (0.3) では、riverctl に rule-add オプションが導入されており、この機能が利用できます。