物理显示器的最顶部被边框遮住了(不要问!)。我想使用 xrandr 重新定义桌面的实际大小,因此它只使用显示器的可用部分。
显示器的实际像素尺寸为 2880x1920,但顶部(比如)20 行不可用。(实际上它更少,但我必须进行实验)。所以我想要一个 2880x1900 的桌面并设置监视器位置,以便桌面显示在监视器上,从第 20 行开始一直到底部。
我认为这意味着我需要使用 --pos +0-20 但我得到:
$ xrandr --output eDP-1 --pos +0-20
xrandr: failed to parse '+0-20' as a position
Run Code Online (Sandbox Code Playgroud)
我尝试了其他变体:
$ xrandr --fb 2880x1900 --output eDP-1 --size 2880x1900+0+20
xrandr: specified screen 2880x1900 not large enough for output eDP-1 (2880x1920+0+0)
Run Code Online (Sandbox Code Playgroud)
这与现有问题如何仅使用显示器的一部分进行显示非常相似,但该用户正在询问 Windows,并且每个人都建议仅使用窗口管理器。鉴于这将始终适用于每个工作区,这会很快变得令人厌烦。我正在寻找更基本的解决方案。
实际上,我认为它少于 20 像素行是错误的。
我发现了这个:
$ xrandr --output eDP-1 --transform 1,0,0,0,1,-30,0,0,1
Run Code Online (Sandbox Code Playgroud)
确实将输出向下移动,以便顶部不会被切断。不幸的是,现在整个桌面帧缓冲区都延伸到了可见屏幕下方。我可以为该变换添加一个比例因子,但我宁愿只是调整桌面的大小,以便桌面的底部落在显示器的底部。
我的配置:
什么不起作用:
做了什么工作:
xrandr --output "HDMI-2" --fb 1800x1000 --transform 1,0,-60,0,1,-30,0,0,1
Run Code Online (Sandbox Code Playgroud)
--fb 1800x1000设置显示区域。单独使用此设置将为您提供右侧和底部较大的边距,但不会使图像居中。
--transform 1,0,-60,0,1,-40,0,0,1将显示的图像向右移动 60 像素(-60),向下移动 40 像素(-40)。
组合在一起,我的屏幕有 60 像素的左边距、1800 像素宽的显示屏和另外 60 像素的右边距,总共 1920 像素。垂直方向上,我有 40 像素的上边距、1000 像素高的显示屏和 40 像素的显示屏。底部边距总计 1080。
我仍然收到警告:
xrandr: specified screen 1800x1000 not large enough for output HDMI-2 (1920x1080+-60+-40)
Run Code Online (Sandbox Code Playgroud)
然而,帧缓冲区的大小仍然会调整,并且变换仍然会应用,以便屏幕的边缘不再延伸超过显示器的末端。
即使显示上述警告消息,xrandr 为零后的错误级别(意味着它工作时没有错误)。
这是对我有用的解决方案,并且使用英特尔集成视频驱动程序而不是更先进的 nVidia 或 Radeon 驱动程序,这是迄今为止唯一有效的解决方案。
对于您的解决方案,我建议使用更小的 --fb 来开始:
xrandr --output eDP-1 --fb 2400x1800
Run Code Online (Sandbox Code Playgroud)
然后进行变换以使左上角可见。
然后找出可以扩展帧缓冲区的内容以保持右边缘和下边缘可见。
这些都不会改变分辨率,您的屏幕仍然是 2880x1920。您只需更改屏幕尺寸并将屏幕向下和向右移动即可。
| 归档时间: |
|
| 查看次数: |
4589 次 |
| 最近记录: |