Hyprland Lua の多画面座標、キー、検証

このページの目次

Hyprland 0.55 系の hyprland.lua を使用する。旧 conf のキーワードや規則を Lua に直接混ぜない。バージョンを確認し、対応する公式説明を使う。

以下は統合用の断片で、デスクトップ全体を上書きする導入ファイルではない。

接続中のセッションを確認する

Hyprland 内の端末で実行する。

hyprctl version
hyprctl monitors -j

版、接続名、説明、モード、倍率を見る。インスタンス変数がないエラーは、現在のシェルが合成器に接続していないことを示し、未導入を意味しない。

DP-1 などは他機からコピーしない。desc 指定も一意な説明が必要で、同型番の識別情報が同じ場合には衝突し得る。

回退用の表示規則

hl.monitor({
    output = "",
    mode = "preferred",
    position = "auto",
    scale = "auto",
})

個別指定のない出力を扱う。まずこれで表示を確認してから各画面を設定し、一度に一画面・一条件を変える。

物理画素から論理座標へ

3840×2160 を 1.5 倍で表示すると論理サイズは 2560×1440。90° 回転では 1440×2560 となる。配置位置もこの空間を使う。

画面物理倍率・回転論理サイズ原点
A 左上3840×21601.5、180°2560×14400, 0
B 左下3840×21601.5、通常2560×14400, 1440
C 右3840×21601.5、90°1440×25602560, 0

B は A の高さから、C は左列の幅から始まる。全体は 4000×2880 で、右下に 1440×320 の非表示領域が残る。辺を越えるマウスや窓の位置もこの関係で考える。

実際の接続名と対応モードへ置き換える。

hl.monitor({
    output = "DP-1", mode = "3840x2160@60",
    position = "0x0", scale = 1.5, transform = 2,
})
hl.monitor({
    output = "DP-2", mode = "3840x2160@60",
    position = "0x1440", scale = 1.5,
})
hl.monitor({
    output = "DP-3", mode = "3840x2160@60",
    position = "2560x0", scale = 1.5, transform = 1,
})

ローカル例では 160/60/60Hz と画面別 VRR を使った時期がある。帯域、ドライバ、表示エンジンも関係し、高規格ケーブルへの交換だけで必ず直るとは限らない。

窓と workspace のキー

local mainMod = "SUPER"
hl.bind(mainMod .. " + T", hl.dsp.exec_cmd("ghostty"))
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen())
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "down" }))
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "right" }))

Ghostty がセッションの PATH に必要である。対話シェルの起動処理で追加したパスは、合成器やサービスにはない場合がある。

workspace と窓の循環は別操作である。

hl.bind("ALT + Tab", hl.dsp.focus({ workspace = "m+1" }))
hl.bind("ALT + grave", hl.dsp.window.cycle_next())

前者は現在画面の相対 workspace、後者は窓を巡回する。多画面・複数 workspace で確認する。

規則、再読み込み、復旧

アプリ規則は hyprctl clients の実 class/title を見てから追加する。題名は文書や言語で変わり、広い条件は無関係な窓にも作用する。

hyprctl reload
hyprctl configerrors

エラーと基本操作を確認する。Lua の構文が通っても API 引数やモード対応は別検査である。操作不能なら準備した TTY/遠隔経路から保存設定を戻し、再ログインする。

表示故障を段階的に調べる

単画面の首選モードから始め、複数画面、固定リフレッシュ、VRR、全画面関連の順に戻す。接続、モード、ドライバ、操作、時刻を記録する。

配色は Matugen、外殻は Quickshell、環境はセッション診断へ分ける。