Gnome shell can't save screen resolution

Today I decided to try Gnome shell 3.10 on Ubuntu 14.04 and I noticed that after every restart my screen resolution is set to maximum which is not desirable. In Unity I don't have such problems. Also if I try to change resolution with nvidia-settings I get this error:

ERROR: Error querying target relations


(nvidia-settings:31370): IBUS-WARNING **: The owner of /home/alen/.config/ibus/bus is not root!
The program 'nvidia-settings' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadValue (integer parameter out of range for operation)'.
  (Details: serial 544 error_code 2 request_code 157 minor_code 25)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Graphic card: GeForce 6100 nForce 420/integrated/SSE2/3DNOW!

Is there any fix for this?


Solution 1:

Probable Cause

I assume that your monitor reports the high screen resolution as being preferred; unfortunately this information is used by GNOME Shell on each login to reset the resolution.

How to Fix

I had the opposite problem: my monitor reported a lower preferred screen resolution (1280x1024) than the one I wanted to use (1600x1200). The fix I have used will hopefully be applicable analogously to your problem, though. Here’s what I did:

I ran xrandr -q to find out what the current preferred screen resolution is and what other screen resolutions (or rather “mode lines”) are available. In the output, the mode line marked with a + is the current prefferred one. It also matched the currently used one (marked with a *). Here’s the output for me (abbreviated):

Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
DIN disconnected (normal left inverted right x axis y axis)
DVI-1 connected primary 1280x1024+0+0 (normal left inverted right x axis y axis) 352mm x 264mm
   1280x1024      85.0*+   75.0     60.0  
   1920x1440      60.0  
   …  
   1600x1200      85.0     75.0     70.0     65.0     60.0  
   …

To override the preferred screen resolution, I have created the file /etc/X11/xorg.conf with the following content:

Section "Monitor"
    Identifier "DVI-1"
    Option "PreferredMode" "1600x1200"
EndSection

As you can see, I took both the monitor identifier DVI-1 and the new preferred mode line name 1600x1200 from the xrandr -q output. You should replace these values according to your own setup.

After a logout (or reboot), the new preferred mode line was automatically used for both my display manager and for GNOME Shell. The new (abbreviated) output of xrandr -q was the following:

Screen 0: minimum 320 x 200, current 1600 x 1200, maximum 8192 x 8192
DVI-0 disconnected (normal left inverted right x axis y axis)
DIN disconnected (normal left inverted right x axis y axis)
DVI-1 connected primary 1600x1200+0+0 (normal left inverted right x axis y axis) 352mm x 264mm
   1600x1200      85.0*+   75.0     70.0     65.0     60.0  
   1280x1024      85.0 +   75.0     60.0  
   1920x1440      60.0  
   …