Hyprland
関連記事
Hyprland は C++ で書かれた wlroots ベースのタイリング Wayland コンポジターです。Hyprland の特筆すべき点は、ダイナミックタイリング、タブ付きウィンドウ、クリーンで読みやすい C++ コードベース、ウィンドウアニメーションや角丸、透明ウィンドウでの Dual-Kawase Blur を提供するカスタムレンダラーなどです。一般的な使い方や設定方法は、 Hyprland Wiki に詳しく書かれています。
インストール
次のいずれかをインストールします:
- hyprland - 最新のアップストリームリリース。
- hyprland-gitAUR - master ブランチへの最新のコミット。
- hyprland-nvidiaAUR - NVIDIA GPU パッチを含む最新のアップストリームリリース。
Hyprland は、wlroots-gitAUR に厳密に従う独自のバージョンの wlroots をバンドルしています。これにより、安定性が向上すると同時に、他の wlroots ベースのコンポジターとの依存関係の競合も回避されます。
設定
設定は 1 つの設定ファイル、hyprland.conf を通して行われます。パッケージマネージャで Hyprland をインストールした場合、おそらく /usr/share/hyprland/hyprland.conf にあります。ソースからインストールした場合は、Hyprland をクローンしたレポジトリにあります。hyprland.conf を ~/.config/hypr/hyprland.conf
にコピーしてください。
hyprland.conf
には、デバイス (モニタ、キーボード、マウス、トラックパッド) を設定するディレクティブと、アニメーション、装飾、レイアウトなどの設定が含まれています。キーバインディングやウィンドウのルールを設定したり、コマンドを実行したりできます (一度だけ、あるいはコンフィグが再読み込みされるたびに)
ファイルを更新するたびに設定が自動的にリロードされます。同じ効果を得るために hyprctl reload
を使うこともできます。いくつかの設定(特に入力設定)については、Hyprland セッションを再起動する必要があるかもしれません。
設定は hyprctl
を使用してその場で変更することもできますが、保存されません。
キーボード
キーマップ
デフォルトでは、Hyprland は US Qwerty
を使用します。次のように設定できます:
~/.config/hypr/hyprland.conf
# German Colemark layout input { ... kb_layout = de kb_variant = colemark ... }
利用可能なすべてのオプションについては、upstream's Wiki を参照してください。
典型的な遅延と速度
Xorg ユーザーはこの設定 サーバーレベルで定義 を使用することに慣れていますが、Wayland では各コンポジターがそれを独自に処理します。
~/.config/hypr/hyprland.conf
# Repeat rate and delay input { ... repeat_rate = 25 repeat_delay = 600 ... }
キーボードのバックライト
他の照明コントロールとは異なり、キーボードバックライトには XF86
キーシムがないため、従来のバインドを行う必要があります。
brightnessctl を インストール します、次のバインドを追加します。
~/.config/hypr/hyprland.conf
# Keyboard backlight bind = SUPER, F3, exec, brightnessctl -d *::kbd_backlight set +33% bind = SUPER, F2, exec, brightnessctl -d *::kbd_backlight set 33%-
変更が行われたときに 画面上の通知 を実行することもできます。
メディアキー
Hyprland でキーボードメディアコントロールを使用するには、XF86Audio
キーシムと、pavucontrol または pamixer や playerctl などの外部アプリケーションを利用することで可能です。
~/.config/hypr/hyprland.conf
# Volume and Media Control bind = , XF86AudioRaiseVolume, exec, pamixer -i 5 bind = , XF86AudioLowerVolume, exec, pamixer -d 5 bind = , XF86AudioMicMute, exec, pamixer --default-source -m bind = , XF86AudioMute, exec, pamixer -t bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioPause, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous
変更が行われたときに 通知 を実行することもできます。
タッチパッドのジェスチャ
Wayland コンポジタである Hyprland はタッチパッドジェスチャを完全にサポートしていますが、デフォルトでは無効になっています。それらを有効にするには、次を編集します:
~/.config/hypr/hyprland.conf
# Enable touchpad gestures gestures { workspace_swipe = true workspace_swipe_fingers = 3 }
利用可能なすべてのオプションについては、upstream Wiki を参照してください。
ディスプレイの設定
画面共有
Screen-sharing を参照してください。
wlroots ベースのコンポジタとして、Hyprland は xdg-desktop-portal-wlr を利用して、xdg-desktop-portal 経由でさまざまなアプリケーションで画面キャプチャを有効にすることができます。
Hyprland は、領域共有、ウィンドウ共有、グラフィカルピッカーユーティリティなどの機能を追加した wlr ポータルのフォークである xdg-desktop-portal-hyprland も保守しています。ポータルの使用法については、Hyprland wiki で詳しく説明されています。
画面解像度の設定
Hyprland は画面解像度を自動的に検出しようとしますが、複数の画面が存在する場合やハイブリッドラップトップを使用している場合は、場合によっては失敗し、デフォルトでフェールセーフが設定されます。画面上のすべてが大きい場合は、デフォルトのモニターと解像度を設定する必要があります。
まず、hyprctl を使用してデフォルトのモニターを見つけます:
$ hyprctl monitors
Monitor eDP-1 (ID 0): 1920x1080@144.003006 at 0x0 description: Chimei Innolux Corporation 0x153C (eDP-1) ...
次に、モニターを設定に追加します:
~/.config/hypr/hyprland.conf
... # Monitor details monitor=eDP-1,1920x1080@144,0x0,1 ...
0x0
はマルチスクリーン設定に使用される位置オフセットで、最後の 1
は画面のスケーリング係数です。
画面のバックライト
brightnessctl を インストール して、次のバインドを追加します。
~/.config/hypr/hyprland.conf
# Screen brightness bind = , XF86MonBrightnessUp, exec, brightnessctl -s +5% bind = , XF86MonBrightnessDown, exec, brightnessctl -s 5%-
変更が行われたときに 通知 を実行することもできます。
使用方法
起動
現在、Hyprland は TTY から起動することを推奨しています。
$ Hyprland
ディスプレイマネージャ からの起動は公式にはサポートされていませんが、GDM、SDDM、その他からの起動に成功したとの報告があります。全ての Hyprland AUR パッケージは自動的にディスプレイマネージャーエントリーを生成します。ソースから手動でインストールする場合、ソースコードの example ディレクトリに Hyprland.desktop
ファイルのサンプルがあります、これを /usr/share/wayland-sessions/
にコピーしてディスプレイマネージャーのエントリーを提供することができます。
どちらの方法でも、いくつかの環境変数やサービスを追加したり削除したりすることで、同じ結果を得ることができます
自動ログイン
ディスプレイマネージャ または シェルから ユーザーは自動的にログインできます。
hyprctl と IPC
hyprctl は Hyprland にインストールされている、ディスプレイサーバーと通信するためのコマンドライン・ユーティリティです。サーバーにコマンドを送ったり (設定ファイルのコマンドと同じですが、構文が少し違います)、キーワードを設定したり、クエリ を送ったり、情報を要求したりすることができます。full documentation を参照してください。
Hyprland は 2 つの UNIX ソケット も公開しており、コードやコマンドライン・ユーティリティを使って Hyprland の情報を制御・取得することができます。これらのソケットはフォーカスの変更 (ウィンドウ、ワークスペース、モニター) やウィンドウ/ワークスペースの作成などのイベントをブロードキャストします。
hyprctl と IPC ソケットは、複雑なタスクのために Hyprland を制御するスクリプトの中で効果的に使うことができます。
exec と exec-once の比較
アプリケーションを起動するときは、正しいタイプのディスパッチャを使用することが重要です。exec
を誤って使用すると、アプリケーションが複数回起動されてシステムリソースが占有され、最悪の場合、競合状態が発生してシステムがクラッシュする可能性があります。
環境変数の設定
env キーワードを使用して、環境変数 を hyprland.conf
に直接設定できます。このキーワードの構文は、シェルで使用される env UNIX コマンドとは異なります。
違いについては、upstream Wiki で説明されています。
画面共有
Screensharing も参照してください。
wlroots ベースのコンポジタである Hyprland は、xdg-desktop-portal-wlr を利用して xdg-desktop-portal 経由で様々なアプリケーションをスクリーンキャプチャすることができます。
また、Hyprland は xdg-desktop-portal-hyprland も保守しています。これは、wlr ポータルのフォークであり、領域共有 (2022-12-12 の時点で壊れています)、ウィンドウ共有、グラフィカルな選択ユーティリティなどの機能が追加されています。このポータルの使い方は Hyprland wiki で詳しく説明されています。
トラブルシューティング
NVIDIAカードでのちらつきについて
これは NVIDIA の既知の問題です。代わりに hyprland-nvidiaAUR や hyprland-nvidia-gitAUR を使えばより良い体験ができます。
xdg-desktop-portal-hyprland が大量の CPU を使用する
これは既知のバグ [1] であり、最新の Git ビルドでは解決されているはずです。これを回避するには、こちら Hyprland wiki で説明されているように、スクリプトを hyprland.conf
ファイルで呼び出すことで回避できます。