kanshi
kanshi 允许您定义自动启用和禁用的输出配置文件,以应对热插拔。例如,这可以用于在对接时关闭笔记本电脑的内置屏幕。
这是 Wayland 上类似于 autorandr 等工具的等效工具。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))。当列出的所有输出都连接时,将启用一个配置文件。
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:
还可以通过使用 exec 指令在配置文件成功应用后执行命令,来进一步集成 kanshi 到您的工作流程中。
~/.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
如果尚未创建,请创建并启动 ~/.config/systemd/user/sway-session.target(如果您尚未创建)。请遵循 Sway#使用 systemd 管理 Sway 特定的守护进程。
创建 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
# We've added this directive here (do not forget to update the output name):
exec swaymsg workspace 1, move workspace to HDMI-A-1
}
profile {
output LVDS-1 enable scale 2
}