Linux显示

Linux显示

在 KDE/Gnome/XFCE 上使用 Xorg X11 时我们如何缩放显示/分辨率对于整个桌面和/或每个应用程序?(当设置 GUI 上不可用时)

目的是在缩放桌面/应用程序的尺寸(更大/更小)时保持屏幕分辨率不变(最大)。

答案1

Linux显示

这在深入详细地介绍了Linux的显示是如何工作的?质量保证。

在大多数桌面系统(如 KDE 或 Gnome)上,各自的设置面板上都有可用的设置,本指南适用于可用于缩放应用程序或整个桌面的附加/手动设置。这参考文章有许多关于此事的有价值的信息。

扩展应用程序

主要可以做缩放应用通过 DPI、特定的环境变量(如下所述)、应用程序自己的设置或某些特定的桌面设置(超出了本 QA 的范围)。

  • Qt 应用程序可以使用以下环境变量进行缩放,请注意,许多应用程序都对大小和字体进行硬编码,因此此类应用程序的结果可能不符合预期。

    export QT_AUTO_SCREEN_SET_FACTOR=0
    export QT_SCALE_FACTOR=2
    export QT_FONT_DPI=96
    
  • Gnome/GTK 应用程序可以使用以下环境变量进行扩展

    export GDK_SCALE=2
    export GDK_DPI_SCALE=0.5
    
  • Gnome/GTK 也可以通过此 Gnome 设置进行全局扩展

    gsettings set org.gnome.desktop.interface text-scaling-factor 2.0 
    
  • Chromium,可以使用以下命令进行缩放

    chromium --high-dpi-support=1 --force-device-scale-factor=1.5
    
  • X普拉(python) 可以与以下一起使用运行规模实现每个应用程序的缩放。

  • 登录后可以对环境变量进行修改,~/.profile实现全局自动设备。

使用 Xorg X11 缩放桌面

奥格的扩展 RandR 具有缩放功能,可以配置为xrandr。这可用于缩放桌面以显示更大的环境,这对于 HiDPI(每英寸高点数)显示器非常有用。

兰德R也可以反过来使用,例如,使最大分辨率为 1366x768 的屏幕支持更大的分辨率,例如 1920x1080。这是通过模拟新的更高分辨率,同时渲染支持的最大分辨率来实现的,类似于我们在非全高清屏幕上观看全高清视频。

在不改变分辨率的情况下缩放桌面

  • 获取屏幕名称:

    xrandr | grep connected | grep -v disconnected | awk '{print $1}'
    
  • 减少屏幕尺寸20%(放大)

    xrandr --output screen-name --scale 0.8x0.8
    
  • 增加屏幕尺寸20%(缩小)

    xrandr --output screen-name --scale 1.2x1.2
    
  • 重置xrandr更改

    xrandr --output screen-name --scale 1x1
    

缩放桌面并模拟/渲染新分辨率

当使用xrandr“放大”时以前的方法,桌面保持全屏,但是当我们“缩小”时xrandr --output screen-name --scale 1.2x1.2(为了获得不支持的分辨率),桌面不会以全屏显示,因为这需要更新分辨率(可能是屏幕不支持的更高分辨率),我们可以使用 xrandr--mode参数的组合--panning--scale实现全屏“缩小”缩放(模拟新的分辨率),例如:

  • 获取当前设置

    xdpyinfo | grep -B 2 resolution
    # or
    xdpyinfo
    
  • 配置示例

    Scaling at:                      120%
    Used/max screen resolution:      1366 x 768
    Resolution at 120% (res x 1.2):  1640 x 922 (round)
    Scaling factor (new res / res):  1.20058565 x 1.20208604 
    
  • 这里的想法是虚拟地增加屏幕分辨率(因为我们物理上限制为 1366x768),命令是(替换screen-name):

    xrandr --output screen-name --mode 1366x768 --panning 1640x922 --scale 1.20058565x1.20208604
    
  • 重置更改

    xrandr --output screen-name --mode 1366x768 --panning 1366x768 --scale 1x1
    
    # restarting the desktop may be required example with KDE
    # kquitapp5 plasmashell
    # plasmashell &
    

使 xrandr 更改持久化

有多种方法可以使xrandr更改持久化,QA 有很多例子。

实验笔记

作为旁注和使用 SDDM + KDE 时的实验结果,经过多次测试以实现持久配置,我最终使用~/.config/autostartsystemsettings5>启动...>自动启动)加载脚本,并命名我的脚本00-scriptname以使其首先运行。

# 00-scriptname

# Applying the main xrandr suited changes (scaling at x1.15)

xrandr --output eDP1 --mode 1366x768 --panning 1574x886 --scale 1.15226939x1.15364583

# This is where it get odd/complicated, sometimes the screen resolution is not applied correctly or not applied at all... 
# Note that "xrandr --fb" can be used alone to change the screen resolution on a normal situation... 
# Here we will be taking advantage of xrandr's "--fb" feature to make the config appliance stable and works every-time.

# The odd thing here is while re-applying the new resolution 1574x886 with "--fb" nothing happen, but 
# if we use use an unsupported resolution like 1574x884 (vs 1574x886) then xrandr force the resolution 
# to "reset itself" to the configured resolution (1574x886)... 

# In short just re-apply the setting with "--fb" and an unsupported resolution to force a reset.
# ("--fb" can be used alone here without re-applying everything)

#xrandr --fb 1574x884 
xrandr --fb 1574x884 --output eDP1 --mode 1366x768 --panning 1574x886 --scale 1.15226939x1.15364583

参考

一些 KDE 的 GUI 工具: systemsettings5> 显示,kcmshell5 xserver以及kinfocenter
链接和来源: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1112

答案2

不要使用,xrandr --scale因为它会产生不同的分辨率(模糊)

我建议切换到“Wayland”而不是“X11”,因为 xrandr --scale 将光栅化的帧错误位图缩放到屏幕分辨率,这与向屏幕发送不同的分辨率相同模糊,请参阅https://gitlab.freedesktop.org/xorg/xserver/-/issues/1205了解详情。

要切换到 Waylayland,可能需要删除 nvidia 驱动程序并切换到开源驱动程序(新风格)。

屏幕明智以及使用 Wayland 进行分形缩放

在 Wayland 上,您可以针对不同的屏幕使用不同的比例,而无需更改分辨率(与 x11 不同),Wayland 还允许分形缩放(与 X11 不同)[参考文献]。

gnome-control-center>Settings>Display>Scale 在此输入图像描述

字体大小缩放因子

gnome-tweaks>Fonts>Scaling Factor 在此输入图像描述

相关内容