GUADEC + Unconferences | 2017

This year’s GUADEC was amazing. I’m really happy I could attent it this year (even though my tasks are accumulating and I’m really afraid to look at my emails again…). I’m still in Manchester so, if anyone wants to meet me and buy me a tea, do get in touch!

There were quite a few talks that I enjoyed. I can’t really name one that I liked the most, but on the top of my list are:

I had a special interest in Richard’s talk. He raised many relevant questions and exposed how complicated it can potentially be the problem of donations and payments. More about that in the future.

Calendar & To Do

I had the chance to sit down and see a power user interacting with GNOME Calendar. It was an unique and enlightening experience. I was able to see a few areas where Calendar can do better in terms of UI/UX.

Unfortunately, GNOME To Do didn’t have the same luck. I’m still somewhat unhappy with the current UI of To Do, but I’m running out of ideas on how to improve it without a complete rewrite (which I simply don’t have time to do now). If you’re a GNOME user with any kind of background on design, ~please~ get in touch: I’d love to gather some feedback on To Do!


I had the chance (and honor) to be present at the discussions for GTK4. In these discussions, we did a big list of topics and discussed each one of them in details.

This slideshow requires JavaScript.

I admit that, during these discussions, I felt like a kid at times – the GTK hackers are incredibly smart and skilled people. The other side of the coin is that, while I was feeling like lagging behind them, I also felt honored and happy to be surrounded by such amazing people.

The biggest problem to solve now is the accessibility stack. After digging into the topic and clarifying how it works, we concluded that this topic was too big and complex for that moment, and deserved a hackfest of its own. We’ll organize one during the next months.

Wrapping up, I can’t state how productive these discussions were. Thanks to Matthias Clasen, Benjamin Otte, Christian Hergert, Cosimo Cecchi and everyone else that drove the discussions. We now have a solid GTK4 roadmap that I’ll move to the GNOME Wiki in no time.


An unexpected thing happen during the Unconference days. When talking to my good friend Mario we asked ourselves: how can we improve our own Endless tasks by upstreaming our features?

Endless OS shell has many features that GNOME Shell doesn’t, and maintaining downstream patches is expensive and simply not cool. One of these features was specially important, as it is difficult to maintain and lots of GNOME users frequently ask for.

This specific feature was considered in the past, but had many design constraints and we end up never solving it design-wise, nor implementing it.

This is about to change.

After a rather spontaneous group discussion, we found solid solutions for all the relevant edge cases of this feature 🙂  I’m sure Mario will write about it in the future, and probably will implement it as well, so stay tuned!

Because, in case you forgot:

banner down

(And yes, I purposely didn’t say which feature I’m talking about – but I’m sure many of you can guess that :P)


After a long explanation and discussion with Florian Müllner (and of course, getting him a well deserved beer for being the GNOME Shell and Mutter maintainer!) the path for quarter-tiling is much clearer now.

The original idea is to implement tiling support using constrained edges, rather than tiling states. But this is hard, and now I believe it’s effectively impossible to do that.

Olivier Fourdan tried to propose a Wayland protocol for that, but discussion ended up freezing and no progress was made for a long time. I admit I’m kinda scared to try to send  these changes upstream… see the bug’s feedback (sometimes I forget that the GNOME community is much more welcoming than many other FOSS communities).

I now have a real problem to solve, and the time is not enough. Perhaps it’s time to declare bankruptcy?


I’d like to thank the GNOME Foundation for sponsoring me. I sincerely hope that my engagement and contributions pay off this investment!

I also thank my employer Endless to let me join. The upstream contributions we’re doing are valuable for the community, and in turn it helps us lowering the number of downstream changes to maintain.



GNOME To Do 3.24 release, and it’s shining

startup notification

GNOME To Do is a personal task manager for GNOME. It uses GNOME technologies and integrates very well with the desktop. And now, it’s finally being released!

The 3.24 version comes with a few nice features and, most importantly, whole load of bugfixes. Let’s get started!

Autostart & notifications

GNOME To Do now (optionally) autostarts once you log in and keeps track of your tasks! This is what I see now when I log into my laptop:

startup notification
Thanks for letting me know, To Do!

To Do also detects when you put your machine to suspend, and if you resume in the next day, another notification is triggered. Isn’t it nice when your task management tool allows you to focus more on actually working on your tasks than in managing them? I certainly love not having to worry about the tasks for the next day 🙂

