Compton与Xrandr在屏幕分辨率调整中的角色与技巧
Compton是一款轻量级窗口合成器(现逐步被Picom取代),主要用于实现窗口透明、阴影等视觉效果,本身不直接提供分辨率调整功能;而xrandr是X Window系统的官方显示配置工具,负责管理显示器的分辨率、刷新率、多屏布局等核心显示参数,是Linux下调整分辨率的主要命令行工具。两者的关联在于:Compton的配置可通过间接参数影响显示效果,但实际分辨率调整需依赖xrandr完成。
xrandr是调整分辨率的灵活工具,适用于大多数Linux发行版(如Ubuntu、Fedora、Arch等),以下是具体步骤:
在终端输入xrandr,输出会列出所有连接的显示器(如eDP-1代表内置屏幕、HDMI-1代表外接HDMI显示器)及其支持的分辨率列表,当前使用的分辨率会标记为*+(如1920x1080 60.02*+)。
若所需分辨率已在xrandr列表中,可直接指定输出设备(如eDP-1)和分辨率:
xrandr --output eDP-1 --mode 1920x1080
该命令将eDP-1的分辨率切换为1920x1080。
若所需分辨率未列出(如2560x1440),需通过以下步骤手动添加:
cvt命令生成对应分辨率的Modeline(参数为宽度、高度、刷新率,如2560x1440@60Hz):cvt 2560 1440 60
输出示例:Modeline "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
Modeline后的内容(去掉Modeline和引号),使用xrandr --newmode创建模式,再用xrandr --addmode关联到显示器:xrandr --newmode "2560x1440_60.00" 312.25 2560 2752 3024 3488 1440 1443 1448 1493 -hsync +vsync
xrandr --addmode eDP-1 2560x1440_60.00
xrandr --output eDP-1 --mode 2560x1440_60.00
若新分辨率显示异常,可追加sleep 5 && xrandr --output eDP-1 --mode 1920x1080(切换回原分辨率)避免困在无效模式。若使用双屏,可通过xrandr调整屏幕位置(如右对齐、左对齐):
xrandr --output HDMI-1 --auto --right-of eDP-1 # 将HDMI-1放在eDP-1右侧
xrandr --output HDMI-1 --auto --left-of eDP-1 # 左对齐
还可设置屏幕旋转(如横向旋转):
xrandr --output HDMI-1 --rotate left
```。
### **二、通过图形界面调整分辨率(简单方法)**
若不想使用命令行,大多数现代Linux桌面环境(如GNOME、KDE Plasma、XFCE)提供图形化工具:
- **GNOME**:点击桌面右上角系统菜单→“设置”→“显示”,在“分辨率”下拉菜单中选择所需分辨率(推荐选择“原生”或“推荐”)。
- **KDE Plasma**:点击系统菜单→“系统设置”→“显示和监视器”,在“分辨率”选项中调整。
- **XFCE**:点击桌面右键→“显示设置”,在“分辨率”列表中选择。
### **三、Compton的间接影响配置(非分辨率调整)**
虽然Compton不直接调整分辨率,但可通过修改其配置文件(通常位于`~/.config/compton.conf`或`/etc/compton.conf`)优化显示效果,例如:
- **调整DPI(间接影响显示密度)**:添加`downscale-dpi = 96`(标准DPI值为96,可根据屏幕实际情况调整,如120)。
- **设置合成器后端**:若使用Wayland,可将`backend = "glx"`改为`backend = "wayland"`(需系统支持)。
修改后需重启Compton使配置生效(`killall compton && compton`)。
### **四、永久保存分辨率设置(避免重启失效)**
若需每次开机自动应用分辨率设置,可将xrandr命令添加到启动脚本:
- 对于使用`.xprofile`的用户(如Ubuntu),编辑`~/.xprofile`文件,添加xrandr命令:
```bash
xrandr --output eDP-1 --mode 1920x1080
.xinitrc的用户(如Arch),编辑~/.xinitrc文件,在exec命令前添加xrandr命令。cvt生成正确的Modeline,避免手动输入错误;Ctrl+Alt+F2);