Debian 12 Wayland会话下无法运行自定义分辨率脚本解决老电视过扫描问题
我太懂你这种凑活用老设备的处境了——Windows下一切顺畅,换到Debian 12的Wayland会话,自定义分辨率的脚本就彻底哑火,老电视的过扫描还把画面切得没法用。别慌,咱们一步步把这个问题搞定。
先复盘下你的设备和核心问题:
- 硬件:i5 6600 + Intel HD 530,内置SSD跑Win11,外置HDD装Debian 12(KDE Plasma,支持X11/Wayland)
- 连接:DP转HDMI转接器(主板没HDMI,电视没DP)
- 痛点:X11下用
res.sh设1792x1008能避开过扫描,但Wayland下换XWAYLAND0的脚本完全没用;电视对所有16:9分辨率都过扫描,唯独1792x1008正常
核心问题:Wayland下你找错了输出名称!
你之前默认用XWAYLAND0是误区——Wayland下Xrandr是通过XWayland兼容层工作的,输出名称大概率和X11下一样,比如还是HDMI-3,而不是什么XWAYLAND0。咱们先确认正确的输出名称:
第一步:找出Wayland下的真实输出名称
打开终端,直接运行:
xrandr --query
找带connected标记的那一行,比如显示HDMI-3 connected 1360x768+0+0,这就是你要操作的输出名称,记下来。
方案一:修改Wayland脚本(沿用Xrandr)
把你的wayland_res.sh里的XWAYLAND0换成上面找到的真实名称(比如HDMI-3),修改后的脚本如下:
#!/bin/bash # 创建自定义分辨率模式 xrandr --newmode "1792x1008_60.00" 149.50 1792 1904 2088 2384 1008 1011 1016 1046 -hsync +vsync # 将模式添加到正确的输出设备 xrandr --addmode HDMI-3 "1792x1008_60.00" # 应用该分辨率 xrandr --output HDMI-3 --mode "1792x1008_60.00"
给脚本加执行权限:
chmod +x wayland_res.sh
然后运行试试,应该就能正常生效了。
方案二:用Wayland原生工具(更稳定)
如果Xrandr的兼容层还是出问题,试试Wayland原生的工具,KDE下推荐用wlr-randr:
- 先安装工具:
sudo apt install wlroots-tools
- 还是先确认Wayland原生输出名称:
kscreen-doctor -o
找到标记为connected的输出,比如HDMI-A-1。
3. 编写新的Wayland脚本:
#!/bin/bash # 添加自定义分辨率到目标输出 wlr-randr --output HDMI-A-1 --add-mode 1792x1008@60Hz # 应用该分辨率 wlr-randr --output HDMI-A-1 --mode 1792x1008@60Hz
同样加执行权限后运行,这个是Wayland原生支持的,稳定性更好。
方案三:不用脚本,图形界面搞定
其实KDE Plasma的图形界面就能添加自定义分辨率,不用写脚本:
- 打开系统设置→显示和监控
- 选中你的电视输出,点击分辨率下拉菜单,看看有没有「添加自定义分辨率」选项
- 输入分辨率
1792x1008,刷新率60Hz,点击添加,然后选择这个分辨率应用即可。
额外小技巧:直接解决过扫描问题
如果你不想折腾自定义分辨率,试试调整Wayland下的屏幕缩放:
- 在KDE显示设置里,看看有没有「调整屏幕边缘」的选项,拖动滑块把显示区域缩小到电视可视范围内,1920x1080也能正常用。
- 或者用命令行快速调整:
# 把HDMI-A-1换成你的输出名称,0.9是缩放比例,可按需调整(比如0.85、0.92) kwriteconfig5 --file kwinrc --group Outputs --key HDMI-A-1-scaling 0.9 qdbus org.kde.KWin /KWin reconfigure
这些方法应该能帮你解决Wayland下的分辨率问题,毕竟你已经找到了适合电视的分辨率,只是Wayland下的输出名称和工具逻辑和X11不一样而已。
备注:内容来源于stack exchange,提问作者leolamarra