This behavior, of course, is optional and configurable. There is a new “Run in background” plugin that allows you to fine-tune this behavior:

Editing plugin options
Editing “Run in background” plugin options

Improved panels

A lot of bugfixes landed for Today, Scheduled and Unscheduled panels. The most important one in my opinion is the ability to select which tasklist the new task will be added. Check this out:

selecting the tasklist
Selecting the tasklist in Today panel

These panels also don’t show the date anymore. It’s not very useful to show “Today” in every task, when you’re already in Today panel, right? The same logic applies to the Scheduled panel, where you can see the date already:

scheduled panel
It looks very nice!

Todo.txt integration

Thanks to our awsome new contributor, Rohit Kaushik, we now have Todo.txt integration! This is disabled by default (it still need some polishing) but you can easily test it by running the autogen script like:

$ ./ --enable-todo-txt-plugin

Now you can just enable it in the Extensions dialog:

Captura de tela de 2017-04-24 09-33-32
Enabling the Todo.txt plugin

Select a Todo.txt file (you have to create on manually if you don’t have one):

Selecting a Todo.txt file
Select a Todo.txt file

And you can use it just like a regular tasklist!

Todo.txt + GNOME To Do
It works 🙂

Thanks Rohit!

A few considerings

A few new features were showcased in this blog post, but to me, the topmost important change is the stability of GNOME To Do. I’ve been using it regularly for the past couple of weeks and it’s pretty stable, but I know that bugs are there, just waiting for someone to trigger them.

If you see To Do crashing or behaving oddly, please file a bug at the gnome-todo product in GNOME Bugzilla. And make sure to join #gnome-todo room at GNOME IRC and say hi. With your help, we can make GNOME To Do the best personal task manager out there!

New features in GNOME To Do

It’s been a while, folks.

Some of you might have noticed that GNOME To Do wasn’t released with GNOME 3.22. There is a reason for that: I didn’t have enough time to add new features, or fix any bugs. But that changed, and in fact big things happened.

Lets check it out.

More extensible than ever

You guys know that GNOME To Do has built-in support for plugins, and is highly extensible. You can add new panels, hook up your amazing new feature in various ways, and add new data sources, all without touching the core of the application.

For this release, I ported the ‘Today’ and the ‘Scheduled’ panels to be plugins. That means that you can customize most of your experience withing GNOME To Do now – we ship various plugins and a default experience, and the user selects what fits him/her the best.

Many plugins are available now – and the list will grow.

I, for one, don’t use the ‘Scheduled’ panel that much, so I simply wiped it out of my way.

GNOME To Do without the ‘Scheduled’ panel

It feels very fresh to customize it to perfectly fit my workflow. But that’s all that happened!


Pretty much a requirement to me, subtasks are very important to my workflow. I usually have a big task (usually a project) with many subtasks. That required a huge work to make it happen in GNOME To Do, but the result is quite nice.

Management of subtasks is done by Drag and Drop

You can drag a row over another one, and tada!, you just made the dragged row subtask of the hovered row.

Subtasks in GNOME To Do

One more step into making GNOME To Do my default task list app.

Dark theme support

Dark theme was basically non-functional on GNOME To Do. Because it heavily relies on custom theming, many CSS code it used to ship only worked well on light themes. Since I don’t override my dark theme override setting, and because no one ever provided a patch, this was never fixed until now.

And to demonstrate how the plugin system is powerful, I added a tiny plugin that switches between dark and light variants, hoping that it can be used as an example plugin for newcomers.

The new Dark Theme plugin in action.

What about the release?

I will release GNOME To Do 3.22 after some more testing – I’m pretty sure there are very specific corner cases that I didn’t managed to reproduce, and someone will fall into it.

Overall, I think this is a nice feature set to land, and I’m quite happy with the current state of GNOME To Do. Of course it can use some improvements, but I’ll focus my development on new plugins, new data sources (Todoist someone? Remember the milk? Here we go!) and exotic features like statistics about your productivity, RPG-like task management, etc.

And, as tradition dictates, a nice new video showing this hotness:

Excited? Join us in creating the best tasklist management application ever. New contributors are always welcomed. Join #gnome-todo room at the GNOME IRC server, test the application, file bugs – every single contribution matters.


Writing a plugin for GNOME To Do – Introduction

I’m starting a small series of posts describing a general how-to on writing plugins for GNOME To Do. The good news: GNOME To Do has a very small API and it’s very easy to build plugins.

