This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Introduction

The Control Center, or "System Settings", is the place where Gnome shows settings and preferences that generally have no other context (i.e. are not specific to an application). Gnome tries to show only options that are generally useful for end-user systems. However, the need exists for a way to present options for things that are not as common, like specialized hardware or a server's settings.

This page explores the rationale behind having a generic way to present settings and preferences. You can call it "pluggable control center" or "specialized control centers" or whatever you want.

Considerations for panels in the control center

Application settings

These are particular to an application. A word processor's options go in the word processor, not in the control center.

System settings

These are not particular to an application, but rather are shared by things across the system. Your printer can be used by multiple apps, hence the Printer Settings panel. Your display is a shared resource as well. Settings for the desktop environment's chrome (24-hour or 12-hour clock? desktop background?) go in the control center as panels, too, unless that chrome can be configured more directly elsewhere.

Direct customization preferred over a settings panel

Imagine if Gnome Shell had an option for "number of items in the shell's overview" stashed in a panel in the control center. It would be better to have a couple of simple "show more / show less" buttons in the shell's overview, as this would make customization more direct.

Extensions to the desktop and their settings

A third-party extension to the desktop should strive to have direct customization as described in the previous section, instead of having to add a panel to the control center. If this is not possible within a reasonable user interface, then it is fine to have a custom panel in the control center: the extension effectively becomes part of the desktop shell, so its settings should appear in the same place as the rest of the system's.

Exotic hardware

Let's define "exotic" to be "things that you wouldn't expect a normal computer user to have". Here are a few examples.

In short, hardware that is meant to be used from a single application shouldn't have a panel in the control center. Hardware that is a shared resource probably needs a panel in the control center. Hardware that just happens to be controlled from/by your computer, but which doesn't interact with software other than the one that controls it, doesn't go in the control center - but it may go into an application for grouping special-purpose hardware; see the section "Special-purpose control centers" below.

Distribution-specific settings

GNU/Linux distributions often have features that are not part of upstream Gnome. They should follow the considerations above, and only include custom panels in the "System Settings" control center if they meet the criteria around general-purpose, shared resources. For example:

Special-purpose control centers

Consider these examples:

All of these special-purpose configuration apps can benefit from the generic features in Gnome's control center - accessibility, categorization, a good Human Interface Guidelines. There may be some ideas we can borrow from http://technet.microsoft.com/en-us/library/bb742441.aspx, but of course we have to be careful not to overdo things.

Special considerations

NVidia

The nvidia-settings application is GPL, but it is used to control a proprietary driver. There are things which the "display" panel in the stock control-center ought to be able to handle, but cannot, because NVidia doesn't support all the RANDR features we need. However, nvidia-settings also handles things that are particular to the NVidia driver, such as GPU performance parameters, which are not really of concern to Gnome.

It would be best if NVidia supported RANDR fully so that Gnome could control it as any other graphics driver. Then, at most NVidia may want to ship a control-center panel to control the exotic settings in their driver, but not the generic RANDR ones. Having NVidia-specific code in the "displays" panel doesn't sound attractive.

(If the configuration program were not free software, it would still be convenient for users to have an "NVidia" icon in the control center which would launch a separate utility.)

Examples of good and bad usage

We need these for the documentation on guidelines.

TO-DO: find out how distros are extending the control center's panels, and explain the rationale for why each is a good or bad addition.

openSUSE

openSUSE patches the control center to have an icon for YaST, Suse's tool for configuring system services and hardware. Some things are made superfluous by the control center's default panels (e.g. printer configuration), but some others are only in YaST, like firewall controls or users/groups. The rationale for putting this in the control center is "where would people look for system configuration stuff?".

Ubuntu

Ubuntu patches the control center to allow external panels. It has panels for “Privacy” (activity-log-manager's preferences for the Unity Dash and other programs, plus settings for submitting error reports), “Backup” (deja-dup), and “Time & Date” (settings for the menu bar clock, and a different design for changing the time and date).

Additional Drivers” (settings for choosing binary drivers) is not a proper panel yet, and neither is Ubuntu One.

API

CcPanel - basically "here is a CcShell and an argv; give me back a widget to embed in the shell". (Why do panels need an argv?)

CcShell - Give me the shell's toplevel widget for when GTK+ needs it for things like the parent window of a dialog. Switch the shell to showing another panel (e.g. let the a11y panel switch to the keyboard panel). Have this other widget and embed it in the shell's header - is that for the "Unlock" button on e.g. the Printers panel?

CcShell is the parent class for GnomeControlCenter, which is the actual visible shell. None of the panels use the gnome_control_center_*() functions, just the cc_shell_*() ones. I don't know the purpose of this; it's probably so that others can implement their own shells and still reuse the machinery for individual panels. I'm ambivalent to this possibilty - the default shell seems generally good, but I can imagine special environments needing a different shell (small screens? who knows).


2024-10-23 11:03