Terminix Year in Review

Gerald Nunn     Dec 31, 2016

Terminix is now just over a year old with my first commit in Github logged on the 29th of December 2015. Since then the project has seen almost 1,500 commits, 52 contributors and been starred almost 900 times in Github. Terminix is currently the second most starred D language project on Github. It’s been packaged, either officially or unofficially, for most of the major Linux distributions including Arch, Debian, Ubuntu, Fedora and OpenSUSE.

I thought it would be fun to take a look back at some of the project history, highlights and low-lights from the past year. I’ll then spend some time talking about goals and plans for 2017.

Terminix was born in November 2015 when I was looking for a new hobby project to work on in my spare time. I had previously written an Android diabetes application called OnTrack and was looking at doing something different this time around. I had done a lot of desktop applications in Delphi in the early 2000’s and enjoyed it, I thought it might be fun to go back to that well once again but build an application for Linux and GNOME.

The first order of business was deciding what application to build. Looking at some of the possibilities, one thing that struck me about terminal emulators was that no one was really building one that followed the GNOME Human Interface Guidelines (HIG). While GNOME Terminal is a very capable application, at the time it wasn’t following the GNOME direction in terms of Client-Side-Decorations and other features.

Simultaneously I noted that most alternative terminal emulators that were based on GTK were stuck on GTK 2 with nebulous plans for GTK 3. Terminator for example at the time had a GTK 3 branch but progress on it was glacial with a GTK 3 version only being released last month. Guake, another popular terminal emulator also seemed stuck on GTK 2.

Finally, I was really impressed with what Christian Hergert was doing with Builder, particularly around the user interface. Builder allows you to split documents and I really like the way it’s interface worked in this regard. It’s applicability to a tiling terminal emulator was readily apparent.

All those factors together led me to decide to build a tiling terminal emulator using GTK 3 and focused on the GNOME HIG.

The next order of business was selecting a language to use to build Terminix. I knew I didn’t want to use C as I don’t personally consider it to be a very productive language for GUI applications though I know some may disagree with that. I had also done some coding in Python at various points in my career and came to the conclusion I much prefer static typing versus dynamic typing so that was out.

That led to the new languages intended to fill some or all of the same niches as C, namely D, Go and Rust. This turned out to be a pretty easy decision since at the time the GTK bindings for Go and Rust were severely lacking in terms of API coverage. D on the other hand had a very complete GTK binding in the form of GtkD. The other thing that attracted to me to D was how similar in style it was to Java whereas both Go and Rust were more of a departure. Since my day job is working with Java and I’m not a natural polygot when it comes to computer languages, minimizing the context switching between the two was a nice benefit.

So that gives a bit of the history, let’s look at the highlights and low-lights of the last year. Terminix highlights for me include:

While highlights are always fun for me to talk about, I think in many ways the lowlights are more interesting:

So with that out of the way, let’s talk about what 2017 will bring. I have some ambitious goals and it will be interesting to see how many can be achieved. One thing you will notice, and I mentioned this earlier, is a fairly constant referencing of iterm2 with regards to features.

At this moment I think iterm2 is the best terminal emulator available, unfortunately it’s only available on OSX. While I’m not so arrogant as to think I can clone it 100% on Linux, it’s definitely an inspiration for many of my goals that I list below. If you are using OSX, I highly recommend checking it out.

Here’s my goals for 2017:

Well that’s it for the year in review, it’s been a fun ride so far and I look forward to what 2017 brings. Thanks to everyone who participated in Terminix development so far, we couldn’t have made it this far without you.