Note: I’ll show examples in Python 3, since this might lower the barrier for contributors and it’s a language that I know (and LibPeas supports). If you don’t know what LibPeas is, click here.

A Brief Explanation

Before jumping into code, let’s talk about the internals. GNOME To Do allows developers to extend it in 3 ways: adding UI elements, adding new panels and implementing new data sources.

A data source is pretty much anything that can feed GNOME To Do with data. For example, Evolution-Data-Server is a data source (the default and omnipresent one). A panel is a view displayed by the main window. See below:

The extensible elements of GNOME To Do

Every plugin has a single entry point: GtdActivatable. Plugins must provide an implementation of this interface. I’ll write more about this interface below.


As explained, the entry point of the plugin is GtdActivatable, which will provide the data sources and UI widgets. The definition of this interface can be found here. The following methods should be implemented:

void       activate              (GtdActivatable *activatable);

void       deactivate            (GtdActivatable *activatable);

GList*     get_header_widgets    (GtdActivatable *activatable);

GtkWidget* get_preferences_panel (GtdActivatable *activatable);

GList*     get_panels            (GtdActivatable *activatable);

GList*     get_providers         (GtdActivatable *activatable);

A quick explanation of each one of them:

  • activate: called after the plugin is loaded and everything is set up.
  • deactivate: called after the plugins is unloaded and all the registered data sources and UI elements are removed.
  • get_header_widgets: retrieves a list of widgets, usually buttons, to be added to the headerbar. This can be the hook point for your functionality, for example.
  • get_preferences_panel: if your plugin needs further configuration, you can pass the preferences panel through this method.
  • get_panels: retrieve the list of panels of the plugin. A dedicated blog post will be written about it in the near future.
  • get_providers: retrieves the list of data sources your plugin may provide. GtdProvider is the interface a data source should implement. A dedicated blog post will be written about it in the nearby future.

The next posts will be about the various ways to add functionalities to GNOME To Do. Also, the next posts will demonstrate plugins through examples of various kinds. Stay tuned!

The GNOME 3.20 release

Time has passed and we finally made it: GNOME 3.20 just got released. I’m writing this post in a full GNOME 3.20 + Wayland session (thanks Arch folks, [gnome-unstable] is amazing).

I’d like to take some time to reflect about this release, what happened and what didn’t happen.


While this certainly wasn’t the biggest feature release of GNOME Calendar, I’m very satisfied with it. Not only it went through a major rework that will make future development much easier, but also 4 new contributors had their patches in. 4 new contributors.

This is truly beautiful.

They polished lots of rough edges. Thanks to these contributions, past event are now less proeminent, year view is much more visually appealing and respects GNOME Shell’s setting to show week dates.

Captura de tela de 2016-03-23 00-47-05
Year view improvements and faded past events.

Not only that, but Month view also received subtle improvements. The rendering code now ensures a pixel-perfect selection, more proeminent background for selected days and navigating to beyond the last days switch the month.

Captura de tela de 2016-03-23 00-51-58
Month view improvements.

Good news? I didn’t do any of these features! They were all contributions from independent, warmhearted people spread all around the world.

To Do

This release made GNOME To Do shine. I spent most of my time working on the new plugin support, and learned a lot to make it work correctly. Thanks to Garret Gregier, Patrick Griffis, Christian Hergert and many other supportive and warm people, the engine works good and soon I’ll write a small series to demonstrate plugin development.

Captura de tela de 2016-01-31 18-59-50
Plugin support for GNOME To Do.

Let’s see what will be created from now on 🙂


Oh, dear Nautilus. I’ve worked on you as a Summer of Code project, then as a free-time project, now it’s a paid-time project. I love you, but I disdain you. Your old codebase with loads of obsolete code makes my spine chill, and yet I can’t leave you crying in the rain.

This cycle, I worked on the new Search feature. Then Carlos finished what I’ve started, so he deserves all the credits. Check his post about it.

What’s coming next?

Captura de tela de 2016-03-22 14-16-51
This is coming next: action bars.

Maybe that’s not the only big thing that will come. Who knows 😉


Poor GNOME News, almost dying. I managed to push some changes on it, but it’s far from perfect. Maybe I’ll manage to sneak more improvements during 3.21 cycle?

Captura de tela de 2016-03-07 17-55-36


This was a good cycle. I’m very proud of how much better GNOME got during the last releases. It’s definitely getting to a stability and usability points that we saught since the first 3.0 release. The apps are slowly (no so slowly anymore) getting mature and useful.

