405 字
1 分钟
解决 Fcitx5 在 XWayland 下缩放异常:设定X DPI
前言
本文适用于使用 Hyprland / Sway 等 Wayland 合成器 的用户,特别是遇到 Fcitx5 候选窗在 XWayland 应用中太小、在原生 Wayland 中太大 的问题。
🔍 问题简述
- XWayland 应用(如微信、Steam)中 Fcitx5 候选窗太小;
- 原生 Wayland 应用中又太大;
- 根本原因:XWayland 默认使用 96 DPI,而 Fcitx5 在 Wayland 下会自动按显示器 scale 放大 UI。
解决方案:根据环境变量动态设置 DPI(以GDK_SCALE为例)
1. 安装 xrdb(如未安装)
sudo pacman -S --needed xorg-xrdb2. 设置开机自动执行
Hyprland为例(在 ~/.config/hypr/hyprland.conf 中):
exec-once = dpi=$(awk "BEGIN {print (${GDK_SCALE:-1}) * 96}");echo "Xft.dpi: $dpi" | xrdb -merge#如果使用的zsh的话exec-once = dpi=$((${GDK_SCALE:-1} * 96)); echo "Xft.dpi: $dpi" | xrdb -merge💡 说明:
${GDK_SCALE:-1}表示:如果GDK_SCALE未设置,默认为1;- 若你使用的是 2x 缩放屏幕,通常
GDK_SCALE=2,则 DPI =2 × 96 = 192;- 此命令不依赖任何配置文件,直接通过管道写入 X resource 数据库。
3. 重启 Fcitx5
fcitx5 -rd🧪 验证是否生效
xrdb -query | grep Xft.dpi应输出类似:
Xft.dpi: 192同时确认你的显示器缩放因子(例如在 Hyprland 中):
hyprctl monitors | grep scale⚠️ 注意事项
-
如果你没有设置
GDK_SCALE,但实际使用了 2x 缩放,请确保在登录前或合成器配置中导出它:env = GDK_SCALE,2(Hyprland 示例;Sway 可在
sway/config中用env GDK_SCALE=2) -
取消原来对XWayland的缩放,因为设置DPI后会导致双倍缩放但是如果
QQ使用了XWayland(这是解决复制问题),请保留缩放设置(因为QQ会发疯般变大,但
force-device-scale-factor参数可以覆盖 DPI 设置,弥补了这一点)Exec=sh -c 'exec linuxqq --ozone-platform-hint=x11 --force-device-scale-factor="${GDK_SCALE:-1}" "$@"' sh %Uexec-once = sh -c 'exec uwsm-app -- linuxqq --ozone-platform-hint=x11 --force-device-scale-factor="${GDK_SCALE:-1}"'Exec=env GDK_SCALE=1 SDL_VIDEODRIVER=x11 LANG=zh_CN.UTF-8 /usr/bin/steam %U -
QT_SCALE_FACTOR不影响此设置,因为xrdb是 X11 层的标准,Qt/GTK 应用都会读取Xft.dpi。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
解决 Fcitx5 在 XWayland 下缩放异常:设定X DPI
https://hyperbola.cc/posts/tech/linux-desktop/解决-fcitx5-在-xwayland-下缩放异常设定x-dpi/ 部分信息可能已经过时
相关文章 智能推荐
1
Arch Fcitx5+Rime+Rime-ice从0开始的输入法配置
Desktop 从零开始在 Arch Linux 上配置 Fcitx5 + Rime + Rime-ice 输入法的完整流程
2
Zen Browser 开启 NVIDIA 硬解(VA-API)实战记录
Desktop 记录 Zen Browser 在 Wayland + NVIDIA 环境下从软件解码切换到 VA-API 硬件解码的完整排查与配置过程
3
解决 Clash Verge Rev 频繁弹出 Polkit 密码框
Desktop 解决Linux桌面环境下Clash Verge Rev频繁弹出Polkit认证对话框的方法
4
三节点 ZeroTier 内网下,基于 Keepalived + HAProxy 的 PostgreSQL 读写分离与 K3s 高可用实践
Networking 在三台 Debian 云主机间用 ZeroTier 建立二层网络,部署 Patroni 管理的 PostgreSQL 流复制集群与 K3s 控制平面,再用 Keepalived 与 HAProxy 实现虚拟 IP 入口、读写分离和 API Server 高可用
5
基于Patroni与etcd的PostgreSQL高可用集群
Database 在已有 K3s 集群的三台 Debian 节点上部署独立于 K8s 的 Patroni + etcd 方案,实现 PostgreSQL 17 高可用,并通过标签优先级确保指定节点始终为主库






湘公网安备43010402002198号