如何使 lightdm 在 hidpi 屏幕上缩放?

如何使 lightdm 在 hidpi 屏幕上缩放?

我有一台屏幕为 3200x1800 的笔记本电脑。当我启动笔记本电脑时,lightdm 不会缩放到分辨率,看起来很小。当我随后锁定屏幕时,lightdm 可以缩放并且看起来很好。我发现报告错误但没有解决方案。

答案1

我找到了一个小修复,似乎在登录时有效,但在锁定屏幕上无效。此解决方案还使顶部栏有点混乱,因为文本对于 confinds 来说太大了 - 也许定制主题是最好的解决方案?此外,它可能依赖于桌面已经设置了像素数价值更高。

  1. 打开终端并运行xrdb -query | grep dpi
  2. 打开/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
  3. 按键名="xft-dpi" 类型="d" 查找
  4. xrdb将默认值替换为输出的 DPI

这应该立即生效(注销时在我这边显示更大的文本)。

答案2

该解决方案似乎模仿了 Ubuntu 的“屏幕显示”应用程序在您登录时缩放 UI 的操作。我找到了所需的两个设置。我编写了一个脚本,在我登录时自动为我的用户设置此项(即不是 unity-greeter),但您可以使用相同的设置来更改 unity-greeter。

我有 2 个 4K 显示器,并且想将它们都设置为 2 的缩放系数,我的脚本如下所示:

#!/usr/bin/env bash

set -e

# Find connected displays, we're assuming that all of the 
# connected displays will require scaling.
function createScaleFactor() {
    SCREENS=$(xrandr --query | grep " connected" | awk '{ print $1 }')
    FACTORS=$(for SCREEN in ${SCREENS}; do printf "'${SCREEN}': 16, "; done)

    echo "{${FACTORS::-2}}"
}

# Set both gnome and ubuntu interface scaling.
gsettings set org.gnome.desktop.interface scaling-factor 2
gsettings set com.ubuntu.user-interface scale-factor "$(createScaleFactor)"

在那里的最后,您可以看到需要更改的两个设置。因此,要为 unity-greeter(即 lightdm)更改它们,您需要以 lightdm 身份登录。您可以使用 dconf-editor 来执行此操作:

$ sudo xhost +SI:localuser:lightdm
$ sudo su -s /bin/bash lightdm
$ dconf-editor

看到 dconf-editor 后,导航到上述脚本中的两个键,并将它们设置为所需的值。如果您已经运行了上述脚本,则可以正常打开 dconf-editor,只需获取它为您生成和设置的值,然后将它们复制到以 lightdm 形式运行的 dconf-editor 实例中即可。

锦上添花的是,这个解决方案也不会让任何东西看起来很奇怪。整个东西都缩放得很好,不会让文本看起来对于用户界面来说异常大或诸如此类。有些图像不够清晰,但你可以根据需要自定义它们,也许将来会更新为更高分辨率的图像。

理想情况下,在未来的更新中,要么有一个选项可以设置它,要么它会自动检测它(可能以类似于设置用户壁纸的方式)。

答案3

其他答案都很好。但是它们只会缩放字体。这将导致字体和其他元素之间不均匀。您应该缩放整个显示。为此,您需要在 lightdm 启动时运行脚本并使用 xrandr 设置缩放。您可以在此处找到详细信息: http://evren-yurtesen.blogspot.fi/2017/10/lightdm-and-4k-displays.html

相关内容