コンテンツにスキップ

Kanshi

提供: ArchWiki
2026年2月20日 (金) 14:51時点におけるKgx (トーク | 投稿記録)による版 (翻訳)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

関連記事

kanshi を使用すると、ホットプラグに応じて自動的に有効・無効が切り替わる出力プロファイルを定義できます。例えば、ノートパソコンをドックに接続した際に内蔵スクリーンをオフにする、といった設定が可能です。

これは、autorandr などのツールのWayland版に相当します。kanshiは、wlr-output-management プロトコルをサポートしている Wayland コンポジタで使用できます。

インストール

kanshi パッケージ、または kanshi-gitAURインストールしてください。

設定

基本設定

kanshiの設定ファイルを作成します:

~/.config/kanshi/config
profile {
output LVDS-1 disable
output "Some Company ASDF 4242" mode 1600x900 position 0,0
}

profile {
output LVDS-1 enable scale 2
}

各出力プロファイルはブラケット(波括弧)で区切られます。その中には複数の出力ディレクティブが含まれます(構文は sway-output(5) と同様です) リストされているすべての出力が接続されている場合に、そのプロファイルが有効になります。

ヒント 出力名や詳細情報のリストを取得するには、wlr-randrswaymsg -t get_outputs などのコマンドを使用するか、GUIアプリケーションである wdisplays-gitAUR または wdisplays-persistentAUR を使用してください。これらは、kanshiの設定ファイルに直接書き込むことも可能です。

応用設定

複数のセットアップ (例:ノート PC 本体のみ、自宅でモニター1台に接続、職場でモニター2台に接続、など) を簡単に管理するために、プロファイル内で使用する出力のデフォルト値を定義し、エイリアスを割り当てることができます。デフォルト値は、その出力が言及されているすべてのプロファイルに適用されます。詳細は kanshi(5) を参照してください。

~/.config/kanshi/config
output "Dell Inc. DELL S2721DGF G52TR83" {
mode 2560x1440@165.08
position 1280,0
scale 2
alias $HOME_1
}

output "LG Display 0x058B Unknown" {
mode 2560x1440@59.99800
position 0,0
scale 2
alias $INTERNAL
}

profile home_1 {
output $INTERNAL disable
output $HOME_1 enable
}

これらの値は、hyprctl monitors のようなコマンドで確認できます。実行すると、以下のように出力されます。

hyprctl monitors
make: LG Display
model: 0x058B
serial:

また、exec ディレクティブを使用することで、プロファイルが正常に適用された後にコマンドを実行し、ワークフローとさらに統合させることも可能です。

~/.config/kanshi/config
profile home_1 {
output $INTERNAL disable
output $HOME_1 enable
exec uwsm app -- $HOME/.config/hypr/scripts/move-workspaces.sh "LG Display 0x058B"
}

使用方法

次のコマンドを実行します:

$ kanshi

自動的に実行する方法については、#systemd で kanshi を管理する を参照してください。

ヒントとテクニック

systemd で kanshi を管理する

Sway#systemd で sway 固有のデーモンを管理する の手順に従って、~/.config/systemd/user/sway-session.target を作成し、起動してください (未作成の場合)

次に、kanshi.service ファイルを作成します:

~/.config/systemd/user/kanshi.service
[Unit]
Description=Dynamic output configuration for Wayland compositors
Documentation=man:kanshi(1)
BindsTo=sway-session.target

[Service]
Type=simple
ExecStart=/usr/bin/kanshi

[Install]
WantedBy=sway-session.target

このユーザーユニット有効化してください。これにより、Sway の実行中にのみ有効になり、Sway が停止すると無効になります。

トラブルシューティング

スリープ復帰後、外部モニターのワークスペース番号が2から始まる

上記のような設定をしている場合、2番目のディスプレイを接続した際、最初のディスプレイが無効化されているため、2番目のディスプレイのワークスペースは「1」から始まるはずです。初回接続時やシステム起動直後はその通りになりますが、スリープ復帰後にこの番号が「2」になってしまうことがあります。この場合は、kanshi の設定ファイルにディレクティブを追加して、最初のワークスペースをそのモニターに移動させるようにしてください:

~/.config/kanshi/config
profile {
output LVDS-1 disable
output "Some Company ASDF 4242" mode 1600x900 position 0,0
# 以下のディレクティブを追加します(出力名は適宜書き換えてください):
exec swaymsg workspace 1, move workspace to HDMI-A-1
}

profile {
output LVDS-1 enable scale 2
}

参照