kanshi - Arch Linux 中文维基

跳至內容

# kanshi

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 Kanshi，最近一次同步於 2025-05-15，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- Sway

kanshi 可以在熱插拔時自動啟用和禁用顯示輸出的配置文件。例如，當有擴展屏幕時，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
    }

每個配置（profile）都由括號分隔，其包含幾個輸出指令（語法類似 sway-output(5)）。當一個配置所列的所有輸出（output）都已連接時，該配置就會啟用。

提示：可以使用 `swaymsg -t get_outputs` 命令獲取輸出名稱列表和其它信息。

### 進階配置

為了易於管理多種配置（如「僅筆記本內置屏幕」、「在家連接一個擴展屏」、「工作時連接兩個擴展屏」等配置），您可定義配置裡使用的輸出的默認行為並為其分配別名。默認行為會應用到所有提到該輸出的配置中。更多信息參見 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
    }

注意 $INTERNAL 輸出的名稱的第三段是 UNKNOWN。這是因為 kanshi 需要三個欄位（製造商，型號，序列號）都被填充，如果缺少一個則需要使用 UNKNOWN 代替。

您可使用 hyprctl monitors 等命令查詢這些欄位，其會輸出這三個欄位：

    hyprctl monitors

    make: LG Display
    model: 0x058B
    serial:

您還可以讓您的工作流與 kanshi 進一步集成，使用 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=https://gitlab.freedesktop.org/emersion/kanshi
    BindsTo=sway-session.target

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

    [Install]
    WantedBy=sway-session.target

啟用該用戶單元。其僅會在 Sway 運行時激活並在 Sway 停止時停用。

## 疑難解答

### 喚醒後外置屏幕工作區編號從 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
    }

## 另請參閱

- 源碼和文檔

分類：​

- Wayland

kanshi
新增話題