Calendar Update

This cycle I’ve been hard at work with Calendar. The idea is to get it in beta shape for GNOME 3.16 which is coming on march (or April, I never know, since it ends for developers before). I’ve being says these for two or three GNOME releases but this one is true. The bad about it, is that Contacts might get little love this time.

When I restarted work on Calendar this cycle it had been almost a year since my last commit. I got help this time. I have to thank every one involved in Calendar development, starting with Bastien Nocera, and Lapo Calamandrei whose design work has been amazing and last, but in anyway least, Georges Basile Stavracas Neto, who has offer us his coding skills and is the responsible for a bunch of new features in Calendar.

I would put here some mock-ups, and I know a more longer post is needed in order to let you know of some the stuff I’ve learned while developing the new features, but this going to be short one.

I’m about to make a 3.15.3 release of Calendar, even when I know is late, the release was last week. But I think is better to get it rolling, also there’s bunch of new features and I want people to be able to test it and comment on it.

Calendar new features:

  • Initial search. This one is in very early stages, just search, and do nothing else.
  • Month-view reworked. We got a mock-up from Lapo with almost every issue the view had solved
    • Overflow of events on day cell is indicated and the events are shown on a popover
    • View has support for RTL locales
    • View has support for multiday events
  • Edit/new dialog reworked. George got to work on this and fixed almost every issue the previous dialog had.
    • Moved the widget to use GtkBuilder UI files
    • Added new working time and date selectors
    • Added proper GtkHeaderBar
    • Added calendar selector popover for when the dialog is used on event creation
  • Calendar got the ability of hide/show calendars
  • Navigation buttons were relocated and jump to today was added
  • Calendar got a new 3d icon courtesy of Jakub Steiner

As you can see, Calendar has moved a lot forward. Hope you enjoy it.

To get you moving I posted these screenshots and little video

GNOME 3.14

Last week GNOME 3.14 was released. I’ve been using my jhbuild copy since last Wednesday, and have to say I’m most happy with the improvements this cycle brought. I wanted to talk a bit about it, and this is one of the reason of this post.

As you can see in the release notes this version includes improvements around the whole stack: the network and sharing settings; the input system, with support for gestures and improved touchscreen support; the shell and a bunch of updated applications.

I’m most happy with the updates on GNOME Shell, this time the developers bring some pretty nifty animations to the Activities overview and windows. There’s also a whole set of changes for the developers using and targeting GNOME as platform. I’ll be talking a bit more on this latter.


I thought at first on describing you the animations added to latest iteration of the shell, but since an image is worth a thousands words. I guess a video will be worth 30 times per second the same, so here it is this video showing you exactly that (Note: this is screencast was not made by me).

At first I thought I will be rapidly tired of those animations, usually, animations on the user interface looks good initially but over time just gets in the way of user daily activities. In this case it’s different, as in the case of those well thought features, I’ve been using the new shell for a over week a now, and I’m great surprised of how the animations don’t get in my way. Without being a magical thing, sometimes I realize of it when closing a window, or when opening one, but most of time I don’t even think of it. This speaks very highly on the craft of those designers and developers who accomplish so subtle change. Thanks.

Developers improvements

Now, this is the main reason of the post, even when I have left it to the end.

Life for the developers in GNOME has been improving steady over the last few cycles. GNOME hackers has come up with a DX hackfest, the interest in having a SDK for developing GNOME software has risen in the community, and projects like Christian’s gnome-builder are actively working towards this.

With GNOME 3.14, the awesome design team has come up with an updated version of GNOME Human Interface Guidelines. I can’t stress enough the importance of this. Having a published and updated HIG provides uniformity and organization through the whole set of GNOME applications. I have it for around 4 days, and I have found myself going over to review a pattern, recheck a convention, etc. From simple things like margin, alignment and visual layout to others more detailed like how best use specific widgets available in Gtk+ and the contents of menus are explained there. The work done in getting those HIG ready is really impressive and we should be grateful as a platform of having this guidance for developers, either old ones and newcomers. I think is in order to thank great Allan Day and all the others for their work on this.

Finally, I want to mention Gtk+ improvements as a toolkit. First, the rewrite of Adwaita theme and its inclusion in Gtk+ will provide better experience for the user across different platforms and better looking in general. Second, and most important, the inclusion in Gtk+ of a new Gtk+ Inspector thanks to the work of Matthias Clasen. I won’t be talking much about Gtk+ Inspector since there have been already some post on it. I just wanted to mention it here because with the release of stable versions of Gtk+ and GNOME this is accessible to much more people than the selected team working on GNOME.

