Ubuntu 下 TigerVNC 切换分辨率的实用方法
一 临时切换分辨率
- 查看当前会话与显示名:在 VNC 会话中执行
- vncserver -list(确认显示编号,如 :1)
- xrandr(查看输出名,通常为 VNC-0)
- 直接指定新分辨率(会立即生效,但下次启动会恢复)
- vncserver -kill :1
- vncserver :1 -geometry 1920x1080
- 说明:显示编号 :1 对应端口 5901(5900 + 显示编号)。
二 会话内动态切换并持久化到模式列表
- 若目标分辨率不在列表中,先生成并添加模式(以 1600x900@60Hz 为例):
- cvt 1600 900 60
- xrandr --newmode “1600x900_60.00” 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
- xrandr --addmode VNC-0 “1600x900_60.00”
- xrandr --output VNC-0 --mode “1600x900_60.00”
- 之后可在会话内随时用 xrandr 切换:
- xrandr --output VNC-0 --mode “1600x900_60.00”
- 提示:上述模式只在当前会话有效,重登后会丢失;如需持久,见下节的服务配置方式。
三 使用 systemd 服务设置默认分辨率
- 编辑对应实例的服务文件(以 :1 为例):
- sudo systemctl edit --full vncserver@:1.service
- 在 [Service] 的 ExecStart 行加入 -geometry 参数,例如:
- ExecStart=/usr/bin/vncserver :%i -geometry 1920x1080 -localhost no
- 使配置生效并重启:
- sudo systemctl daemon-reload
- sudo systemctl restart vncserver@:1.service
- 说明:这是 Ubuntu 上 TigerVNC 推荐的做法,可确保每次启动都使用设定分辨率。
四 常见问题与排查
- 客户端里没有目标分辨率:先用 xrandr 确认输出名(如 VNC-0),再用 cvt 生成模式并 –newmode/–addmode/–output 添加后切换。
- 设置后黑屏或客户端断开:这是添加新模式后的常见现象,重新连接即可看到新分辨率生效。
- 端口与防火墙:显示编号 :1 对应端口 5901;确保云服务器或本机防火墙放行该端口。