GNOME Shell Status – 2008-11-23

So, it’s been about three weeks since we started work on GNOME Shell and it seems about time to give update. A lot of the first weeks has been taken up with infrastructure work – getting things building, adding new features to gobject-introspection and gjs, debugging problems with various graphics drivers. But some of the visual elements are beginning to come together as well.

I’m happy with how with how our technical choices have worked out so far. We’ve had little trouble accessing the parts of the GNOME stack that we wanted to access from Javascript using gobject-introspection and gjs, but to me the even more convincing part of the gobject-introspection approach has been with custom C code we’ve written. You just write a GObject or add a method to an existing GObject and it’s there – no extra shim to write, no mucking around with binding generation tools.

While we’re still learning the ins and outs of Clutter, especially with regards to layout, it has worked well for our graphics so far. The port of Tweener that litl did to gjs is a really fun way of getting animations with little hard work. And while lots of restructuring and refactoring remain in the future, there’s no way we could have gotten to a mostly functioning desktop as quickly as we did without starting from Metacity.

So, on to the visual elements:

gnome-shell-20081122

In the screenshot above you can see the “overlay” view you get when you click “Activities” that combines applications launching with switching to the applications that you already have open. The windows fly in nicely thanks to Tweener, but you’ll have to build things yourself to see that. That was pretty much the first thing I did on the Shell, and Marina has enhanced it since.

Colin, along with a lot of heavy-lifting on gobject-introspection, implemented a first pass at the applications sidebar on the left:

gnome-shell-20081122-applications

Dan took on the deceptively hard task of getting tray icons to display in the panel:

gnome-shell-20081122-tray-icons

Dan also got a neat desktop-switching animation working along the lines of what was done in the Mutter “Scratch” plugin.

Sander showed up and created a quick Alt-F2 dialog:

gnome-shell-20081122-alt-f2

And I’ll close with a screenshot of the first patch we got on the mailing list. It’s a bit of a cheat for me to show it here, since the patch isn’t actually in subversion, but, well, it’s an inspiration for us to add plugins!

gnome-shell-20081122-wanda

Thanks Jeremy!

