xrandr可直接应用已识别的分辨率,需先运行xrandr确认显示器为connected状态且目标分辨率在列表中,再执行xrandr --output 显示器名 --mode 分辨率(如xrandr --output HDMI-1 --mode 1920x1080)。

怎么用 xrandr 设置已列出的分辨率
xrandr 能直接应用系统已识别的分辨率,前提是目标值出现在 xrandr 输出的“connected”显示器模式列表里。
常见错误是抄错显示器名(比如把 HDMI-1 写成 HDMI1)或漏掉空格(--outputHDMI-1 会报错)。
执行前务必先运行:xrandr,确认两件事:
- 显示器状态为 connected(不是 disconnected)
- 目标分辨率(如 1920x1080)在该显示器行末的可用模式中
设置命令格式固定:xrandr --output <显示器名称> --mode <分辨率>
例如:xrandr --output eDP-1 --mode 1366x768
如果还要指定刷新率(比如 60Hz),加 --rate 60 参数:xrandr --output HDMI-1 --mode 1920x1080 --rate 60
为什么 cvt + xrandr --newmode 是必须的
当 xrandr 输出里没有你想要的分辨率(比如想设 2560x1440,但列表只有到 1920x1080),说明显卡驱动或 EDID 没报告该模式,不能硬套。
cvt 不是随便凑数字,它按 VESA 标准生成符合时序要求的 Modeline,避免黑屏或同步错误。
典型流程:
- 运行 cvt 2560 1440 60(宽、高、刷新率)
- 复制输出中 Modeline 后整行(含引号和所有参数)
- 用 xrandr --newmode 注册它,注意引号不能丢、空格不能多也不能少
- 再用 xrandr --addmode 绑定到具体显示器(如 eDP-1)
- 最后 --output --mode 应用
容易踩坑:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 把
cvt输出里的#行误当成可执行命令复制 -
--newmode中的模式名(如"2560x1440_60.00")和--addmode里不一致 - 忘记先
--addmode就直接--mode,报错specified mode not available
如何让命令行设置开机生效
xrandr 命令只对当前会话有效,重启就还原。永久生效要靠自动执行,但别往 ~/.bashrc 里硬塞——它只在终端启动时运行,图形界面登录时不触发。
正确做法是:
- 把完整命令(如 xrandr --output HDMI-1 --mode 1920x1080)写进 ~/.profile 或 ~/.xprofile(GNOME 推荐后者)
- 或者创建桌面自动启动项:~/.config/autostart/xrandr.desktop,内容包含 Exec=sh -c "sleep 2 && xrandr --output ..."(加 sleep 2 防 GUI 未就绪)
- 不要用 sudo,普通用户权限足够;也不建议改 /etc/X11/xorg.conf,现代 Ubuntu 多数用 Wayland 或自动配置,手动写 Xorg 文件反而易冲突
虚拟机里分辨率设不上怎么办
VirtualBox / VMware 的 Ubuntu 虚拟机常出现xrandr 列不出高分辨率,根本原因是显卡驱动没装或 Guest Additions / Tools 未启用。
先确认:
- VirtualBox:设备 → 安装增强功能;VMware:虚拟机 → 安装 VMware Tools
- 重启虚拟机后,再运行 xrandr,应看到类似 Virtual1 connected 和更多模式
- 若仍不行,尝试加载 vboxvideo 或 vmwgfx 模块:lsmod | grep vbox 或 grep vmw /proc/modules
- 极端情况可临时降级:用 xrandr -s 1024x768(旧式快捷命令,仅限 Xorg,Wayland 下无效)
实际调的时候,xrandr 的输出细节比 GUI 设置更真实——它反映硬件+驱动的真实能力,而不是系统“以为”能支持什么。很多所谓“黑屏”“花屏”,其实只是 Modeline 参数稍越界,换一组 cvt 参数(比如改 59.96Hz 试试)就能绕过。

















