XFCE4 显示优化,显示合成器参数说明及调优

Linux系统 0 28 团子精英 收藏

    适用 XFCE 4.12 / 4.14 / 4.16 / 4.18(RHEL 7/8 上多为 EPEL 的 XFCE)。窗口管理器须为 xfwm4。面向 VNC、SPICE、XRDP、X2Go、NoMachine、X11 转发等「画面要编码后传出去」的场景。本地独显游戏不要照搬「全关」。

1. 这篇解决什么

    XFCE 默认窗口管理器是 xfwm4。它自带合成器(compositor):把每个窗口先画到离屏缓冲,再叠阴影、半透明、淡入,最后贴到屏幕。本地显示器上这能换来阴影、半透明效果和较少撕裂;一旦桌面是远程的,合成器每一帧都会变成更大、更碎、更难压缩的像素,带宽和延迟一起涨。

    收益最大、也最常被忽略的开关是:

xfconf-query -c xfwm4 -p /general/use_compositing -t bool -s false

    改完立刻生效,不必重启 X,也不必注销(个别版本的 vblank_mode 除外)。先确认窗口管理器确实是 xfwm4:wmctrl -m 或 ps -C xfwm4。若实际在跑 Compiz、Marco、KWin、Mutter,改 xfwm4 通道无效。

2. 合成器为什么吃带宽、拖慢显示

    远程协议(RFB/VNC、SPICE、RDP)按「脏矩形」压缩画面。合成器打开时大致是:

    1. 每个 toplevel 窗口被 Composite Redirect,不直接画到根窗口。

    2. xfwm4 用 Render/GLX 把窗口、阴影、透明面板合成一张屏幕图。

    3. 移动窗口时,阴影拖尾导致周围一大片像素变化,远程编码器按帧重压。

    4. 半透明面板/终端让像素无法用单色矩形或 copyrect 优化。

    关合成器后,窗口不再被重定向到离屏缓冲,直接显示,拖动可用 X 的 CopyArea。VNC 的 copyrect、SPICE 的 image cache 都能重新生效。带宽下降、拖动跟手,是因为少画了、也好压了。

3. 图形界面怎么关

1. 应用菜单 → 设置 → 窗口管理器微调(Window Manager Tweaks)。

2. 打开最后一页「合成器 / Compositor」。

3. 取消勾选「启用显示合成 / Enable display compositing」。

    同一页还有窗口不透明度、移动/缩放时透明度、阴影。远程场景建议整页都「不透明 + 无阴影」。box_move / box_resize 不在这一页,而在「窗口管理器微调」的「无障碍(Accessibility)」页:勾选「移动/缩放窗口时隐藏窗口内容」(Hide content of windows when moving / resizing),对应 box_move / box_resize = true。不同版本界面文字可能略有出入,以 xfconf-query 的值为准。

xfconf-query -c xfwm4 -l -v | grep -E 'composit|opacity|shadow|vblank|unredirect|box_move|box_resize|zoom|cycle_preview'

4. 参数表(远程 / 瘦客户机推荐值)

    读写方式:xfconf-query -c xfwm4 -p /general/名字。「远程推荐」用于降带宽和加速绘制;本机带独显、在意撕裂时不要全抄。

属性

远程推荐

作用

对带宽/速度

/general/use_compositing

false

总开关。false=不走离屏合成

最大收益,立刻少一层全屏合成

/general/unredirect_overlays

true

合成器仍开时,全屏窗口绕过合成

全屏视频/GL 少拷一次

/general/show_frame_shadow

false

普通窗口阴影

拖动时脏区小一圈

/general/show_dock_shadow

false

面板/dock 阴影

面板附近少半透明像素

/general/show_popup_shadow

false

菜单、tooltip 阴影

菜单弹出更干净

/general/shadow_opacity

0

阴影浓度 0–100

即使忘了关阴影也不发虚

/general/frame_opacity

100

窗口边框不透明度

100=不透明,可矩形压缩

/general/inactive_opacity

100

非活动窗口

避免失焦变半透明

/general/move_opacity

100

移动窗口过程中

拖动时不要透视桌面

/general/resize_opacity

100

缩放窗口过程中

同上

/general/popup_opacity

100

弹出菜单

菜单不透底

/general/vblank_mode

off

auto / glx / xpresent / off

远程不必等 vsync;需 xfwm4 --replace

/general/zoom_desktop

false

Alt+滚轮桌面放大

少一个全屏缩放路径

/general/cycle_preview

false

Alt+Tab 缩略图

切窗口时少抓 pixmap

/general/box_move