29 Comments

  1. Zenwalker
    Posted November 23, 2008 at 12:21 am | Permalink

    Looks awesome.

    Wish i knew GTK+ and C to get in with ya guys and be developing kool stuffs πŸ˜€

    Congrats guys.

  2. Posted November 23, 2008 at 1:09 am | Permalink

    Wow that is really fast progress! I saw you asking questions on #clutter but I didn’t expect that you’d have something working yet!

    I’m wowed πŸ™‚ Congrats! Looks promizing πŸ™‚

  3. Tom
    Posted November 23, 2008 at 5:29 am | Permalink

    This looks great. I tried building myself and kind of got it to work… A few notes:

    1. seems to take a long time to start up considering there’s not a lot of background tasks to be started yet… will this be improved?

    2.) I only see a blue background, no launchers, no notification tray and the windows are displaying only the surrounding shadows!

    3.) how is the applications list sorted? it currently shows a lot of bogus launchers for me: python 2.5, some wine deinstall links etc

  4. Jens
    Posted November 23, 2008 at 5:47 am | Permalink

    Well, generlly interesting – but looking awesome? No, not really, if the quality of the first shot (with the badly scaled smaller overview) is the indication of the final result. I never understand why people are all the rave about stuff like this or compiz and the like, because the scaling is of such a low quality. I mean, I seem to have the choice between a current desktop, where every text is of high quality, hinted and grid-fitted fonts, we also have perfectly scaled icons (or even better distinct sizes of them), and the other choice is having all this fancy animations and compositing, but nobody seems to care about the little details that in the end define visual quality.

    I just don’t know if it’s a technical limitation, or nobody seems to care, but in the end it doesn’t matter, as the result is not convincing.

  5. Posted November 23, 2008 at 6:06 am | Permalink

    Don’t forget to make it customizable like it is right now, please!

    PS: I don’t use such menus like Activity much. GNOME Do is my king. That’s why I need customizability – to remove Activity πŸ˜‰ .

  6. tomas
    Posted November 23, 2008 at 6:06 am | Permalink

    Looks nice, I just hope it will run on a single core 512MB machine (256MB would be evenbetter, but I have no hopes for that…)

  7. Pacho
    Posted November 23, 2008 at 7:10 am | Permalink

    Would be nice get it in Gnome3 :-O

    Thanks!

  8. JayBee
    Posted November 23, 2008 at 7:35 am | Permalink

    Amazing work, I can’t wait to try this out!

  9. Posted November 23, 2008 at 7:45 am | Permalink

    Can someone make a screencast of this please?

  10. Owen
    Posted November 23, 2008 at 9:13 am | Permalink

    @Zenwalker: luckily it’s not written in C and GTK+, it’s written in Javascript and Clutter! Admittedly, it’s hard to go too far without hitting something that takes a bit of C coding right now, but there should be plenty of opportunity for non-C contributions.

    @Pierre-Luc: Thanks. Yes, it’s come a long quickly. Of course, much of that is because we’ve been able to take the work that Intel (previously OpenedHand) did on Clutter and Mutter, that Matthias and Johan and Colin did on gobject-introspection, the work that litl did on gjs, put it together and start from there.

    @Tom: Startup time for ‘start-replace’ is all loading debug symbols for gnome-panel when attaching to it with gdb in order to convince it to quit without respawning. Really! There’s a patch in Bugzilla to add a quit mechanism to the panel. Missing window images is some sort of driver issue; drop into #gnome-shell and I can give advice on debugging and/or working around. Application list is not sorted or pruned of extraneous stuff at all yet. Room for a contribution…

    @Jens: Yeah, the scaling does look like something the dog threw up, doens’t it? There’s code in Mutter and Clutter to turn on mipmapping, but there’s a lot of moving pieces in getting that to work with GL_ext_texture_from_pixmap and I haven’t had time to track down why it isn’t working on any of my machines yet. (I spent a lot of time on the mipmap issue for Luminocity; historical screenshot: https://blog.fishsoup.net/2004/12/03/pagers-in-luminocity/)

    @tomas: Graphics card is probably going to be more of a limitation than system memory. If you can run Compiz now, you should be able to run GNOME Shell. We’ll be able to work on some more hardware if graphics driver memory management improves a bit.

  11. Zenwalker
    Posted November 23, 2008 at 9:56 am | Permalink

    Well even i dont know Javascript. As myself is a c# .net developer.
    So let me know, what is the opportunities ur talking about…

  12. rawsaysage
    Posted November 23, 2008 at 10:42 am | Permalink

    Just a question: What is the actual purpose of the panel in the screenshot? It does not seem that it has got a similar role anymore, nor that it would be required at all. Especially not with such a setup as yours as 99% of the sold monitors at the moment are widescreen and one should rather spend the horizontal than vertical space – at least on something that offers that little value to the user…

  13. z
    Posted November 23, 2008 at 12:06 pm | Permalink

    look good,
    but please make sure you do not create a sekond kde. some screenshots somehow remind me on it..

  14. Posted November 23, 2008 at 1:38 pm | Permalink

    It seems interesting so far. Just a quick thing:

    Please tell me this will be handling the desktop background / icons instead of Nautilus. It has always been beyond my understanding who in their right mind thought the file manager should do the desktop, but whatever reason there was for it has since been deprecated. Tying it to the thing we call The Shell makes a lot more sense, both to developers and to users πŸ™‚

  15. Posted November 23, 2008 at 3:13 pm | Permalink

    Really cool. Be even cooler if one could dock windows into that “activity bar”. Windows like empathy’s chat window would be nice candidates for that kind of space :d… ok ok. i’m just wishing.

    This is really cool!!!

  16. Simon
    Posted November 23, 2008 at 5:10 pm | Permalink

    @Dylan – the reasoning for Nautilus doing the desktop icons is simple enough, since the desktop *is* a file management view.

  17. Posted November 23, 2008 at 5:59 pm | Permalink

    Wonderful news! I’m so glad to hear that things are moving forward.
    Thanks for the update.

    //MadsRH
    anotherubuntu.blogspot.com

  18. Posted November 23, 2008 at 7:19 pm | Permalink

    Is it meant to be a new UI concept, rather than a menu bar + Alt-F2?

  19. Andreas
    Posted November 24, 2008 at 5:31 am | Permalink

    We still need a “bar” for quickly switching between minimized windows. Right now there’s just no indication that more that the shown windows are active. This you would be forced to go to the expos/e mode before logging out just to make sure there’s no other apps running minimized.

    Consider adding a dock similar to mac os which only shows thumbs of minimized windows. When maximized or restored, the thumbs would stretch and fly into position.

  20. akaa
    Posted November 24, 2008 at 12:39 pm | Permalink

    But it was way cooler if it was written in Python.

  21. Achim
    Posted November 24, 2008 at 3:37 pm | Permalink

    I really like the new GNOME-Shell approach.

    What I would like to know, is:
    – will it work properly with a Dual Head setup?
    (compiz has still big problems with that.)
    – will sync to vblank work properly?
    (This is probably a Clutter question. At the moment I don’t know what clutter has to offer in relation to sync to vblank)

    It would be nice if someone could enlighten me πŸ™‚

    Regards
    Achim

  22. Posted November 25, 2008 at 1:07 am | Permalink

    Oh god no, please, no dock. Those things are *awful* for usability. They usually have animation, so then what you’re trying to click keeps moving, and if you’ve got more than one window available for one application, it’s really confusing. Does the icon mean it’s running, or is it just a launcher? How many instances are running? What determines their order?

    I’m fine with ditching panels and docks completely. Alt+Tab gets through all the open windows. I haven’t used a window list widget on my one panel in at least a year. I just have the one panel for the clock/calendar applet.

  23. Owen
    Posted November 25, 2008 at 9:48 am | Permalink

    Thanks for all the UI comments. We certainly don’t have the full anwers yet. One of our early goals is to get to the point where if someone has an idea it’s really easy for them to try it out, see how it works, and present it not with just detailed background and mockups (always a good idea) but with a running prototype.

    @Dylan: To me, the desktop window *is* a file manager window in many ways, so unless we radically want to change what goes on the desktop and put non-File things there, it makes sense to keep the handling in the file manager. One thing we have discussed is moving the background drawing to the shell and making the file manager window a big ARGB window with a transparent background. (Or conceivably a small ARGB window per icon, though that makes rubber-banding hard.) That would increase efficiency and allow per-desktop backgrounds.

    @Achim: There are two different aspects to dual head: one is the user interface aspect… how it should work, and that’s just a question of someone interested thinking about it, trying different solutions. There’s also hardware limitations with using 3D with large framebuffers on older cards. (Pre-965 Intel cards are limited to a 2048-pixel front buffer in particular.) Shatter (http://linux.conf.au/programme/schedule/view_talk/76?day=friday) may offer a way forward there.

    Sync to vblank is very much a driver question; when it works reliably in the 3D drivers it won’t be a problem to hook it up to Clutter and gnome-shell. There are some interesting issues with optimum redraw scheduling that are fun to discuss, but it’s not hard to find ways that basically work fine.

  24. Owen
    Posted November 25, 2008 at 6:26 pm | Permalink

    Please note:

    http://live.gnome.org/GnomeShell

    Has links to the mailing list and IRC channel for gnome-shell. Those are generally better places than comments here for extensive discussion and for getting help with building gnome-shell.

  25. Vadim P.
    Posted November 25, 2008 at 8:39 pm | Permalink

    @Mackenzie: While I’d agree that is the case for Cairo-Dock or whatever else, my AWN only bounced icons when attention is needed – so selecting a window is a snap and easy to do.

    Plus, icons with tooltip text is way better than icons + text.

  26. DanieleDM
    Posted December 1, 2008 at 2:08 pm | Permalink

    cite:
    One thing we have discussed is moving the background drawing to the shell and making the file manager window a big ARGB window with a transparent background.

    that will be lovely, keep the good work πŸ˜‰

  27. Posted December 6, 2008 at 12:19 pm | Permalink

    Wow! Wanda lives! This is apparently my most enduring contribution to GNOME!

    BTW, the rest looks very cool too. I’m glad that that horrible panel is going to be gone. That guy who maintained it for the first few years of GNOME was a hack.

    George

  28. Posted January 27, 2009 at 6:44 pm | Permalink

    @Mackenzie Docks do not have inherint usability issues, to be honest I’d say Windows 7 of all things proves this. In fact, if we could somehow implement something similar I’d be all for it.

    In general regards to this post, I’m not a big fan of the shell. First and foremost it brings back bad memories of explorer.exe, I’m not a big fan of my entire desktop going down because one process is trying to do it all. I’m also not a big fan of these new UI concepts, I think they are un-gnome-like and it’s going against the grain for little to no benefit. I don’t see how you can implement window managment with such a convoluted UI, and I don’t get why you’re essentially building all of this into metacity instead of supporting the compiz project (which you are effectively killing off with this) and just building a better panel and desktop.

    I fear what GNOME is about to become, and unless I see some better demos for the shell I’m finding it hard to keep my enthusiasm for GNOME 3.

  29. anonim
    Posted February 9, 2009 at 9:13 am | Permalink

    Any further updates?