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
添加话题