true

移动时只画线框

拖动带宽断崖下降

/general/box_resize

true

缩放时只画线框

同上

/general/horiz_scroll_opacity

false

水平滚轮调透明度

防止误触半透明

 

5. 一条命令套装

    在图形登录后的用户会话里执行(xfconf 按用户隔离)。root 改自己的会话改不到普通用户。没有 DISPLAY 时命令会失败。若某条命令提示属性不存在,说明该属性在你的 xfwm4.xml 里还没有,在命令末尾加 --create(-t 类型照写)即可。

# 总开关:关合成
xfconf-query -c xfwm4 -p /general/use_compositing -t bool -s false

# 阴影全关
xfconf-query -c xfwm4 -p /general/show_frame_shadow -t bool -s false
xfconf-query -c xfwm4 -p /general/show_dock_shadow  -t bool -s false
xfconf-query -c xfwm4 -p /general/show_popup_shadow -t bool -s false
xfconf-query -c xfwm4 -p /general/shadow_opacity    -t int  -s 0

# 全部不透明(合成器万一又被打开也不发虚)
xfconf-query -c xfwm4 -p /general/frame_opacity    -t int  -s 100
xfconf-query -c xfwm4 -p /general/inactive_opacity -t int  -s 100
xfconf-query -c xfwm4 -p /general/move_opacity     -t int  -s 100
xfconf-query -c xfwm4 -p /general/resize_opacity   -t int  -s 100
xfconf-query -c xfwm4 -p /general/popup_opacity    -t int  -s 100

# 线框移动/缩放;关掉桌面缩放和 Alt-Tab 预览
xfconf-query -c xfwm4 -p /general/box_move             -t bool -s true
xfconf-query -c xfwm4 -p /general/box_resize           -t bool -s true
xfconf-query -c xfwm4 -p /general/zoom_desktop         -t bool -s false
xfconf-query -c xfwm4 -p /general/cycle_preview        -t bool -s false
xfconf-query -c xfwm4 -p /general/horiz_scroll_opacity -t bool -s false
xfconf-query -c xfwm4 -p /general/unredirect_overlays  -t bool -s true

# vsync 关掉(可能需要 --create),然后替换窗口管理器
xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s off --create
xfwm4 --replace &

    临时翻转合成器(适合绑快捷键,会议投屏卡顿时一键关特效):

xfconf-query -c xfwm4 -p /general/use_compositing -T

    配套脚本:scripts/xfce-fast-display.sh 。加 --restore 可大致恢复本机观感默认。

6. 合成器必须留着时的折中

    无边框透明终端、录屏、本机 Intel 卡靠合成器减撕裂时,不要关总开关,按下面砍特效:

    1. 三颗阴影全 false,shadow_opacity=0。

    2. 五种 opacity 全 100。

    3. unredirect_overlays=true(全屏播放器/GL 不再被合成)。

    4. vblank_mode=off,或按显卡试 xpresent(较新 AMD)/ glx(Intel)。远程优先 off。

    5. cycle_preview=false,zoom_desktop=false。

    不注销、只换 vblank 试手感:

xfwm4 --vblank=off --replace &

    注意:use_compositing 多数版本热更新;vblank_mode 不会。必须 xfwm4 --replace &,不要在 tty 里 kill 掉 xfwm4 后不管,否则会丢掉窗口装饰。

7. 桌面、面板、GTK:合成器以外同样吃带宽

7.1 壁纸改纯色

    大图壁纸一滚动、一露出桌面就要传整屏 JPEG。纯色几乎为零流量。图形界面:设置 → 桌面 → 样式选「无」,颜色选深灰或纯黑。

xfconf-query -c xfce4-desktop -l | grep -i image-style
# image-style 0=无图。多屏时属性路径可能是 monitorDP-1 等
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/workspace0/image-style -s 0

7.2 面板不要透明

xfconf-query -c xfce4-panel -l | grep -i background
# background-style: 0=无(跟随主题)  1=纯色  2=背景图(没有“透明”这一档)
# 面板编号以上面 -l 输出为准,默认面板通常是 panel-1
xfconf-query -c xfce4-panel -p /panels/panel-1/background-style -t int -s 1
# XFCE 4.12:用 background-alpha(0-100)
xfconf-query -c xfce4-panel -p /panels/panel-1/background-alpha -t int -s 100
# XFCE 4.14 及以后:改用 background-rgba(R G B A,最后一项 1.0=不透明)
xfconf-query -c xfce4-panel -p /panels/panel-1/background-rgba -t double -t double -t double -t double -s 0.2 -s 0.2 -s 0.2 -s 1.0 --create
xfce4-panel -r

