Unity Window Quicklists

The Unity desktop that the recent releases of Ubuntu uses is kind of nice overall, but there are some specific things that are really hard to do, one of which is finding and focussing on one window of a particular type of application when you may have many other windows of that application you are not interested in. For example, a lot of the time I have three browser windows, a few gedit editors and around ten terminal windows open. When I am doing something I am normally interested in one browser window, one editor and one terminal. If I want to move from the browser to the terminal I am interested in I don’t want the other 9 terminals popping up over the browser, I only want the one that relates to that browser.

What kind of makes sense to me is that you should be able to right click on the things in the launcher and see the list of windows and choose the one you want. Luckily Unity is quite extensible, there are APIs for adding quicklists to the launcher icons and there is enough information kicking about in dbus to find the window names and get callbacks to happen when things get updated like a window title changes or a window gets added or removed.

I put my thoughts together in a little python script, which I have now packaged and put in a PPA (which was harder than it sounds) so if the screenshot makes sense to you and you are running Ubuntu with Unity (2d or 3d) then you can install it with the following commands:

sudo apt-add-repository ppa:alanbell/unity
sudo apt-get update
sudo apt-get install unity-window-quicklists

Then log out and back in again to get a much more usable desktop if you tend to use lots of windows

35 Comments

  • Aleks says:

    That is a very logical way of organizing many open windows. Thanks for the ppa :) .

  • Billy says:

    10 terminals and multiple Gedit windows? Your primary problem isn’t Unity’s less-than-optimal window management, it’s that you’re not working smartly enough. You’re wasting too much time and mental energy messing around with point-and-click and window-level interactions.

    You sound like a power user. For terminals you should already be using tmux or screen, or at the very least GNOME Terminal’s tab feature (which seems to have reasonable keybindings). Gedit also allows you to open multiple tabbed documents in a single instance, although serious development demands Vim or Emacs. Streamline your workflow from the bottom up, you won’t be sorry.

    • Alan Bell says:

      No, the problem with my window manager isn’t that I am using too many windows. It is a window manager, that is what is is *for*. tmux is a console based window manager, it is nice, I use byobu a lot, quite a few of my terminal sessions are connecting to byobu windows on various servers. A window manager is for managing windows, I don’t see why I should restrict the number of windows I use and use a terminal based window manager because my GUI window manager makes things harder for me than it needs to be. Anyhow, there is no conflict with the quicklists and other methods of managing your windows, it just adds another way to get to a specific place quickly and easily.

  • Peter says:

    Unable to locate package unity-window-quicklists

  • Dennis A. says:

    Looks great. I will try that and see how doing. I hope to see something like that working native soon :)

  • Dennis A. says:

    ow… Don’t work with x64 yet? At least didn’t work for me in Oneiric.

    • Alan Bell says:

      the ppa is only building for Precise, and I don’t think the script works in Oneiric. I am not sure if it is a simple fix or if there just isn’t enough API in Unity in Oneiric.

  • nelf81 says:

    this is the smartest and simplest way to use Unity Window Quicklists. Very good idea but there is just a problem for whom is using 11.10: the application is just for precise.

    Please adapt the application for oneiric as well.

    • Alan Bell says:

      oneiric support would be nice I guess, but in a few weeks Precise will be out and people will be upgrading to the new LTS. I am quite happy to support Oneiric, I might try running it in a VM later to see if all the API bits are there.

  • Kai Mast says:

    Why not just use virtual desktops?

    • Alan Bell says:

      I do, this means I can still see what windows exist on other workspaces and select one and it swooshes over to it and raises it. Works nice.

  • manny says:

    this looks great, but it needs truncating / character limit like in dockbarX.

    i.e:

    http://libertadzero.files.wordpress.com/2009/12/popurri8.jpeg

    http://i649.photobucket.com/albums/uu220/blogwork/101604-1.png

    is it possible right now?

    if not i think will need a feature request for the api.

    hopefully this will get implemented by default, very useful!

    • Alan Bell says:

      interesting, that would be quite possible to do right now, I have kind of a big screen and I like to see the full window title, but it could certainly be done.

  • Romain says:

    Do you plan on doing a oneiric version? I installed this (so the precise version) on oneiric but it doesn’t seem to work.

    • Alan Bell says:

      I am not sure all the dbus bits are there and in the same places in Oneiric as they are in Precise. It is quite a simple script, do have a look at it, just open /usr/bin/quicklists in gedit or your favourite editor. Patches are welcome (or will be in a few hours when I put it on Launchpad in bzr

      • Romain says:

        I tried, but I’ve never used these libraries before, so it’s a bit hard.
        Here the output I get when running the script (I added some debug in the init_quicklists() function and changed one line to see exactly where it crashed):

        $ python quicklists.py
        /usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0′ failed
        import gobject._gobject

        type(bamf) =

        dir(bamf) = ['DeferredMethodClass', 'INTROSPECT_STATE_DONT_INTROSPECT', 'INTROSPECT_STATE_INTROSPECT_DONE', 'INTROSPECT_STATE_INTROSPECT_IN_PROGRESS', 'ProxyMethodClass', '_Introspect', '__class__', '__dbus_object_path__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bus', '_introspect_add_to_queue', '_introspect_block', '_introspect_error_handler', '_introspect_execute_queue', '_introspect_lock', '_introspect_method_map', '_introspect_reply_handler', '_introspect_state', '_named_service', '_pending_introspect', '_pending_introspect_queue', '_requested_bus_name', 'bus_name', 'connect_to_signal', 'get_dbus_method', 'object_path', 'requested_bus_name']

        bamf.__dict__ = {‘_requested_bus_name’: ‘org.ayatana.bamf’, ‘_introspect_lock’: , ‘_pending_introspect_queue’: [], ‘__dbus_object_path__’: ‘/org/ayatana/bamf/matcher’, ‘_bus’: , ‘_pending_introspect’: , ‘_introspect_state’: 1, ‘_introspect_method_map’: {}, ‘_named_service’: dbus.UTF8String(‘:1.70′)}

        Traceback (most recent call last):
        File “quicklists.py”, line 114, in
        init_quicklists()
        File “quicklists.py”, line 112, in init_quicklists
        a = bamf.RunningApplicationsDesktopFiles(dbus_interface=’org.ayatana.bamf.matcher’)
        File “/usr/lib/python2.7/dist-packages/dbus/proxies.py”, line 143, in __call__
        **keywords)
        File “/usr/lib/python2.7/dist-packages/dbus/connection.py”, line 630, in call_blocking
        message, timeout)
        dbus.exceptions.DBusException: org.freedesktop.DBus.Error.UnknownMethod: Method “RunningApplicationsDesktopFiles” with signature “” on interface “org.ayatana.bamf.matcher” doesn’t exist

        Hope that helps.

        • Alan Bell says:

          it does help :) so that means that the Bamf Application Matching Framework https://launchpad.net/bamf that is in Oneiric doesn’t have the method I am using to find what applications are running and the locations of their .desktop files. This is a bit of a shame.

          • Romain says:

            I guess I’ll have to wait 6 more weeks then, too bad :(
            Thanks for the help.

          • Alan Bell says:

            dive in now :) I have been using Precise as my daily desktop for quite some time, it is kind of like 11.10, but more fixed (mostly)

          • Romain says:

            I’m not really comfortable upgrading to an alpha/beta/rc, but that’s ok, I can wait.

  • Danillo says:

    Wonderful! I had opened a bug about this 6 months ago, but I still have no response: https://bugs.launchpad.net/unity/+bug/817302

    Thank you for that! Cheers!

  • Swarnendu Biswas says:

    Hi,

    I am trying out your package on Precise on a x86_64 system. However, the script doesn’t seem to work. Any suggestions?

    • Doug McMahon says:

      See my 2nd comment below, until this is fixed you can edit the .desktop as noted

      sudo -H gedit /etc/xdg/autostart/unity-window-quicklists.desktop

  • Doug McMahon says:

    Alan- for some reason here, 12.04 beta up, your autostart .desktop will not work with the OnlyShowIn=UNITY; line.
    Also it may be useful to let user see in their autostart with a NoDisplay=false
    (if I take your current .desktop & make it visible it also won’t even show until I remove the above noted line

    On a separate note – I guess this by nature will ‘kill’ off the nautilus bookmark quicklist? If so not the worst thing, though would be nice if reconcilable somehow
    (Here I’ve returned the Bookmarks enyry to the Desktop focus menu, never considered it redundant myself

    • Doug McMahon says:

      It turns out your .desktop line should be OnlyShowIn=Unity;
      Only cap the U

      • Alan Bell says:

        oops, thought I had done that, maybe not in the version that made it to the package. I will update it later.

    • Doug McMahon says:

      Finally – I’ve returned some often used bookmarks to the quicklist with Desktop Action(s) in a local nautilus-home.desktop, using Open for all which then groups them separately from active quicklist entries
      Overall your window-quicklists is working well, there is an very occasional glitch when a window is on a different Ws, doesn’t switch to, just notifies thru launcher icon. Can’t see a pattern yet as most times it works fine on diff. WS’s

  • [...] | The Open Sourcerer AKPC_IDS += "6065,";Popularity: unranked [?] Wikio Wikio Artículos [...]

  • [...] sudo apt-get install unity-window-quicklistsEnsuite déconnectez vous et reconnectez vous.Source : theopensourcerer.comVous pouvez lire aussi ::Ubuntu 11.04 – Gérer facilement vos quicklists du Launcher [...]

  • Sebastián says:

    Great script!!! But can this be done by hovering the mouse over the icon, instead of right clicking?

  • Colin says:

    This is what I have been looking for, awesome job! I am literally baffled that something like this wasn’t part of the Unity toolbar, it seems like such an important feature.

    Anyone who says you don’t need this, and to change your workflow doesn’t know what they’re talking about. Like you, I keep a lot of terminal windows and browser windows and other types of windows open, and I *NEED* to have a selectable list of those windows available somewhere.

    My 2 cents based on other comments.

    1) I had to do the edit to the .desktop file to change it from UNITY to Unity then it works fine.
    2) I don’t think I would like the request to truncate titles like the other person wanted. I would have to try it out with that option set, but I have a feeling it is important to be able to see the full window title and path to distinguish between the terminals correctly. Especially if you have several terminals open to the same server.
    3) This is getting picky, but I would like a way to have terminal titles sorted by server hostname. This is how it is in the classic gnome toolbar when you group similar windows, then select a window group. I don’t think it alphabetises any other type of window group, but for terminals when you have 20+ it’s amazing being able to quickly find the right one because the hostnames are in alphabetical order.
    4) You mentioned that it lists terminals that are on other desktops, and when you select one it auto-switches workspaces and brings up the window. This didn’t happen for me, when I selected a terminal on another workspace, the terminal icon in the unity launcher started shaking around for a bit then stopped, but nothing. I’m trying out 12.04 in a VM so maybe that has some effect since there isn’t a dedicated graphics card, I’m not sure.
    5) I’m not sure if there was any way to have the file browser windows (nautilus?) show up, but right now when you right click the “folder” icon there are quick links to Documents, Downloads, Music etc, but when you open several folders, none of them show up in that list.

    Anyways thanks for putting out this mod it’s awesome!

  • Tomy says:

    I had to do the edit to /etc/xdg/autostart/unity-window-quicklists.desktop file to change it from UNITY to Unity.

    Works for me. I like it.

    Thank you Alan, Thank you

Leave a Reply

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>