xrandr: how to shift output that is lower resolution than the display native resolution within the display area
Work Around
you can achieve this with xrandr with the help of --fb --panning which you missed in your workout..
below are the working commands when I did it my system which are self explanatory..
my Original Screen Resolution is 1366x768 (eDP-1) and I tried to use 1000x768 leaving the blank space on Right
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
The fbset
program can apply a margin to any border. xrandr
on the other hand only manages left and right borders simultaneously and/or top and bottom borders simultaneously for overscan / underscan.
You can read the man page on the internet:
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
Great answer from UnKNOWn.
I just want to add that in my case, I had to change the position of my monitor with transform
, because my screen was broken in a different location.
xrandr --fb 1096x768 --output LVDS-1 --mode 1280x800 --transform 1,0,-184,0,1,-32,0,0,1