KAL1 LINUX 官方文档之通用---修复DPI(每英寸点数)/大字体
启动Kali Linux后,某些事情可能看起来比预期的要大。这可能是因为DPI(每英寸点数)/ PPI(每英寸像素数)不正确。如果看起来比预期的要小,您可能希望查看我们的HiDPI指南。
这可能是由于各种原因而发生的,例如导致问题的图形卡驱动程序和/或显示器配置文件。
本指南将涵盖单屏设置。我们没有足够的硬件来测试多屏输出以编写指南。所以我们正在寻找社区的贡献来帮助我们。如果你有硬件和专业知识,请编辑本指南。
问题
打开某些应用程序后,字体可能会比预期的要大,如下面的示例所示。在这里,您可以看到两种不同的终端软件,左侧的一个使用Qt(QTerminal
),右侧的一个使用GTK(xfce4-terminal
)。
Qt太大,需要更改。首先,我们需要找到,将其更改为什么值,然后我们需要应用更改。
查找问题
我们首先使用xrdb,它在X服务器的数据库中查找(X是图形显示输出的主办),以查看那里的值:
kali@kali:~$ xrdb -q
*customization: -color
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintslight
Xft.rgba: rgb
Xcursor.theme_core: 1
kali@kali:~$
没有预定义DPI的迹象。是时候进入下一个工具了。
使用xdpyinfo,我们可以查看有关X的显示信息,该信息当前正在使用(实时获取定义信息,例如启动,新屏幕附加等):
kali@kali:~$ xdpyinfo | grep 'dimensions\|resolution'
dimensions: 1680x1050 pixels (160x90 millimeters)
resolution: 267x296 dots per inch
kali@kali:~$
我们只返回一次值,这意味着只有一台显示器。很好!但不太好的是,物理屏幕的尺寸,160x90mm,被检测到。这可能开始解释为什么字体非常大(因为DPI很大)。我们还可以看到屏幕分辨率设置为1680×1050,DPI为~267。
接下来,我们可以使用xrandr来处理扩展名RandR (调整大小和旋转),以查看报告的内容是否匹配:
kali@kali:~$ xrandr -q | grep -iw 'screen\|connected'
Screen 0: minimum 8 x 8, current 1680 x 1050, maximum 32767 x 32767
HDMI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 160mm x 90mm
kali@kali:~$
再次,一个显示器。同样,它的分辨率与xdpyinfo
告诉我们的相符。我们可以看到它使用HDMI电缆,并且分辨率和尺寸相同。
查看X的日志,我们可以看到:
kali@kali:~$ grep DPI /var/log/Xorg.0.log
[ 7.324] (--) NVIDIA(0): DPI set to (266, 296); computed from "UseEdidDpi" X config
kali@kali:~$
这非常接近xrandr
报告的DPI值(但相差1)。我们可以看到有问题的图形驱动器是NVIDIA,并且它试图从中获取DPI值EDID
(GPU试图从显示器读取数据)
如果愿意,我们可以使用edid-decode查看EDID的值:
kali@kali:~$ sudo apt install -y edid-decode kali@kali:~$ kali@kali:~$ xrandr --props | edid-decode -c -s EDID version: 1.3 ...SNIP... Maximum image size: 16 cm x 9 cm ...SNIP... Warnings: Block 0 (Base Block): Basic Display Parameters & Features: Dubious maximum image size (160x90 is smaller than 10x10 cm) Failures: All Blocks: One or more of the timings is out of range of the Monitor Ranges: Vertical Freq: 24 - 75 Hz (Monitor: 23 - 75 Hz) Horizontal Freq: 27.000 - 79.976 kHz (Monitor: 26.000 - 68.000 kHz) Maximum Clock: 148.500 MHz (Monitor: 150.000 MHz) EDID conformity: FAIL kali@kali:~$
因此,看来EDID中的值不正确,因此我们不应该监听监视器!我们将需要手动定义要使用的值。
最简单的方法是查看屏幕的品牌/型号(设备背面/下方是否贴有标签?)。否则,我们可以使用老式的方法来测量卷尺。
为什么错了?
那么操作系统认为我们的屏幕尺寸是多少?
使用一些数学运算(1cm
is 10mm
&25.4mm
is 1 inch
),我们可以将毫米(mm)转换为英寸(in):
请记住,输出为dimensions: 1680x1050 pixels (160x90 millimeters)
,因此我们将“ width”作为160
“height²”作为90
kali@kali:~$ echo 'print(160/25.4)' | python3
6.299212598425197 # 6.3 in
kali@kali:~$
kali@kali:~$ echo 'print(90/25.4)' | python3
3.543307086614173 # 3.5 in
kali@kali:~$
现在,我们可以通过执行√(width² + height²) = diagonal
以下操作找到对角线屏幕尺寸:
kali@kali:~$ echo 'print( ( ((160/25.4) ** 2)+((90/25.4) ** 2) ) ** (0.5) )' | python3
7.227385728616465 # 7.2 in
kali@kali:~$
屏幕背面的标签显示其20英寸,但仅检测到7.2英寸!
寻找正确值
使用公式√(width² + height²) / diagonal = DPI
,我们得到:
请记住,输出为dimensions: 1680x1050 pixels (160x90 millimeters)
,所以我们将“ width”作为1680
“ height”作为1050
,将正确的对角线作为20
kali@kali:~$ # e.g. (((width ** 2)+(height² ** 2) ) ** (0.5) ) / diagonal )
kali@kali:~$
kali@kali:~$ echo 'print( (((1680 ** 2)+(1050 ** 2) ) ** (0.5) ) / 20 )' | python3
99.05680188659434 # 99 DPI
kali@kali:~$
因此,我们需要将DPI设置为99x99
而不是267x296。
修复
我们可以采取多种方法来解决此问题,每种方法各有利弊:
- 编辑
~/.Xresources
(X配置推荐方法) - 编辑
~/.xsessionrc
(X启动脚本) - NVIDIA驱动程序设置
- Xfce GUI设置(桌面环境配置)
Xresources
我们可以配置X(每个用户)。在终端窗口中,运行以下命令:
kali@kali:~$ echo "Xft.dpi: 99" >> ~/.Xresources
kali@kali:~$
kali@kali:~$ cat ~/.Xresources
Xft.dpi: 99
kali@kali:~$
kali@kali:~$ xrdb -merge ~/.Xresources
kali@kali:~$
运行后xrdb -merge
,不需要注销,因此下次下次打开有问题的程序进行备份时,字体现在应为“正常”。
xsessionrc
这是一个shell脚本,将在图形登录后自动执行。在终端窗口中,运行以下命令:
kali@kali:~$ echo "xrandr --dpi 99" >> ~/.xsessionrc
kali@kali:~$
kali@kali:~$ cat ~/.xsessionrc
xrandr --dpi 99
kali@kali:~$
kali@kali:~$ xfce4-session-logout --logout
kali@kali:~$
注销并再次登录后,下次打开有问题的程序进行备份时,该字体现在应为“正常”字体。
NVIDIA驱动程序设置
另一种方法是让NVIDIA驱动程序处理DPI。
如果没有用于X的配置文件,我们将生成一个配置文件然后将其移动:
kali@kali:~$ sudo apt install -y nvidia-xconfig
kali@kali:~$
kali@kali:~$ sudo nvidia-xconfig
kali@kali:~$
kali@kali:~$ sudo mv /etc/X11/xorg.conf /usr/share/X11/xorg.conf.d/20-nvidia.conf
kali@kali:~$
现在,我们可以编辑配置文件,以在该Section "Device"
部分中包含以下两行:
Option "UseEdidDpi" "False"
-
Option "DPI" "99 x 99"
kali@kali:~$ sudo vim /usr/share/X11/xorg.conf.d/20-nvidia.conf kali@kali:~$ kali@kali:~$ cat /usr/share/X11/xorg.conf.d/20-nvidia.conf ...SNIP... Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" Option "UseEdidDpi" "False" Option "DPI" "99 x 99" EndSection ...SNIP... kali@kali:~$ kali@kali:~$ xfce4-session-logout --logout kali@kali:~$
注销并再次登录后,下次打开有问题的程序进行备份时,该字体现在应为“正常”字体。
Xfce设置
我们可以通过以下方式配置Xfce:
- Kali->设置->外观->字体-> DPI
- 启用:
Custom DPI Settings
- 值:
99
- 启用:
由于存在错误,您将需要切换“自定义DPI设置”或增加/减少该值,然后将其恢复为先前的值。
不需要注销,因此,下次您打开有问题的程序备份时,字体现在应为“正常”。
参考文献
有关其他阅读材料,您可能希望参考: