Update on Control Center 3.0


Recently I've been looking into how we start moving the master branch of
git towards 3.0. There are two main changes that we would like to do
before 3.0; move to a single-windowed approach, and migrate to the new
GSettings infrastructure. I've mostly been looking at the single window

The extensible-shell branch has been developed by Jon McCann and myself
to support the single window approach and I have been looking at merging
into master. However, I've had some issues as there are conflicts
between the master and extensible-shell branches, and this is
exacerbated by history in the extensible-shell branch that is no longer
interesting (for example, the experimental GtkSocket/GtkPlug approach
which was the initial implementation). There are also conflicts in
GtkBuilder files, which are very difficult to resolve manually.

One other issue is that a lot of the user interfaces in Control Center
are in desperate need of revision as they have grown and changed
organically over the last 10 years. We need a fresh look at the
available settings and preferences and how we present them. That means
there may be a significant amount of churn in which it seems pointless
to put effort into old capplets that may not be required. Jon is
collecting ideas and mockups for the revamp here:

Given the problems above, I've started with a new branch from master
that integrates (cherry-picks) many of the things we've learned from the
extensible-shell branch. Firstly, "Capplets" are now referred to as
"Settings Panels", or just "Panels" for short. The shell will be
referred to as "System Settings", but I am not going to suggest renaming
the module or binary at this stage as it may be too disruptive.

There is a new public shared library (libgnome-control-center) to aid
implementation of settings panels, including an abstract base class
class for all panel implementations (CcPanel). This interacts with the
shell through the CcShell class and are loaded using the GIOExtension
API. I've written appropriate gtk-doc documentation for these classes,
and there is an example "hello world" panel in the examples directory.
The API is not finalised yet and is subject to change; so please do
query anything that you think may need improving.

I will rebase my work-in-progress branch onto master by the end of the
week and will start implementing the existing capplets that we intend to
keep. It would be helpful if people who actively maintain capplets could
take a look at creating a new settings panel implementation.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]