What’s going on with GNOME To Do

Aye folks! Since a few weeks ago, GNOME To Do saw quite a big number of changes. As some of you may not be strict git followers, a good review of the latest changes may come in handy. Let’s go!

A new list view

Yeah, that’s it – GNOME To Do now has a grid and list views of tasklists. A list view is very useful when you have many tasklists. Check this out:

Captura de tela de 2016-01-31 18-49-34
The traditional grid view
Captura de tela de 2016-01-31 18-49-55
The new list view


I’m expecting some input on it, as I strongly believe this is not the ideal UI for the list view. For example, it’d be nice to display the number of tasks each list have. Anyway, a small new feature was added as well – task headers.

Task headers on Scheduled panel

Since I started using Todoist, I absolutely fell in love with it’s organization of tasks. Seriously, Todoist designers, you’re really skillfull. Congratulations! So I decided that To Do also needed something similar to that, and here’s the result:

Captura de tela de 2016-01-31 18-58-21
Not perfect yet, but at least working.

Hope this will be useful! Now, the single most important thing that this release has to offer. Ladies and gentlemen, please say hello to the new plugin system.

The plugin system

There are many things we can do with a personal task manager. We can have integration with different sources of tasks like Google Tasks, Remember the Milk, Todoist, among others. We can also have new features like user statistics, Bugzilla integration, different handling of recurrency, et cetera. Imagination is the limit.

Since I’m pretty sure I’m not enough to implement all the crazy ideas, I decided to make To Do handle plugins, so third-party developers can make their own extensions. This work is obviously inspired in the awsome work made by Christian Hergert with GNOME Builder.

A sneak peek:

Captura de tela de 2016-01-31 18-59-50
Ops! Look, you’re not seeing that I’m working on Todoist integration, ok?

I want to take this paragraph just to say a big thank you for Patrick Griffis – he gave an unvaluable help on post-fixups on the plugin system. Please, dudes, applause for him!

The plugin system itself is built on top of Libpeas, which happen to have a really mature API. I took a special care to reimplement the plugin manager window to better fit GNOME HIG, with the hope it’ll serve as an inpiration for the libpeas-gtk widgets to be updated.

And yeah, you’re not being tricked by your eyes. I am working on Todoist integration – you can check it here.

Next posts will explain the new To Do API with an example, fictional plugin. Stay tuned!

What the future holds (or plans for GNOME 3.20)

We did it. Yes, we finally made it. We’re having the 3.18 release, and is the best release ever – just like every GNOME release. We saw many cool features landing, a number of awsome project which the GNOME interns (hey, I was one of them too!) worked on this summer and lots of exciting news going around.

Every new GNOME release, however, actually just an excuse for the next one. There’s always room for improvements and the work never ends. I personally like the beginning of new release cycles so that I can plan ahead what I’ll probably work on. And why not share it?


Oh, poor Calendar. Received so little attention for 3.18 release… fear no more! Calendar will receive it’s well deserved love. Here’s what’ll happen:

  • Calendar theme will get some attention. Minor details will be fixed.
  • Every single struggle pointed by Gina’s usability tests is going to be fixed.
  • We’ll finally have Drag n’ Drop support!
  • Hopefully, Week view will be ready.
  • A new view will be available too – but that’s a surprise! 😉
  • Much like To Do, Calendar will receive some error reporting UI too.

To Do

The new kid in town will also receive some love. Since it’s very fresh and young, there’s plenty of ideas to try here:

  • A new flow grid view will land (see Google Keep’s grid view to have an idea).
  • Support for subtasks (and the many cool things we can do with that).
  • Full GOA support (actually depends on Evolution-Data-Server work).


I started working on Nautilus as part of my Summer of Code internship, and – guess what – I won’t abbandon it! Such a core component of GNOME stack must receive as much attention as it possibly can. For this cycle:

  • Improve the way we do bookmarking on Nautilus (possibly will reflect on Gtk+ too).
  • Rework the search UI.
  • Remove the duplicated GtkPlacesView code.
  • Many bugfixes.


Together with Nautilus, I managed to inject some code in Gtk+ as part of my GSoC internship too. And I just realized that I’m the official(?) maintainer of a Gtk+ widget! As such, that’s what I’ll do on Gtk+:

  • Show the free space of local disks, as shown in the mockups.
  • Cleanup & document the code.
  • Expose it as a public widget (and also remove the duplicated code from Nautilus).
  • Improve the places sidebar.

