I recently replaced my nVidia video card with a new one. After playing a game that changed my desktop resolution from 1920x1200 to 640x480, I tried using the xfce Display control panel to revert the change. The panel allowed me to select 1920x1200 again, and it asked me whether to keep that resolution, but it didn't actually change the screen resolution to 1920x1200. It seemed to think it had changed to 1920x1200 when it was actually still using 640x480. To make matters worse, logging out would return me to the correct resolution as the display manager took over, but logging back in would again switch to 640x480 while xfce was running. Some digging through config files revealed that ~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml contained *two* display entries. It looked something like this: <?xml version="1.0" encoding="UTF-8"?> <channel name="displays" version="1.0"> <property name="Default" type="empty"> <property name="default" type="string" value="default"> <property name="Active" type="bool" value="true"/> <property name="Resolution" type="string" value="1920x1200"/> <property name="RefreshRate" type="double" value="50.000000"/> <property name="Rotation" type="int" value="0"/> <property name="Reflection" type="string" value="0"/> <property name="Primary" type="bool" value="true"/> <property name="Position" type="empty"> <property name="X" type="int" value="0"/> <property name="Y" type="int" value="0"/> </property> </property> <property name="DVI-I-1" type="string" value="Digital display"> <property name="Active" type="bool" value="true"/> <property name="Resolution" type="string" value="640x480"/> <property name="RefreshRate" type="double" value="59.950171"/> <property name="Rotation" type="int" value="0"/> <property name="Reflection" type="string" value="0"/> <property name="Primary" type="bool" value="true"/> <property name="Position" type="empty"> <property name="X" type="int" value="0"/> <property name="Y" type="int" value="0"/> </property> </property> </property> </channel> Note: the Active, RefreshRate, and Primary values in DVI-I-1 above may have been different when I was having the problem. I forgot to capture the file in its original bad state before I started playing with those settings. The glaringly obvious problem is still shown, though, which is that the Display control panel seemed to be updating the "default" display section while the desktop seemed to be following whatever was in the "DVI-I-1" section. I have never had two displays, so I imagine the extra entry might have been added when I switched to the new video card, or perhaps months ago when I upgraded XUbuntu from Oneiric to Precise. In an attempt to fix the problem, I deleted the displays.xml, logged out, logged back in, and opened the Displays panel again. The file now looks like this: <?xml version="1.0" encoding="UTF-8"?> <channel name="displays" version="1.0"> <property name="Default" type="empty"> <property name="DVI-I-1" type="string" value="Digital display"> <property name="Active" type="bool" value="true"/> <property name="Resolution" type="string" value="1920x1200"/> <property name="RefreshRate" type="double" value="59.950171"/> <property name="Rotation" type="int" value="0"/> <property name="Reflection" type="string" value="0"/> <property name="Primary" type="bool" value="false"/> <property name="Position" type="empty"> <property name="X" type="int" value="0"/> <property name="Y" type="int" value="0"/> </property> </property> </property> </channel> Things seem to be working mostly as expected now. My preferred resolution is holding. However, I did notice that changing the resolution in the Display control panel and then answering "no" when it asks whether to keep the new resolution does not actually revert to my previous resoluion. A different bug, perhaps?
> <property name="default" type="string" value="default"> Do you use the nvidia proprietary driver? From what I could see (I don't own any nvidia card), "default" is used by nvidia in some conditions, and it usually indicates missing randr support. Does the xrandr command line tool work fine? Are you using any weird nvidia specific setup? (e.g. on different xserver xorg per screen) (but then again it might depend on the exact proprietary driver version used, I asked some people to test the display dialog from git and it worked fine for them...)
(In reply to comment #1) > Are you using any weird nvidia specific setup? (e.g. on different xserver > xorg per screen) > one* different server per screen
(In reply to comment #1) > Do you use the nvidia proprietary driver? Yes. > Does the xrandr command line tool work fine? I don't know; I so rarely have reason to use that tool that I forgot it existed. It appears to print sane output right now. (Then again, I switched from xubuntu precise to quantal yesterday and I haven't run into the original problem yet.) > Are you using any weird nvidia specific setup? (e.g. on different xserver > xorg per screen) No. One display, one card, one X server.
$ xrandr Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 16384 x 16384 DVI-I-0 disconnected (normal left inverted right x axis y axis) DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 519mm x 324mm 1920x1200 60.0*+ 1680x1050 60.0 1600x1200 60.0 1280x1024 76.0 75.0 72.0 60.0 1152x864 75.0 1024x768 75.0 70.1 60.0 800x600 75.0 72.2 60.3 640x480 75.0 72.8 59.9 640x350 70.1 HDMI-0 disconnected (normal left inverted right x axis y axis) DP-0 disconnected (normal left inverted right x axis y axis) DVI-D-0 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis)
Experimenting with resolution changes in the xfce Display GUI yield some odd results: Changing 1920x1200 -> 1680x1050 works, but pressing "Restore the Previous does not. Now displays.xml says 1920x1200, GUI says 1680x1050, desktop is at 1680x1050, and xrandr says this: ... DVI-I-1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 520mm x 330mm 1920x1200 60.0 + 1680x1050 60.0* ... Changing 1680x1050 -> 1920x1200 does nothing. It's as if I never touched anything in the GUI. Changing 1680x1050 -> 1920x1200 a second time works. Now displays.xml says 1920x1200, GUI says 1920x1200, desktop is at 1920x1200, and xrandr says this: ... DVI-I-1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 519mm x 324mm 1920x1200 60.0*+ ... Throughout these experiments, displays.xml had only one display section.
> Experimenting with resolution changes in the xfce Display GUI yield some odd results: > Thanks for testing. That's a known bug of xfsettingsd 4.10 (usually invisible with intel but easily reproducible with nvidia): the new resolution is set before setting the global screen dimensions, and that's incorrect, because randr doesn't allow to set a resolution larger than the screen (so basically, 1920x1200 -> 1680x1050 works because 1680x1050 fits in 1920x1200, but the opposite obviously fails... It works the second time, because the new screen size was set the first time although the resolution change failed). That's fixed in xfce4-settings 4.11, which you can find in a ppa maintained by Xubuntu Developers: <https://launchpad.net/~xubuntu-dev/+archive/xfce-4.12> (it should be fairly stable, although that's a development release, so there's always a risk, but one of the developers was using xubuntu with nvidia ;-). > Throughout these experiments, displays.xml had only one display section. > Ok, let's assume it was specific to the nvidia driver version shipped with precise... (I'll close the bug report later in the next weeks when you've spent a bit more time on quantal, just to be sure).
With no further comments, marking this issue as fixed. Thanks!