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

enter image description here

enter image description here

enter image description here


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