这是问题的图片:
请注意,所有文本行都有类似于下划线的水平线。然而,这是一个纯文本编辑器(Kate),它不支持下划线。此文本没有应用任何格式。
我选择了文本,以便线条在照片中显示得更好。但即使没有选择文本,这些线条仍然存在。有时它们更厚更暗。有时它们很轻。有时他们根本不在那里,只是随机回来。
Konsole 也有同样的问题。由于黑底白字,Konsole 有时会显示多色水平线。有时,Konsole 中的每一行都有这种丑陋且分散注意力的下划线。有时只有一部分线路有它。
有时,线条过于密集和势不可挡,以至于很难阅读文字。其他时候,线条很轻微,如所附照片所示。
大约十个月前,我第一次在台式计算机上看到这个问题。我认为用户刚刚在字体设置中做了一些非常疯狂的事情。但现在我在一台新笔记本电脑上看到了这个问题,默认设置没有发生任何重大变化。
两个系统都运行完全更新的 Arch Linux KDE。在这台笔记本电脑上,我将所有字体设置(在系统设置中)重置为默认值。我还将 Konsole 配置文件外观重置为默认设置(即使设置已为默认值)。
然而,水平线不会消失。
应用程序正常工作(除了有时难以阅读文本)。复制的文本不包括水平线。 Konsole 中的命令不受水平线外观的影响。这似乎是一个显示故障,但它并不特定于任何 GPU(影响 Intel 或 nvidia)或任何显示屏(我在桌面上测试了不同的显示器)或我可以确定的任何其他内容。
在过去的十个月里,我在受影响的桌面上尝试了各种修复,但也没有在那台计算机上解决它。
我还有多台其他 Arch KDE 计算机没有这个问题。
有谁知道可能导致此问题的原因吗?还有其他人看过吗?
编辑:请参阅 Konsole 的 KDE 错误报告:
373232 – 具有分数 HiDPI 缩放的水平线
答案1
升级到 Qt 5.12 没问题,但似乎并不能立即解决问题。在高级选项卡下的 Konsole 配置文件设置中,更改“行距”为 1。这为我解决了水平线的问题。
答案2
据报道,这个问题已经解决QTBUG-66036版本 5.12。截至我撰写本文时,Arch Linux 上的 QT 版本为 5.11.2-1。其他常见发行版也没有发布 Qt 5.12 的软件包。然而,当 Qt 5.12 发布时,开发人员希望这个问题能够得到解决。
要检查您的 Qt 版本,您可以打开终端并输入:
qmake --version
输出将类似于此
QMake version 3.1
Using Qt version 5.11.1 in /usr/lib
当您看到 Qt 版本 5.12 时,您就可以期待解决方案。如果没有,请让开发人员知道QTBUG-66036。
同时,有一个解决方法,如下面的错误报告中所述
重现步骤:
- 显示 -> 比例 -> 比例因子:1.3(或 1.4 等)
- 重新开始
- 打开 Konsole 或 Kate,输入内容
解决方法:将“比例因子”设置回 1.0(或整数,例如 2 或 3)。
这里有一个类似的 Konsole 错误报告
373232 – 具有分数 HiDPI 缩放的水平线
https://bugs.kde.org/show_bug.cgi?id=373232
答案3
作为解决方法,您可以更改字体分辨率:
- 转到
Fonts
,选中该框Force Fonts DPI
- 设置为适当的值(我
144
在2560x1440屏幕上使用,你可能想尝试192
4K)- 更高的 DPI 会转化为屏幕上更大的文本
- 将显示比例因子设置回 1
- 注销并登录您的用户(或重新启动)
此时水平线应该消失,您应该能够阅读屏幕上的所有内容
答案4
按照 Nico 的说明将系统文本 DPI 更改为更高的值(例如 144、192 等)后,有一种方法可以再次打开显示缩放并让 Kate 看起来不错。但是,结果可能因桌面环境而异。
将显示缩放比例设置为所需的小数值(我碰巧使用 1.5 倍)。
QT_SCREEN_SCALE_FACTORS=1
您可以为对 Kate 的单次调用设置环境变量。
QT_SCREEN_SCALE_FACTORS=1 kate
您可以为所有对 Kate 的调用制作一个包装脚本
#!/bin/bash
cd $HOME
# Add home binaries directory & cd into it
mkdir -p bin && cd bin
# Symlink Kate executable as kate0
ln -s $(which kate) kate0
# Create the wrapper script
echo '#!/bin/bash' > kate
# This tells Kate to use a 1x scale factor, and to pass all arguments from wrapper
echo 'QT_SCREEN_SCALE_FACTORS=1 kate0 "$@"' >> kate
# Make the wrapper script executable
chmod +x kate
然后确保它$HOME/bin
在你的$PATH
.如果没有,那么您可以通过添加它
export PATH="$HOME/bin:$PATH"
添加它以~/.profile
使其永久。
请注意,为了使其正常工作,您的主脚本必须位于环境变量/usr/bin
中原始 Kate 可执行文件(例如 )的路径之前$PATH
。