我想做的是能够旋转屏幕而不丢失缩放比例。我可以从 gnome-settings 显示菜单中很好地完成此操作,但我尝试在脚本中执行此操作,因此我正在寻找 CLI 解决方案。
我研究了 gnome 是如何做到这一点的,我注意到 xrandr 中显示方向的条目会发生变化以反映屏幕方向。通过 cli 执行此操作,xrandr --output $DISPLAY --rotate inverted
我完成了一半。缺少的部分是屏幕的缩放比例没有反映在 xrandr 中,这让我相信 gnome 有一些内部方法来设置要显示的窗口的缩放比例。
通过 xrandr 缩放屏幕xrandr --output eDP-1 --scale 0.5x0.5
,并不是最理想的,因为它不仅有时会在我连接和断开显示器时导致问题,而且由于它本质上是从较低的分辨率升级而导致模糊。据我所知,使用 xrandr 旋转屏幕会将 gnome 控制中心内的缩放比例重置为 100%,然后将其更改回之前的水平(200%)即可解决问题。
所以现在我一直在尝试寻找 gnome-control-center 显示页面中 scale 选项的 cli 解决方案。它会改变什么?我尝试观察 dconfdconf watch /
和 journalctl中的变化journalctl -f
,但无济于事。当我通过 gnome 更改屏幕缩放比例时,dconf 中没有任何反应,但在 journalctl 中,似乎 /usr/lib/gdmx-session 和 modeset 以及一些默认值(当我更改缩放比例时似乎没有变化)被吐出来了。
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): EDID vendor "MEI", prod id 38562
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): EDID quirk: Use maximum size instead of detailed timing sizes.
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): Using hsync ranges from config file
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): Using vrefresh ranges from config file
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): Printing DDC gathered Modelines:
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (II) modeset(0): Modeline "3000x2000"x0.0 416.00 3000 3008 3016 3360 2000 2008 2016 2064 +hsync +vsync (123.8 kHz eP)
Mar 02 00:40:47 aa /usr/lib/gdm-x-session[1563]: (--) modeset(0): HDMI max TMDS frequency 300000KHz