This was posted 2 years ago. It has 0 notes and 0 comments.

A divvy clone for gnome-shell. Excelent stuff!

I made some channges to it (added keybindings, removed the icon). They are available from

This was posted 2 years ago. It has 0 notes and 0 comments.
The bipolar lisp programmer

Interesting read.

This was posted 3 years ago. It has 0 notes and 0 comments.

# gnome-shell-extension: dock-singleclick

UPDATE: since another extension that does this is available from, I deleted the repository. Good riddance.

One of the things people usually complain about Gnome-shell is that, for opening a new window from the dock, when a window of the application is already open, you must press Control and the clicking, instead of simply clicking, as it was the case with Gnome 2 launchers. What people fail to uderstand is that the dock is application-centric, not window-centric, and that it must work that way in order to make sense. The first time you click, you go to the application (it launches), and the second time too (it goes to the open window(s)). That’s also why it makes sense to show only one icon per application in the dock. Opening a new window is a secondary action, and not all applications will support it (some applications must have only one instance, for example — this has been contemplated in the new GTK+3 APIs, for example).

Anyway, people complain about this. What I’m quite surprised is that most people stop there, when in reality they can fix those things if they really wanted. The full source of the gnome-shell interface is available locally, as javascript, and there is a quite good extension API. I can’t deny, though, that writing extesions for this system isn’t very straightforward yet, because the documentation is lacking, but this is not unsurmountable.

So… I’ve written an extension to allow people to open a new instance of the application with a single click. By default, it is enabled only for terminals; you must tweak a variable for extending it as you please. I think that’s fair enough. This extension exists against my better judgement (being used to the way gnome-shell works, having icons that launch applications seems like utter madness!).

@github: gnome-shell-extension-dock-singleclick

This was posted 3 years ago. It has 0 notes and 0 comments.
kecebongsoft: Changing "gray area" at the side of GVIM


I’ve faced similar case for several times, when I maximized my GVIM, it shows gray area at the bottom and right side of the screen. After some research, I found out that GVIM window dimension is actualy based on columns and rows rather than pixels. Therefore if your resolution is not matched with…

This was posted 3 years ago. It has 31 notes and 0 comments.
my desktop today.


gnome-shell theme: small-things, a mashup of Adwaita and Zukitwo.
mutter theme: Drakfire Dream
GTK theme: Zukitwo
Icons: Faenza Cupertino

my desktop today.


This was posted 3 years ago. It has 0 notes and 0 comments. .

Why is programming fun? What delights may its practioner expect as his reward?

First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God’s delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.

Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child’s first clay pencil holder “for Daddy’s office.”

Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.

Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.

Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.

Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separately from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.

Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.

Fred Books - The Mythical Man-Month
This was posted 3 years ago. It has 0 notes and 0 comments.

Notes on writing gnome-shell extensions

Musings of an OS plumber is an excelent source of information on the basics of gnome-shell extensions development (probably the best, so far), but it is already a bit outdated because of some changes in the 3.2 gnome-shell API. These notes are an attempt to complement the information already available.

  1. extension.js must have at least three functions: a) init(), which runs when the extension is loaded (when the shell starts). b) enable(), which runs when the extension is enabled (via gnome-tweak-tool, for example) c) disable(), which runs when the extesion is disabled.

    Most existing extensions will have to adapt to this change, and move most of their code to enable. These changes mean that you must define a way of returning to the original state in the shell.

  2. extensions are loaded after the main elements of the shell are created. This won’t affect many extensions, but it means that there are limits to what one can do with monkeypatches. One can, of course, try to destroy the original elements of the shell before and then recreating them with some monkeypatched versions, but that isn’t very easy.

    This means that some extensions will have to be a bit more complex than they used/needed to be. For example, fpmurphy’s noa11y extension can’t simply modify imports.ui.panel.STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION, because that is defined before the extensions are loaded. My take on it is:

    const Panel = imports.ui.panel;
    const Main = imports.ui.main;
    idx = null;
    function enable() {
        idx = Panel.STANDARD_STATUS_AREA_ORDER.indexOf("a11y");
        // addToStatusArea would throw an error on disable if we don't set this to null 
        Main.panel._statusArea['a11y'] = null;
    function disable() {
        let indicator = new Panel.STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION["a11y"];
        Main.panel.addToStatusArea("a11y", indicator, idx);
    function init() {
  3. I wish looking glass had some kind of reflection (that would be one hell of a great idea for an extension…). For now, knowing one’s way between the shell javascript files is required. Thankfully, they are quite well organized. I wish there was some more documentation on the gi imports, though (like gi.Shell).

  4. One can evaluate javascript in the shell using its DBus interface (org.gnome.Shell:/org/gnome/Shell/:org.gnome.Shell->Eval(s)), which in theory would allow for the development of external extensions. However, the shell objects are not well supported this way. As long as the code one calls doesn’t return objects, it should be fine, though.

This was posted 3 years ago. It has 14 notes and 0 comments.


This was posted 3 years ago. It has 0 notes and 0 comments. .

A little project I forgot to mention before: vim-pad, a quick notetaking plugin for vim, à la Notational Velocity. I was prompted to work a bit in it this weekend by onethingwell’s mention of deft.

Flattr this

This was posted 3 years ago. It has 4 notes and 0 comments.