我出了事故,笔记本电脑也跟着我一起出了事故。结果,我的肋骨疼,笔记本电脑的屏幕也疼:我的笔记本电脑内置显示屏最右边约 25% 从上到下没有显示任何内容。
我如何让 Ubuntu 相信我的显示屏只有工作部分那么大 - 大约是屏幕左侧的 75%?
我已设法使用生成一个模式行cvt
,然后使用它xrandr
(使用来自的信息这里和这里),然而,不幸的是,这使得Ubuntu假装左边屏幕的一侧无法正常工作,而不是正确的方面,这导致情况更加糟糕。
我尝试使用标志移动屏幕显示的区域--pos
(xrandr --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