As part of the Ubuntu App Showdown I started on a small project to provide a nice GUI frontend to Quickly. While I was able to get it working and submitted before the contest deadline, I unfortunately didn’t have the time to make it do everything I wanted. Since the end of the contest, however, I was able to spend a little more time adding some nice features to it.
Project Management
The majority of the work has gone into Quickly-Gtk’s project management. Some of this was implemented already, such as the ability to switch the “current” project. But internally it was all kind of a mess of code to track that. So I replaced all of that with a ProjectManager class that will store both the list of projects Quickly-Gtk knows about, but also keeps track of which project is “current”. This class also implements Observer design pattern to let other parts of the code know about changes to both the list of projects and the current project. This made it easy to, for example, display a notification on the screen whenever the current project was changed, regardless of whether it was changed in the window, the indicator, or from a Zeitgeist event.
Zeitgeist event monitoring
The other big development was integrating Quickly-Gtk with Zeitgeist. For those that aren’t familiar with it, Zeitgeist is an event log that tracks all kinds of user activities and system events. Applications can read past events or monitor them as they happen. I wanted Quickly-Gtk to be smart enough to switch to a project as soon as the user started working on it, without requiring the user to make the switch themselves. To do that, I set a Zeitgeist monitor to listen for file system events in any of the saved project directories. I also set it to watch for the user viewing the project’s Launchpad page. If any of those events happen, Quickly-Gtk will automatically make that the current project.
The future of Quickly-Gtk
While I was able to get a lot done with Quickly-Gtk, the underlying Quickly API and command line really weren’t designed to support this kind of use. However, as a result of what we learned during the App Showdown, Didier Roche has begun planning a reboot of Quickly, which will improve both it’s command-line functionality, and it’s ability to be used as a callable library for apps like Quickly-Gtk. If you are interested in the direction of Quickly’s development, I urge you to join in those planning meetings.
Launchpad Project: https://launchpad.net/quickly-gtk