Hyprland Lua:多屏坐标、键位与验证
On this page
这些片段使用 Hyprland 0.55 系列的 hyprland.lua。旧的 .conf 关键字和规则不能简单地混入 Lua 配置中。请先检查已安装的版本并参考官方文档。
将这些片段合并到现有配置中;它们不是完整的桌面安装程序。
识别当前会话
在 Hyprland 内的终端中运行:
检查合成器版本、输出名称、描述、模式和缩放比例。如果缺少 HYPRLAND_INSTANCE_SIGNATURE,说明当前 shell 没有实例连接,而不是 Hyprland 未安装。
不要从其他机器复制连接器名称。desc: 匹配可以承受连接器名称的变化,但需要足够唯一的描述;没有唯一信息的相同设备仍可能冲突。
提供备用输出规则
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = "auto",
})
这涵盖了没有单独规则的输出。在指定每个显示器之前验证它。一次只更改一个显示器或一个参数,以便故障可以归因。
推导逻辑坐标
在 1.5 倍缩放下,3840×2160 的显示器占用 2560×1440 的逻辑单位。90° 旋转会将这些尺寸交换为 1440×2560。位置使用这个逻辑空间。
| 显示器 | 物理模式 | 缩放/旋转 | 逻辑尺寸 | 原点 |
|---|---|---|---|---|
| A,左上 | 3840×2160 | 1.5, 180° | 2560×1440 | 0, 0 |
| B,左下 | 3840×2160 | 1.5, 正常 | 2560×1440 | 0, 1440 |
| C,右侧 | 3840×2160 | 1.5, 90° | 1440×2560 | 2560, 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。带宽、驱动程序行为和显示引擎资源都很重要;更高规格的线缆并不是通用的解决方案。
窗口和工作区键位
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" }))
合成器的 PATH 中必须包含 Ghostty。交互式 shell 启动可以添加合成器和用户服务从未接收到的路径。
工作区选择和窗口循环是不同的:
hl.bind("ALT + Tab", hl.dsp.focus({ workspace = "m+1" }))
hl.bind("ALT + grave", hl.dsp.window.cycle_next())
第一个使用当前输出上的相对工作区规则;第二个循环窗口。请在实际的显示器和工作区上验证行为。
规则、重载和恢复
在添加应用程序规则之前,使用 hyprctl clients -j 检查实际的类/标题值。标题可能因文档和语言环境而异,广泛的规则可能会影响意外的窗口。
阅读错误并重新测试终端启动、焦点和输出布局。Lua 解析本身并不能证明有效的 API 参数或支持的模式。
如果图形控制丢失,请通过准备好的 TTY 或远程访问恢复保存的配置,并重新进入会话。避免在没有恢复访问权限的情况下同时更改所有输出和登录启动。
逐步诊断显示问题
首先使用首选模式和普通缩放启动一个输出,然后恢复多个输出。比较 VRR 之前的固定刷新率,并在之后测试全屏/直接扫描输出条件。记录每次比较的连接器、模式、驱动程序、触发器和时间戳。
主题和 shell 配置属于 Matugen 和 Quickshell。启动环境问题属于 会话诊断。