Porting Ubuntu custom settings to gnome-control-center (“System Settings”)

Registered by Matthew Paul Thomas

Over the years, Ubuntu has accumulated interfaces for various settings that are not associated with any particular application, including:
* Software Sources (software-properties-gtk)
* Language Support (gnome-language-selector)
* "Apply System-Wide" button in gnome-keyboard-properties
* Login Screen (gdmsetup)
* Time & Date (indicator-datetime-preferences)
* Ubuntu One Control Panel (ubuntuone-control-panel-gtk).

Gnome 3 has greatly simplified gnome-control-center into a "System Settings" window that embeds settings panels inside it. With most system settings presented in that window, any system settings left outside it would look incompetent.

Unfortunately, gnome-control-center has two drawbacks making this difficult:
* settings panels cannot be implemented in Python;
* in 3.2, the library for writing settings panels will become private, blocking third-party panels.

We need to work out solutions to these problems, and plan the porting of settings to avoid regressions. And there are other settings that Gnome 3 has dropped but that we will want to retain, for example theme (Ambiance vs. Radiance) and screensaver.

* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-screensaver
* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-clean-up-language-support
* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-printer-settings
* https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-reduce-number-patches-packages

Blueprint information

Martin Pitt
Matthew Paul Thomas
Sebastien Bacher
Series goal:
Accepted for oneiric
Not started
Milestone target:
milestone icon ubuntu-11.10-beta-1
Completed by
Martin Pitt


Work items (oneiric-alpha-2):
Follow up on upstream discussion about dropping public API for "Other" settings panels vs. whitelist: DONE

Work items (oneiric-alpha-3):
[mterry] Integrate Ubuntu's and Gnome Shell's Time & Date settings (indicator-datetime-preferences), or patch one to override the other in System Settings: DONE
[mterry] Teach OnlyShowIn to the control center: DONE
[rodrigo-moya] Either embed Ubuntu One Control Panel (ubuntuone-control-panel-gtk) in System Settings, or allow it to be run as an external app in the control center: DONE

Work items:
[andreas] get the HIG to document the recommendations for where to put settings: POSTPONED
Integrate Software Sources (software-properties-gtk) into control-center shell: DONE

Work items for ubuntu-11.10-beta-2:
[robert-ancell] Evaluate how "Login Screen" (gdmsetup) works with gdm vs. lightdm: DROPPED

Work items for ubuntu-11.10:
[rodrigo-moya] Upstream "Apply System-Wide" button in gnome-keyboard-properties: POSTPONED

seb128, 2011-06-21:
upstream stated that they are not interested to keep the api public but that distro can distro patch it to be public if they want:

pitti, 2011-05-18:
 - There was a proposal for a compromise on desktop-devel@: Upstream won't generally allow third-party hooks, but downstreams can argue for individually justified "placeholders", like package management (which is what upstream doesn't do).
 - Removed "Upstream Language Support" work item, that's already covered in desktop-o-clean-up-language-support

2011-05-20, amano:
mpt, is it really helpful to mess with gnome-control-settings? Wouldn't it be more consistent to offer the access to those settings through a new Unity lens? Which again should be accessible within the dash. In my opinion gnome-control-settings do exactly the same thing as a lens, namely grouping icons. I would ditch gnome-control-settings as a whole and recreate its experience as a Unity lens. Its current access point within the shutdown options feels a bit out of place as well.
-- In Gnome 3, the System Settings window presents the settings themselves, not just the categories of settings (because that reduces the overall actions required to find, change, and dismiss a setting). A Dash lens would be an inappropriate way of presenting settings, for many reasons. They often use secondary dialogs, which the Dash doesn't do. The Dash uses a dark theme, which would make complex things harder to read (that's why it uses a larger font). The Dash either covers the whole screen or disappears when you click outside it, which would be unhelpful if you are getting advice from elsewhere on the computer while changing settings. And on a practical level, it would be a large effort to port the settings interfaces from GTK to the Nux toolkit used in the Dash, especially since Nux would need several new widgets. Finally, putting System Settings in the session menu was a management decision, not a design decision. In Ubuntu 11.10, System Settings will be in the launcher by default. -mpt

== UDS session notes ==

Gnome 2 had a lot of third-party applications dropping a .desktop file in gnome-control-center
Need a clear separation between system settings and application settings

Switchboard is an alternative control center option and is developed as part of the Elementary project, see https://laA4unchpad.net/switchboard.
- allows embedding of Qt panels
- allows embedding Python easily also

Some of the current Ubuntu settings could go upstream
- e.g. ability to propagate keyboard layout settings to other user accounts

Others may be different temporarily or because of differences of opinion
- e.g. Appearance settings
- e.g. Screensaver settings

Others will probably always be a bit different
- e.g. Ubuntu One in Ubuntu only
  - Gnome's "Online Accounts" settings overlaps with a small part of this
- e.g. Gnome Shell settings in Gnome only
- e.g. Unity settings in Ubuntu only

Possibilities for including items:
- public library
- public library and a distribution-controlled whitelist (meh)
- public library and a "brightlist" of items that appear in the standard categories
  - third-party items appear in "Other" or similar

put guidelines into the HIG that if you're a visible application with its own settings, don't have a control panel

Possibilities for Python panels:
- loader
- X embedding

Possibilities for handling gnome shell / unity switches:

Plan of action:
- follow on the upstream discussion about dropping the public api and argue on having a public api and a whitelist in the code for the capplets to list by default, other ones would go in an "others" categorie at the bottom
- [andreas] get the HIG to document the recommendations for where to put settings
- [rodrigo-moya] work on getting a python loader:
- teach OnlyShowOnly to the control center

30.01.12, Petko:...GNOME discussion
08.02.2012, Petko:...discussion finished
10.02.12 Petko : A page on the topic of adding distro-specific stuff was started: https://live.gnome.org/Design/SystemSettings/Brainstorm

Review of Ubuntu patches:
* Software Sources (software-properties-gtk): should be a c-c panel
* Language Support (gnome-language-selector): should be upstreamed over time
* "Apply System-Wide" button in gnome-keyboard-properties: we should upstream that
* Login Screen (gdmsetup): how does it play with gdm and lightdm?
* Time & Date (indicator-datetime-preferences): GNOME and Unity probably have different settings, maybe work on getting basic options and distro patch or have a different dialog
* Ubuntu One Control Panel (ubuntuone-control-panel-gtk:).


Work Items