7.3 关掉 GTK 动画与提示音

xfconf-query -c xsettings -p /Net/EnableEventSounds -t bool -s false
xfconf-query -c xsettings -p /Net/EnableInputFeedbackSounds -t bool -s false
# GTK 动画:走 xsettings 通道(会覆盖 gtk-3.0/settings.ini 里的同名项)
xfconf-query -c xsettings -p /Gtk/EnableAnimations -t bool -s false --create

7.4 Thunar 缩略图

    远程打开图片、视频多的目录时,缩略图会变成成百张小 JPEG。设置 → 文件管理器 → 显示 → 缩略图「从不」,或:

xfconf-query -c thunar -p /misc-thumbnail-mode -s THUNAR_THUMBNAIL_MODE_NEVER

8. 远程协议侧再砍一刀

通道

建议

Ftu/Xlink

 建议使用use_compositing=false

TigerVNC / x11vnc

色深 16 或 24;开 Tight/ZRLE;关高质量 JPEG。合成器关后 copyrect 才有用。

SPICE

客户端勿滥用 jpeg wan;服务端 streaming-video=off,除非真在放视频。

XRDP

用 xorgxrdp 而不是嵌套 VNC;max bpp=24。

X2Go

无自定义壁纸 + 无合成;压缩方式选 jpeg/png 类(如 16m-jpeg、4k-png),质量选中档(约 4–6),不要选 0。

ssh -X / -Y

合成器几乎无意义且极慢。务必 use_compositing=false;整桌面优先改用 VNC/SPICE。

 

    显示尺寸也是线性成本:远程会话用 1280×720 或 1600×900,不要默认 4K。XFCE:设置 → 显示,或 xrandr --output … --mode 1600x900。

9. 怎么验证变快、变省

    1. xfconf-query -c xfwm4 -p /general/use_compositing 应为 false。拖动窗口应出现线框(若开了 box_move),不应有阴影拖尾。

    2. 拖动窗口时不应再出现阴影或半透明拖尾;这是最直观的判断。(不建议用 xprop -root 查 _NET_WM_CM_S0:它是 selection,不是 root 属性,    xprop 查不到。)

    3. VNC 中持续拖动大窗口,对比开关前后 iftop 或客户端统计。常见观感是从「发糊的 JPEG 瀑布」变成「整窗平移」。

    4. top 里 xfwm4 在拖动时不应再占满一核;Xorg / Xtigervnc / spice 编码 CPU 应下降。

    落地顺序:① 关合成器 → ② 线框拖动 → ③ 纯色桌面 → ④ 降低分辨率 → ⑤ 再调 VNC/SPICE/RDP 编码器。只做第 1 步,多数 VNC 会话已经能从「能用」变成「跟手」。

10. 还原、持久化、注意点

10.1 配置落在哪

    用户级 xfconf:~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml。kickstart/ansible 应改这一份,或登录后跑脚本。改 /etc/xdg/xfce4/xfconf/… 只影响尚未有个人配置的新用户。

10.2 恢复本机观感

xfconf-query -c xfwm4 -p /general/use_compositing -s true
xfconf-query -c xfwm4 -p /general/show_frame_shadow -s true
xfconf-query -c xfwm4 -p /general/box_move -s false
xfconf-query -c xfwm4 -p /general/box_resize -s false
xfconf-query -c xfwm4 -p /general/vblank_mode -t string -s auto --create
xfwm4 --replace &

10.3 不要踩的坑

· 在 ssh 文本会话里改 xfconf:没有 DISPLAY 和会话 DBus 时会改空通道或失败。应带上 DISPLAY=:0 和 DBUS_SESSION_BUS_ADDRESS,或直接在桌面终端跑。

· XFCE 默认合成器就是 xfwm4,不是 picom。只有自己又装了独立 compositor 才需要停 picom。

· xfwm4 合成 + picom 同时开会花屏或吃双倍 GPU。远程两者都关。

· 本机游戏/浏览器视频撕裂是关 vsync 的代价。本机把 vblank_mode 改回 glx 或 auto;合成器可以开着但阴影关掉。

· Wayland:官方 XFCE 仍以 X11 为主。若发行版用 labwc/Wayland,这些 xfconf 项不适用。

最短记忆:远程 XFCE 四件事——use_compositing=false,box_move/box_resize=true,纯色桌面,分辨率不要 4K。参数表其余项是防止总开关又被设置向导打开时的保险。

 


相关推荐:

网友留言:

您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码