Comment 4 for bug 941470

Revision history for this message
chrysn (chrysn) wrote :

this is not exactly arandr's fault, but i think i can help anyway (an explanation follows, if you just need to fix it go to the last paragraphs):

when the x server starts, it figures out how large to make the "Virtual", the theoretical maximum area. in arandr, the virtual is shown as the dark gray area.

when your external monitor is not connected, the largest horizontal extension of all the monitors the x server sees at startup is 1680 (your laptop monitor's width), and it choses to make the virtual 1680x1680 in case you want to rotate your monitor.

when the external monitor gets later connected, even though it announces it resolutions correctly (as seen in the EDID_DATA block), the x server only offers the resolutions that would fit in the existing virtual. everything larger gets dropped, and 1600x1200 is the largest that fits.

when the external monitor is connected at startup, the x server sees the need for the larger screen, and allocates the virtual appropriately.

as a workaround, you can give x an explicit virtual size to allocate. depending on how you use your displays, this could be 1920x1200 (if you only use either monitor), 3600x1200 (if you want them side by side), or 3600x3600 (if you want to use all possible combinations, including rotated monitors) or even higher given you could connect even more monitors. create an /etc/X11/xorg.conf with the following contents:

Section "Screen"
 SubSection "Display"
  Virtual 3600 1200
 EndSubSection
EndSection

(you may or may not have to integrate that into an existing xorg.conf, depending on your configuration)