[Spice-devel] [vdagent-linux 1/2] randr: remove monitors.xml on auto-configuration

Marc-André Lureau marcandre.lureau at redhat.com
Wed Aug 27 10:22:07 PDT 2014

From: Marc-Andre Lureau <marcandre.lureau at redhat.com>

GNOME will restore monitors.xml configuration whenever the timestamp
"config > change". The "change" timestamp is the last user applied
configuration, whereas the "config" timestamp is updated when
the screen is updated or ouput/crtc modes are added/removed.

These condition are triggered by vdagent during monitor config. Since we
can't control the timestamps (playing with delay will be inherently
event more racy), the only sane way I can think of is to disable gsd
behaviour. This can be achieved by deleting the ~/.config/monitors.xml,
which is the intended configuration to restore, so vdagent will override
whatever configuration was saved previously.

Somehow, if vdagent would be better integrated with gnome2, it would use
the gnome-rr and/or org.gnome.SettingsDaemon.XRANDR dbus
API. Thanksfully, in gnome3, the monitor auto-configuration has been
merged in.

 src/vdagent-x11-randr.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/vdagent-x11-randr.c b/src/vdagent-x11-randr.c
index 46367bc..5faaee6 100644
--- a/src/vdagent-x11-randr.c
+++ b/src/vdagent-x11-randr.c
@@ -21,6 +21,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#include <glib.h>
 #include <string.h>
 #include <syslog.h>
 #include <stdlib.h>
@@ -745,6 +746,10 @@ void vdagent_x11_set_monitor_config(struct vdagent_x11 *x11,
         goto exit;
+    gchar *config = g_build_filename (g_get_user_config_dir (), "monitors.xml", NULL);
+    g_unlink(config);
+    g_free(config);
     for (i = mon_config->num_of_monitors; i < x11->randr.res->noutput; i++)
         xrandr_disable_output(x11, i);

More information about the Spice-devel mailing list