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.

A Week for Releasing

I’ve set a deadline for doing a weekly post. Well, last week, I missed. It was a really busy week. I was building a web-page, and I haven’t done that in like 10 months or something so I had a lot to catch up. It was fun, though. I’m right now looking forward to start playing around with Rails 4

On the other side my Gnome duties caught up with me. I’ve been acting as Contacts maintainer with Alex for a while now. But so far, he was doing the releasing part. I, usually, implemented new stuff, reviewed patches, fixed bugs, but no more. This past week since Alex is on vacation I had to fill in doing the release.

I was prompted by Matthias Clasen for doing a release of gnome-contacts for the 3.9.4 development release of Gnome. In the process, I realized I can’t log into master.gnome.org for the purposes of uploading the packages. So, Mathias kindly offered himself to upload the package. Later I got my account authorized, and I was able to release gnome-contacts-3.8.3. This latter one, I was surprised to see it packaged this morning into Archlinux.

These two releases are only bug fixes, yet there nasty bugs fixed there. You can read the NEWS file, or the commit log to find about.

What’s next on Contacts ? I want to implement New Contact flow inline and get rid of dialog, and close a bunch of bugs around it. Also, yesterday I got a bug from Allan about updating a bit the selection pattern, and I would like to work on it.

Update: I have to thanks Jonh Wendell for his fix of the webcam bug.

June Update on Calendar

I’ve made a commitment with myself of posting updates of the stuff I’m working once a week. This one is the first, and I expected to be out by Monday, but an octopress update and a plugin installation for handling image galleries kept me from doing it.

By now, I’m a little tired of writing, therefore I’ll be quick about it.

A few weeks ago I restarted the work on Calendar with the hope of adding a bunch of new features in Gtk+ to the project. I started by creating a new branch, since I was sure the build would break a lot times in between, and didn’t want to spoil master

I’d set for myself a bunch of points I want to accomplish by rewriting the UI and some of them has been done, some others, not yet. That’s the main reason why I keep the branch still around. As soon as I feel the work is done, I’ll come back to work on master

I wanted to:

  1. Ditch clutter dependency. Use only Gtk+ widgets.
  2. Include GtkSearchBar, GtkStack and some of the latest Gnome UI guidelines
  3. Use GtkBuilder’s ui files as much as I can
  4. Rework week-view to use GtkOverlay instead of my own solution

So far 1, 2 and 3 has been accomplished. Point number 4 is going well since I manage to craft a day-view with the same requirements of week-view that does not need to use GtkOverlay.

Some of the work done is showcased below

Software Updates

It’s been a very long time since I posted anything. You might not know, I live in Santiago de Cuba, Cuba, one of the cities trashed by the hurricane Sandy. That left us a bunch of loses and lack of communication for weeks. We went without power for at least 14 days, so you can imagine why I was not posting updates. Some time has passed and the city is growing back from its ashes.

I’ve been working on Calendar, trying to get some minimal functioning application, to get something out for you to use, and then I can continue improving the rest. For now, I’ve focused on enable a fully working the “Event Details” dialog. The thing is kinda clunky yet, but it works. It needs more polish and heavy testing, though.

I also went and made a year-view implementation, which is almost fully functional. This one was easy, was almost copy/paste from the old month-view implementation. The month-view also received a full face-lift. The previous version had some super-rough edges when months didn’t fit in a 35 cells grid. That has been fixed, our designers pulled some rabbits out of their hats. The new design, which is already implemented suggest a scrolling animation, but I want to be sure it works before going into it.

I’m trying to get Calendar in beta shape for 3.8 release. I’m still need to implement three views: list-view, day-view and week-view, and the search mechanism, with the results showing. For the week-view I have an implementation which have scrolling issues, I have to take care of.

Some minor mojo I don’t want to pass unnoticed:

  • Squared buttons in the toolbar, thxs to Debarshy Ray for the suggestion and Cosimo’s libgd for the hack.
  • We added a proper use of g_clear_object
  • Simple keyboard shortcuts, for Quit and change amount views.

Now some screenshots