x11vnc导致KDE Plasma屏幕关闭时重置,请求恢复屏幕关闭状态下正常VNC远程功能
x11vnc导致KDE Plasma屏幕关闭时重置,请求恢复屏幕关闭状态下正常VNC远程功能
看起来你遇到的问题是KDE Plasma的电源管理和x11vnc的交互出了状况——之前能在屏幕关闭的状态下正常远程操作,现在屏幕一休眠(不管是自动超时还是手动关闭),VNC客户端就收不到画面更新,必须唤醒屏幕才能恢复。结合你的Ubuntu Studio 22.04 + KDE环境,我整理了几个实用的解决方向,你可以逐个尝试:
1. 调整x11vnc启动参数,适配屏幕休眠场景
你的x11vnc命令里用了-noxdamage,这个参数会关闭XDamage扩展的使用,而XDamage原本是x11vnc高效捕捉屏幕更新的关键。当KDE关闭屏幕进入休眠时,可能会暂停XDamage相关的更新推送,这时候调整参数或许能解决问题:
- 去掉
-noxdamage,改用默认的-damage(或者直接不写这个参数,因为默认是开启的),让x11vnc依赖XDamage获取屏幕更新,即使屏幕休眠也能正常工作 - 添加
-display :0明确指定X11显示设备,避免屏幕休眠后x11vnc找不到正确的显示上下文 - 加上
-ncache 10开启画面缓存,提升远程显示的稳定性,尤其是在屏幕状态切换时
修改后的x11vnc命令示例:
x11vnc -clip $GEOMETRY -auth /path/to/.Xauthority -forever -loop10 -damage -repeat -rfbauth /path/to/passwd -rfbport 5900 -shared -display :0 -ncache 10 &
2. 配置KDE Plasma电源管理,允许远程访问时保持屏幕更新
KDE的电源管理可能有一些隐藏的节能设置,会在屏幕休眠时中断远程服务的运行,你可以这么调整:
- 打开系统设置 > 电源管理 > 节能,找到“当屏幕关闭时”的相关选项,确保没有勾选“禁用不必要的服务”这类可能影响远程连接的设置
- 进入系统设置 > 显示和监视器 > 显示配置,点击右上角的更多设置,看看是否有“远程访问时保持屏幕活动”的选项,开启它
- 另外,检查系统设置 > 隐私与安全 > 屏幕保护程序,暂时关闭屏幕保护程序测试,避免它干扰X11的显示连接
3. 换用KDE官方的VNC服务(krfb)
你提到之前可能用的是KDE默认的VNC服务器,那krfb就是Plasma官方适配的远程桌面工具,它和KDE的集成度更高,不会出现屏幕休眠后断更的问题:
- 先停止当前运行的x11vnc:
pkill x11vnc - 打开系统设置 > 共享 > 远程桌面,开启“允许远程连接”,设置好访问密码和端口
- 测试关闭屏幕后的远程访问,krfb会自动处理屏幕休眠时的画面更新,不需要额外的脚本配置
4. 优化login.sh的启动时机和权限
你的login.sh是登录后执行的,可能存在启动过早的问题,导致x11vnc没有正确绑定到KDE的显示会话:
- 把脚本里的
sleep 10改成sleep 15,确保KDE桌面完全加载后再启动x11vnc - 检查脚本的可执行权限:
chmod +x ~/login.sh - 尝试把脚本添加到系统设置 > 开机和关机 > 自动启动中,而不是手动调用,这样能确保脚本在正确的会话环境下运行
备注:内容来源于stack exchange,提问作者AaronD




