Wednesday 13 April 2011
gnome-panel is dead, long live gnome-panel!
With GNOME 3, we obviously recommend to users that they should use (and at least try for a few days, it's usually enough to get addicted) our new interface, based on GNOME Shell. That being said, not everybody can use GNOME Shell yet (if you're unlucky with your hardware, for instance), and some people just really want to stay with an interface closer to what GNOME 2 provided. And that's where the fallback mode enters.
Sure, the fallback mode is not our target in terms of design, but that doesn't mean it's unloved. It's actually looking quite good with 3.0 and I encourage people to go ahead and try it instead of just proactively hating GNOME 3 because of the changes it brings. You can configure GNOME to always use the fallback mode in the the System Info panel of the System Settings:
The fallback mode is made of the same components as your GNOME 2 session. Except that they got boosted with love! Let me tell you about the changes in gnome-panel for GNOME 3.0 to give you an idea of what kind of love I'm talking about.
Under the hood
- Bonobo no more: okay, this was already in GNOME 2.32, although we had a compatibility module for bonobo-based applets. Now all the communication between the panel and the applets is done over D-Bus. Sounds like a jump to the future, doesn't it? Of course, this means that applets have to be ported but I heard there is documentation for that. This work was lead by Carlos Garcia Campos.
- Port to GTK+ 3: how could we release for GNOME 3 with a GTK+ 2-based panel? No way. So various people worked hard on moving to the latest GTK+; thanks should go to Carlos Garcia Campos, Germán Póo-Caamaño, Milan Bouchet-Valat, Christian Persch and Benjamin Otte.
- Port to GSettings: since we wanted to be cool, there was no way we would still use the venerable gconf to store settings. Porting to GSettings was quite fun, especially as gnome-panel was probably one of the heaviest user of gconf (and it was certainly using it in interesting ways). We now use GSettings in interesting ways too since some API is still missing in GSettings. Oh, and we're also using dconf (which is what GSettings uses as a backend by default) directly, which is completely insane and crazy. But we love insane and crazy!
- Port to GDBus: that's really the cherry on the cake. We still had some code using dbus-glib, and moving to GDBus just made sense. Ryan Lortie was the one removing the last mention of dbus-glib-1 from configure.ac. That being said, we now optionally depend on telepathy-glib which uses dbus-glib :-)
- Real libpanel-applet documentation: sure, sure, we don't want you to write new applets because they won't work in the non-fallback mode. But if you really decide to not listen to us, you now have a complete and up-to-date documentation to help you.
- Easier way to define default panel layout: if you ever tried to define a default panel layout with GNOME 2, you certainly knocked your head against a brick wall several times (I know I did). Those days are over now: just use a simple keyfile-based file and just specify the keys you want to change for each object.
- Lots of code cleanup and changes for GNOME 3 friendliness. Did I say
lots? I probably meant
- New panel layout and theme: that's probably the first thing you'll notice in the fallback mode: it looks a bit different, and the content in the panels has changed a bit by default. It was done to make the fallback mode look closer to the non-fallback mode, which is sound. But if you don't like that, just change it. Use another theme. Move your panels and applets (see below). You can make it look like GNOME 2 if you really want to (but I must admit I very much like the new way :-)).
- Centered applets: that's the second thing you'll notice: the clock is centered by default! Woo! Centered applets? Am I dreaming? People have been requesting this for a looooong time. And it's here. And it works. Really. Try it. You can center more than one applet, obviously.
- User menu: that's the third thing you'll notice: the menu bar lost its System menu, and instead, there's a user menu on the right. If gnome-panel is built with telepathy-glib, this menu will enable you to change your presence on the desktop (including for IM). It also contains, more or less, the same actions that were available in the old System menu.
- Align your applets correctly: so, now you see applets on the left, centered and on the right. It turns out this is now enforced: you cannot put applets at some arbitrary positions anymore. They will always be left-aligned, centered or right-aligned. This actually matches what people generally try to achieve when they setup their panels, and while I was initially reluctant to do that, Ryan convinced me. And he did good since this offers a much better experience. But that's not all, this also fixes all the annoying issues you had when changing the resolution of the screen or moving a panel, where some applets suddenly moved to weird positions and you had to reconfigure everything to be properly positioned. Now it just works. Really. Magic, I tell you.
- Still editable, but not by accident: this all sounds cool, but you tried to add an applet, or to even just move one, but without success? There's a secret trick here: press alt (or the modifier configured for metacity, if you changed it) and right-click. And here you go, you can do everything again! This is indeed not very discoverable, and we might work on improving that, but this makes using gnome-panel a much more solid experience. First, you don't have this feeling it can break easily (I had this feeling), and second, you won't remove things by accident anymore. This also means we don't need the per-applet lock setting anymore, so it's gone. And really, did you edit your panels that frequently? I doubt so :-)
- Bye-bye drawers: I had to remove drawers. Those were buggy in various ways, and I don't think this was fixable with the old approach. This is going to annoy the people who were using them (I've not seen a lot of users of drawers, though), but I think if we had to break this (and we had to), this had to be done for 3.0. Maybe we'll bring back a way to stack launchers, or something similar. But that needs a proper design, to avoid the
a drawer is a panel, but it behaves a bit differentlyapproach.
- (Update) No more popup menus on menus: I forgot to mention that the popup menu in the applications menu is now gone. This has always been broken (it was only working for items that didn't have a submenu, for example), and this was really a hack that was not portable to GTK+ 3. So instead of trying to keep the hack alive, I killed it.
- Small fixes for some several long-standing bugs. The one I immediately think of is the
thin linesappearing in the notification area. Yup: they're gone now. It was really a stupid bug, but for some reason, I was not able to easily reproduce it before so could not fix it.
That's a lot of changes, and if you have any doubts about that, here are some stats: 174 files changed, 12699 insertions(+), 19364 deletions(-) (this is just for code, and it doesn't include translations, schemas, etc.). It's actually the second most active development cycle in terms of lines changed since 2.0 (the first one being the one from 2.2 to 2.4, which included a nearly complete rewrite of a good part of the code).
Oh, and this is how it looks like:
It's certainly not as elegant as GNOME Shell, and you can see that the NetworkManager icon is not using a symbolic icon yet, which is a bit annoying. But still, it's pretty usable, I'd say :-)
In case anyone wonders, I love the new GNOME 3 and so I moved to the non-fallback mode (which I wholeheartedly recommend). But if GNOME Shell is not for you, give the fallback mode a try, you'll love it too!