Andy Holmes

Here I plan on sharing code and any other computer related files like SPICE, configuration files, and other things. I hope you find some of it useful.

Latest Articles

Subprocesses in GJS

gjs async

There are several ways to execute subprocesses with the GNOME platform, but many of them are either cumbersome, error prone or limited. This article is about launching subprocesses in GJS with GSubprocess.

DBus in GJS

gjs dbus

This article is an extended treatment of DBus, specifically covering its usage in GJS. While you’re strongly encouraged to use the higher-level APIs, this article will cover DBus from top to bottom including GVariant, low and high-level Gio APIs and the convenience APIs provided by GJS.

Evolution Contacts in GJS


This is an overview of basic interaction with Evolution Data Server in GJS, specifically covering Address Books and Contacts for a read-only use case. It will allow you access to contacts in the local address book, Evolution and GNOME Online Account.

Asynchronous Programming in GJS

gjs async

Although JavaScript engines use threading behind the scenes, JavaScript programs use a single-threaded event loop. This means that long, synchronous operations can block the event loop from executing other operations until completed. This can cause noticeable hangs in interactive scripts and in the case of a Gnome Shell extension could even lock up the whole desktop.