xrandr:如何在显示区域内移动分辨率低于显示器原始分辨率的输出

xrandr:如何在显示区域内移动分辨率低于显示器原始分辨率的输出

我出了事故,笔记本电脑也跟着我一起出了事故。结果,我的肋骨疼,笔记本电脑的屏幕也疼:我的笔记本电脑内置显示屏最右边约 25% 从上到下没有显示任何内容。

我如何让 Ubuntu 相信我的显示屏只有工作部分那么大 - 大约是屏幕左侧的 75%?

我已设法使用生成一个模式行cvt,然后使用它xrandr(使用来自的信息这里这里),然而,不幸的是,这使得Ubuntu假装左边屏幕的一侧无法正常工作,而不是正确的方面,这导致情况更加糟糕。

我尝试使用标志移动屏幕显示的区域--posxrandr --output例如,作为我运行的测试xrandr --output eDP-1 --mode 1504x1080 --pos 100x100,但我为标志输入的值--pos似乎没有任何效果。

是的,也许是时候买一台新笔记本电脑(或至少买一块屏幕)了,但我目前正在旅行,需要让这台笔记本电脑至少工作几个月。谢谢你的帮助!

编辑:

以下是有关我所尝试过的更多信息。

步骤 1:生成具有所需分辨率的模式行:

$ cvt 1440 1080
# 1440x1080 59.99 Hz (CVT 1.56M3) hsync: 67.19 kHz; pclk: 129.00 MHz
Modeline "1440x1080_60.00"  129.00  1440 1528 1680 1920  1080 1083 1087 1120 -hsync +vsync

我可以使用 成功将其设置为输出xrandr。但这只会降低分辨率 - 我实际上需要做的是将最终输出向左移动。

按照以下指示这里这里,我想我应该能够通过设置水平后廊为零,表示屏幕左侧不应有空白像素。

这应该通过调整我的模式行中的第三和第四个数字来完成,结果如下:

Modeline "1440x1080_60.00_p240"  129.00  1440 1768 1920 1920  1080 1083 1087 1120 -hsync +vsync

通过 xrandr 将其设置为输出模式会导致屏幕严重闪烁然后停止工作。

有趣的是,我还尝试了这个模式行,我认为它会将后廊减少到只有 40 像素:

xrandr --newmode "1440x1080_60.00_p200"  129.00  1440 1728 1880 1920  1080 1083 1087 1120 -hsync +vsync

...但这根本没有改变输出,也没有导致闪烁。结果看起来与我生成的原始模式行完全一样(本来不应该改变)。

有人知道发生了什么事吗?

答案1

解决方法

您可以在锻炼中错过的 --fb --panning 的帮助下使用 xrandr 实现此目的。

下面是我在系统中执行的工作命令,它们是不言自明的。

我的原始屏幕分辨率是 1366x768 (eDP-1),我尝试使用 1000x768,在右侧留出空白

cvt 1000 766
xrandr --newmode BROKEN 62.00  1000 1056 1152 1304  766 769 779 796 -hsync +vsync
xrandr --addmode eDP-1 BROKEN
xrandr --output eDP-1 --fb 1000x766 --panning 1000x766 --mode BROKEN
xrandr --fb 1000x766 --output eDP-1 --mode 1366x768

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

答案2

@PRATAP 的回答很棒。我想补充一点,就我的情况而言,我不得不改变显示器的位置,transform因为我的屏幕在另一个位置坏了。

xrandr --fb 1096x768 --output LVDS-1 --mode 1280x800 --transform 1,0,-184,0,1,-32,0,0,1

答案3

fbset程序可以将边距应用于任何边框。xrandr另一方面,仅同时管理左边框和右边框和/或同时管理顶部和底部边框以进行过扫描/欠扫描。

您可以阅读手册页在互联网上:

Display timings:

-pixclock <value>
    set the length of one pixel (in picoseconds). Note that the frame buffer device may only support some pixel lengths

-left <value>
    set left margin (in pixels)

-right <value>
    set right margin (in pixels)

-upper <value>
    set upper margin (in pixel lines)

-lower <value>
    set lower margin (in pixel lines)

-hslen <value>
    set horizontal sync length (in pixels)

-vslen <value>
    set vertical sync length (in pixel lines)

--timings, -t ...
    set all timing parameters at once in the order <pixclock> <left> <right> <upper> <lower> <hslen> <vslen>, e.g. -t 35242 64 96 35 12 112 2

相关内容