> * you are changing "do-nothing" to do something, the main reason that this > setting was added is that the xrandr calls can be slow on some drivers > (e.g taking over a second), your patch will add several seconds delay on boot > on some configuration The upstream code has changed this behaviour. The patch reflects the upstream behaviour closely. from gsd-xrandr-manager.c 1692 static GnomeRRConfig * 1693 make_default_setup (GsdXrandrManager *manager) 1694 { 1695 GsdXrandrManagerPrivate *priv = manager->priv; 1696 GnomeRRConfig *config; 1697 GsdXrandrBootBehaviour boot; 1698 1699 boot = g_settings_get_enum (priv->settings, CONF_KEY_DEFAULT_MONITORS_SETUP); 1700 g_debug ("xrandr default monitors setup: %d\n", boot); 1701 1702 switch (boot) { 1703 case GSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING: 1704 config = make_xinerama_setup (manager, priv->rw_screen); 1705 break; 1706 case GSD_XRANDR_BOOT_BEHAVIOUR_FOLLOW_LID: 1707 if (laptop_lid_is_closed (manager)) 1708 config = make_other_setup (priv->rw_screen); 1709 else 1710 config = make_xinerama_setup (manager, priv->rw_screen); 1711 break; 1712 case GSD_XRANDR_BOOT_BEHAVIOUR_CLONE: 1713 config = make_clone_setup (manager, priv->rw_screen); 1714 break; 1715 case GSD_XRANDR_BOOT_BEHAVIOUR_DOCK: 1716 config = make_other_setup (priv->rw_screen); 1717 break; 1718 default: 1719 g_assert_not_reached (); 1720 } 1721 1722 return config; 1723 } The default being "follow-lid" . The upstream change is massive ( more to do with power management and systemd ), and as per me not worth it. This is the code which we use 1810 static void 1811 apply_default_boot_configuration (GsdXrandrManager *mgr, guint32 timestamp) 1812 { 1813 GsdXrandrManagerPrivate *priv = mgr->priv; 1814 GnomeRRScreen *screen = priv->rw_screen; 1815 GnomeRRConfig *config; 1816 GsdXrandrBootBehaviour boot; 1817 1818 boot = g_settings_get_enum (priv->settings, CONF_KEY_DEFAULT_MONITORS_SETUP); 1819 1820 switch (boot) { 1821 case GSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING: 1822 return; 1823 case GSD_XRANDR_BOOT_BEHAVIOUR_CLONE: 1824 config = make_clone_setup (mgr, screen); 1825 break; 1826 case GSD_XRANDR_BOOT_BEHAVIOUR_DOCK: 1827 config = make_other_setup (screen); 1828 break; 1829 default: 1830 g_assert_not_reached (); 1831 } 1832 The do-nothing does not exists anymore, and we use follow-lid or do-nothing which still call xinerama. > * you make the default to be xinerama when there is no lid closed, that's > wrong in some cases. > E.g we want to default to mirror for projectors configurations) ... there is > no good way to detect projectors at the moment though, that's why we default > to mirror This might be the current behaviour, but not an acceptable behaviour as per upstream ( and our customer ). > * the lid status is not an accurate info, some hardware don't rely that status > correctly In this case, imho, we would need to file a but against kernel/acpi/hardware vendor as this would break g-s-d xrandr plugin with or without the patch. > Did you consider suggesting to the customer to just change the > "default-monitors-setup" gsettings key from 'do-nothing' to 'dock'. > The schemas documentation says: 'dock' will switch off the internal monitor The current behaviour is not acceptable, and should be updated to be suitable. > That seems like what they want, and they should be able to just deplay a custom > settings package including a schemas override easily? Personally, I believe we should have saner defaults in Ubuntu . -- ritz