I’m also hoping to work on smaller things with Music and Maps. And last week, I made my first patches for Grilo! Stay tuned for updates on that.

There’s not much to say besides that. I sincerely hope you guys enjoy using the new GNOME 3.18 release, just as much as I enjoyed working on it! See ya!

Productivity, made better

Two months ago, GNOME To Do was introduced to the outside world. People got (unexpectedly, I must admit) excited about it, and said that the app looks promising. A month lated, another version was release with a bunch of new features.

Now that we’re reaching the 3.18 release, it’s time to settle things down and stop the heavy development phase (which, by the way, should have stopped 3 weeks ago!). Let’s see what changed.

The Icon

Yes, you read it correctly. GNOME To Do finally received an icon, and the best of all: from the amazing Jakub Steiner! Take a look:


Selection Mode

The biggest highlight of this development cycle is the new selection mode. Following the GNOME selection pattern, it enables deleting & renaming tasks.

Selection mode

Some tasks are undeletable (something I couldn’t resolve reliably in time) and the Delete button gets insensitive for them.

Deleting a tasklist

Renaming tasklists is quite pleasant too:

Renaming tasklist

Error handling

Something that almost missed this release, To Do is now able to report errors that may happen. Error reporting, while it may sound too technical, is very important for the users to be able to share their issues without a major burden.

Error notification

Error report

Cleanups, cleanups, cleanups

Many fixed and cleanups were introduced. A whole class of annoyances was fixed, making GNOME To Do very pleasant and smooth to use. I sincerely hope that this small and simple application will help you organize yourselves and, at the very end, optimize your life and make you guys happier & healthier!

As always, a screencast of the cited features:

Update: don’t forget to check the brand new GNOME To Do page!

GNOME To Do 3.17.4

After introducing GNOME To Do, it finished a very important cycle of development and we had a great set of fresh features for 3.17.4 release. Check them out:

Today & Scheduled tasks

The most noticeable feature of this release are the “Today” and “Scheduled” task lists, visible from the main view. They are always updated and very handy!

Captura de tela de 2015-07-20 21-34-51 Captura de tela de 2015-07-20 21-34-41

Resizable editor &

search support

The task editor pane received some love, and it nows supports being adjusted with drag and drop! Also, we now have a rudimentary search support for task lists. Since this cannot be expressed through images, see the video below:


Introducing GNOME To Do

Ever since GNOME 3 release, I was looking for good personal task managers. Specially now that I’m working on a big project a.k.a. Summer of Code, I feel a real need to stay organized. For me, a good task manager for GNOME desktop should have/be:

  • GNOME HIG compilant interface;
  • Complete integration with GNOME environment;
  • Simple and easy to use;
  • At least the basic set of expected features (notes, due dates & priority);
  • GNOME Online Accounts integration;

Currently, we have Getting Things GNOME!, GToDo and Tasque. While they obviously have their merits and a big history, they fail at least in one of my requirements to be the most awsome task manager ever. Damn, some of the are even unmaintaned these days. Because of that – and because I’m working on many projects that requires me to stay organized – I decided to create a task manager that shall fit the previous points.

Say hello to GNOME To Do.

GNOME To Do main


GNOME To Do currently is very simple and unpolished. It uses Evolution-Data-Server to store it’s tasks, and has a primitive integration with Online Accounts. I’m trying to strictly stick with the latest GNOME trends, and some interesting features are already present.

It has, for example, a very smooth initial setup proccess (I’m yet to see a GNOME application planned with initial setup in mind from the very beginning).

gnome todo initial setup

It supports multiple task lists, nicely integrates with GNOME Online Accounts, and task lists can have different colors.

gnome todo task lists 2

Task lists support dark color schemes, and done tasks are hidden by default. You shouldn’t be distracted by your past tasks, unless you bother to seek them. Tasks support notes, priority and due dates.

gnome todo task list 1

Creating a new task list is also very simple and intuitive, and the user can select the task list’s storage location – where the new task list will be created – in-place. It, however, respects the default location set in the initial setup (and you abviously can change the default one after initial setup too).

Captura de tela de 2015-06-22 11-16-49

Captura de tela de 2015-06-22 11-16-35

By the end of the day…

GNOME To Do is a very young project. It need testing, it has some nasty known bugs, and many features are missing. I will improve it as my schedule let me work on it, and I hope it’ll ready for 3.18 release.

Code can be found at GNOME Git repository [1] and you can jhbuild buildone gnome-todo to build it too.