I have worked out a solution.
This works perfectly! Didn't know about /var/lib/gdm/.config directory before.
]]>First, I discovered that while I could not change the resolution with xrandr on another virtual terminal, I could do so if I left the terminal with X running, and then logged in via SSH. By doing this I was able to get back into Gnome (using startx). Then, using the Gnome display settings, I set the resolution to 2560x1440 and clicked "apply", which generated monitors.xml in ~/.config. Then, I copied this file to /var/lib/gdm/.config. GDM reads this file and selects 2560x1440. Once I log in, gnome does the same with the file in my home folder.
(This explains why initially only GDM exhibited this issue for me- one thing I tried while troubleshooting was deleting monitors.xml, as it has caused me problems in the past.)
This strikes me as a bit of a hack and a workaround, and I still wonder why it is that gnome and gdm are overriding the modes specified in Xorg.conf. This seems like bad behavior, and it worries me that there isn't even a setting somewhere to switch it off (short of specifying a resolution directly to gnome), but at least I have my environment back, and hopefully this will help anyone else with similar issues.
]]>$ xrandr -d :0
Screen 0: minimum 8 x 8, current 800 x 600, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DVI-I-2 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DVI-I-3 connected primary 800x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
800x600 60.3*+
2560x1440 60.0
$ xrandr -d :0 --output DVI-I-3 --mode 2560x1440
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 7 (RRSetScreenSize)
Serial number of failed request: 32
Current serial number in output stream: 33
While before, the issue was just a minor inconvenience (log in via getty and startx rather than GDM) to rendering my computer unusable without a major change of workflow (I will have to switch to a different desktop environment if I cannot solve it).
Has anyone had any luck with solving this?
]]>My workaround add xrandr to change resolution on login
xrandr --output DVI-I-1 --mode 1440x900 --rate 75
I've tested with lighdm, works fine, but since upgrade gnome 3.6 -> 3.8 stoped working with my xorg settings
My /etc/X11/xorg.conf.d/10-monitor.conf
Section "Monitor"
Identifier "ASUS VW193S"
Option "DPMS" "1"
EndSection
Section "Device"
Identifier "nVidia Corporation GeForce 9800 GTX+ (rev a2)"
Driver "nvidia"
Option "DPI" "96 x 96"
Option "NoLogo" "True"
Option "Coolbits" "5"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "nVidia Corporation GeForce 9800 GTX+ (rev a2)"
Monitor "ASUS VW193S"
Defaultdepth 24
SubSection "Display"
Modes "1440x900_75" "1440x900" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
This is really very annoying indeed. Does anyone know a fix?
]]>I traced this issue down to the fact that GDM is apparently no longer honouring the resolution I specify in my xorg.conf file. I have monitors which do not report EDID information, so I have custom modelines in my xorg.conf and also specify that these modes should be used (see xorg.conf below). Generally, this works as it should. However, the nvidia drivers' auto-detection (nvidia-auto-select) mode, seeing the failed EDID, defaults to 800x600. Thus, the output of xrandr:
Screen 0: minimum 8 x 8, current 3360 x 1440, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DVI-I-2 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
800x600 60.3 +
2560x1440 60.0*
HDMI-0 disconnected (normal left inverted right x axis y axis)
DVI-I-3 connected 2560x1440+800+0 (normal left inverted right x axis y axis) 0mm x 0mm
800x600 60.3 +
2560x1440 60.0*
In the past this was not a problem, as my xorg.conf specifies that 2560x1440 should be used and, with the exception of GDM 3.8, this works.
Now, looking through GDM's logs, I find some output regarding the nvidia drivers' mode validation process. At the end of this process the modepool is determined to contain both 800x600 and 2560x1440 as the two valid modes for each monitor. The problem is that, for some reason, even though my xorg.conf specifies 2560x1440, GDM instead goes with the first 'valid' mode.
Furthermore, if I log in via SSH while GDM is running, xrandr confirms that 800x600 has been selected. If I use xrandr to switch to 2560x1440, the monitors work normally and I am able to log in via GDM.
I have been unable to find a workable method to either render 800x600 'invalid' or to cause GDM to respect my xorg.conf settings. I have tried the "ModeValidation" XOrg option to disable all but custom modes, but this seemed to have no effect. Any ideas?
xorg.conf:
Section "Monitor"
Identifier "Monitor0"
VendorName "Shimian"
ModelName "DFP-0"
HorizSync 88.8 - 88.8
VertRefresh 59.5
ModeLine "2560x1440" 241.500 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
Option "DPMS"
EndSection
Section "Monitor"
Identifier "Monitor1"
VendorName "Shimian"
ModelName "DFP-2"
HorizSync 88.8 - 88.8
VertRefresh 59.5
ModeLine "2560x1440" 241.500 2560 2608 2640 2720 1440 1443 1448 1481 +hsync -vsync
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 560 Ti"
Option "UseEdid" "FALSE"
Option "UseEdidFreqs" "FALSE"
Option "ExactModeTimingsDVI" "True"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
Monitor "Monitor1"
DefaultDepth 24
Option "TwinView" "1"
Option "Xinerama" "0"
Option "nvidiaXineramaInfoOrder" "DFP-0"
Option "metamodes" "DFP-0: 2560x1440 +0+0, DFP-2: 2560x1440 +2560+0"
EndSection