The very top of the physical monitor is obscured by a bezel (don't ask!). I want to use xrandr to redefine actual size of the desktop and so it only uses the usable portion of the monitor.
The actual pixel dimensions of the monitor is 2880×1920 but the top (say) 20 rows are not usable. (Actually it's less but I'll have to experiment). So I want a desktop that's 2880×1900 and set the monitor position such that the desktop is displayed on the monitor starting at row 20 and continuing to the bottom.
I think that means I need to use –pos +0-20 but I get:
$ xrandr --output eDP-1 --pos +0-20 xrandr: failed to parse '+0-20' as a position
And I've tried other variations:
$ xrandr --fb 2880x1900 --output eDP-1 --size 2880x1900+0+20 xrandr: specified screen 2880x1900 not large enough for output eDP-1 (2880x1920+0+0)
This is very similar to an existing question How to use only part of a monitor for display but that user was asking about Windows and everyone suggests just using the window manager. That would get tiresome pretty quickly given that this is going to be always and for every workspace. I'm looking for a more fundamental solution.
Actually it looks like I'm wrong about it being less than 20 pixel rows.
I've found this:
$ xrandr --output eDP-1 --transform 1,0,0,0,1,-30,0,0,1
does move the output down just right so that the top isn't cut off. Unfortunately now the whole desktop framebuffer extends below the visible screen. I could add a scale factor to that transform but I would rather just resize the desktop so that the bottom of the desktop lands at the bottom of the monitor.