As before, I hope you enjoy GNOME 3.14 and its perks. See you around.

Contacts 3.14

It’s been almost seven months since my last post and much have happened. Across the next posts I’ll be telling you some of what’s been and what will come. Yet, today’s post i about Contacts and the improvements we made on this cycle and you will see when GNOME 3.14 gets released.

The biggest greatest work on these past months was implementing inline contact creation. For a long time I had Allan’s mockups lying around, there were, also, some bugs concerning the “new contact dialog” and its behavior. So we set the goal to fix those and implement the feature this cycle. Doing this I realize the some internals cleaning in Contacts is in order, but, since feeling it is a big task I decided to delay it and hack our current ContactEditor widget to make it able to work on the new flow.

Down, at the end, are some screenshots.

We also worked a bit on others details. There’s a list here:

  • Updated all our dialogs to match latest Gtk+ design
  • Fixed the header-bar behavior and looks for selection and edit-mode
  • Fixed some bugs related to changing your default address bug. This included hacking into folks library, a work of which I am very proud.
  • Improved Adwaita dark variant support: Contacts maintained tweaked css code for colors definitions, we set out to use the defaults provided by the theme in order to work well with both variants.

I hope you can enjoy latest version on Contacts when it’s released. Go, find and bugs and improvements and let us know

A word on bugs

I’ve been trying to maintain Contacts’ bug list properly tagged and organized. In accomplishing that I’ve marked some as NEEDINFO, now, it’s been a while of this. I just wanted to let you know, I’ll be closing those bugs if they don’t get any updates before 3.14.1 is out on October 15.

Presenting GProxies

Lately, I’ve been working only from my laptop, and since I’m moving a lot usually I find myself in situations where I need to change networks details to properly connect to Internet. Now, GNOME and NetworkManager network configuration system does a decent job at remembering your network settings across different network.

The thing about this, it’s that a network profile as defined in System Settings does not keep your proxy configuration for that profile. So I took the task to wrote a small tool for keeping different proxy configurations and allowing easy switching between them.

The tool is called GProxies. It’s built using latest Gtk+, GLib and Vala. I tried to use the minimal amount of dependencies so it won’t have that much noise.

GProxies is designed with a very simple plugins system. Plugins are meant for updating other applications’ configuration whenever you select a different proxy setting from the interface. For instance: I made a plugin for updating my git’s http.proxy config automatically when selecting a different a proxy settings. There are two types of plugins: one main default plugin, for setting GNOME system settings’ proxy and the others living inside ${XDG_DATA_DIR}/gproxies designed to update other applications configuration.

A plugin is defined by a folder named after the plugin in ${XDG_DATA_DIR}/gproxies with two or more files in it:

  • a plugin.ini key-file. More details are explained here.
  • an executable script/application which receives proxy details as calling arguments

This way you can make plugins for changing the proxy in any applications you want. I’ve made another repository with the plugins I’ve write for myself.

Right now the tool is in a working state. I have some other improvements in mind, such as:

  • Add some interface to properly enable/disable plugins
  • Add the ability to install plugins from zipped files or remote sources
  • Add a direct-connection (no proxy enabled) state

Finally, I’d like to say how much I enjoyed coding a small application for the GNOME desktop. Gtk+ toolkit is perfect for this kind of task, with widgets which helps enforcing GNOME HIG making an application fits properly in the desktop environment. Also, Vala as a language it’s really powerful and composite widget templates from Gtk+ really speed up the development process. The code of GProxies is pretty simple, and I guess it would make a nice reading for GNOME developer beginners.

Below, I present some screenshots. I hope someone will find this useful.

Contacts 3.10

This is post was due for about two weeks ago. I’ve been very busy, so here it goes.

GNOME 3.10 was released almost three weeks ago. A huge number changes and improvements were made as you can see in the release notes. Those changes affected Contacts as well.

This cycle the platform gained client-side decoration support from Gtk+ toolkit. We, in Contacts, also incorporated a cool header bar, which in our case has the perk of being splitted between the contacts list and the main contact pane.

The change in Contacts I’m most proud of is the new Change AddressBook dialog. It’s an UI change that improved the experience a lot and clarified which is the active addressbook

Finally, under the hood, Contacts is starting to use most of the new widgets recently migrated into Gtk+ and the template support landed this cycle.

Edit: I owe you screenshots.