Hyprlandで役に立つウィンドウルール
TOC
Hyprlandはユーザーがウィンドウの挙動を細かく制御できる「ウィンドウルール」機能がある。
実際に役立つルールの例をいくつか紹介。
フローティング
よく使うユーティリティ系のアプリは float on で常にフローティングにしておくと使い勝手がいい。
windowrule = match:class guifetch, float on
windowrule = match:class yad, float on
windowrule = match:class zenity, float on
windowrule = match:class blueman-manager, float on
windowrule = match:class feh, float on
windowrule = match:class imv, float on
windowrule = match:class org.gnome.Loupe, float onフローティング + サイズ調整 + センタリング
ダイアログ系のアプリはフローティングにするだけでなく、サイズと位置も合わせて指定するとキレイに表示できる。
windowrule = match:class foot match:title:nmtui, float on
windowrule = match:class foot match:title:nmtui, size 60% 70%
windowrule = match:class foot match:title:nmtui, center 1
windowrule = match:class org.gnome.Settings, float on
windowrule = match:class org.gnome.Settings, size 70% 80%
windowrule = match:class org.gnome.Settings, center 1
windowrule = match:class org.pulseaudio.pavucontrol, float on
windowrule = match:class org.pulseaudio.pavucontrol, size 60% 70%
windowrule = match:class org.pulseaudio.pavucontrol, center 1ダイアログをタイトルで自動フローティング
ファイル選択ダイアログや保存ダイアログなどは、クラス名ではなくタイトルのパターンでマッチさせると幅広く対応できる。
windowrule = match:title (Select|Open)( a)? (File|Folder)(s)?, float on
windowrule = match:title File (Operation|Upload)( Progress)?, float on
windowrule = match:title .* Properties, float on
windowrule = match:title Save As, float onスペシャルワークスペースへの自動割り当て
special: プレフィックスを持つワークスペースは「スクラッチパッド」として使える隠しワークスペース。
起動時から特定のワークスペースに割り当てておくと便利。
windowrule = match:class btop, workspace special:sysmon
windowrule = match:class Spotify, workspace special:music
windowrule = match:title Spotify, workspace special:music
windowrule = match:class discord, workspace special:communication
windowrule = match:class Todoist, workspace special:todo
windowrule = match:class Bitwarden, workspace special:bitwardenJetBrains IDE のフォーカス問題を修正
JetBrains IDE はツールチップやタブのドラッグ中にフォーカスが奪われる問題がある。 タイトルのパターンで対象を絞り、フォーカスを無効化することで回避できる。
# ツールチップ (タイトルが win.<id> の形式)
windowrule = match:class ^(.*jetbrains.*)$ title:^(win.*)$, no_initial_focus on
windowrule = match:class ^(.*jetbrains.*)$ title:^(win.*)$, no_focus on
# タブドラッグ中のウィンドウ (タイトルが半角スペース1文字)
windowrule = match:class ^(.*jetbrains.*)$ title:^\\s$, no_initial_focus on
windowrule = match:class ^(.*jetbrains.*)$ title:^\\s$, no_focus onJetBrains IDE のフォーカス問題については、以下の記事も参考に。
ピクチャーインピクチャー (PiP)
PiP ウィンドウはフローティング + ピン留めにして、常に最前面に表示させる。move で初期位置を画面右下に指定しておくと邪魔にならない。
windowrule = match:title Picture(-| )in(-| )[Pp]icture, float on
windowrule = match:title Picture(-| )in(-| )[Pp]icture, pin on
windowrule = match:title Picture(-| )in(-| )[Pp]icture, move 100%-w-2% 100%-w-3%ピン留めウィンドウの視覚的区別
pin on で常に最前面に固定したウィンドウは、見た目で区別できると便利。
ボーダーカラーを変えてひと目でわかるようにする。
ついでに、ボーダーサイズを大きくして、半透明にしておくとさらにわかりやすい。
windowrule = match:pin 1, border_color rgba(ff1493AA) rgba(ff1493AA) rgba(ff1493AA)
windowrule = match:pin 1, border_size 3
windowrule = match:pin 1, opacity 0.9 overrideSteam ゲームの設定
Steam ゲームにはティアリング許可とアイドル抑止を設定しておく。immediate on でティアリングを許可すると入力遅延が下がり、idle_inhibit always でスクリーンセーバーが起動しなくなる。
windowrule = match:class steam_app_[0-9]+, immediate on
windowrule = match:class steam_app_[0-9]+, idle_inhibit alwaysGoogle Chrome
Google Chrome はフルスクリーンにするとタブバーも消えてしまう。
フルスクリーン時もタブバーを表示するには、fullscreen_state 0 でフルスクリーン状態でもタブバーを表示させることができる。
windowrule = match:class google-chrome, fullscreen_state 0 0EOF