<h1 id="title">A terminal feature I never knew I wanted</h1>
<div id="dates">
<span>Posted: <time id="post-date">2017-12-04</time></span>
</div>
<p>
For a very long time, maybe close to eight years, I've used <a href="https://launchpad.net/terminator">terminator</a> as my terminal emulator. Based on gnome-terminal but offering features like split panes and more, it was easy to use, looked and worked well, and was widely available. The pane splitting was really a driver for my workflow, I came to (and still do) rely on it to be productive.
</p>
<p>
Very recently, in a <a href="https://lobste.rs/s/fexnv0/5_coolest_linux_terminal_emulators">lobste.rs</a> comment thread about Linux terminals someone mentioned <a href="https://github.com/jwilm/alacritty">alacritty</a>. I was not at all in the market for a new terminal, but GPU-accelerated sounded interesting (more on that later) and Void has a package so I figured what the hay. My initial impression was that alacritty's lack of features was its biggest feature, but then I fired up <code>ncmpcpp</code>...
</p>
<p>
Alacritty doesn't do much, the question of scrolling (or the lack thereof) is even covered in the FAQ. This was something I noticed right away for sure, but it didn't scare me off. I knew that could be delegated to <a href="https://www.gnu.org/software/screen/">GNU screen</a> (albeit via using it in ways I'm not super accustomed to) or <a href="https://github.com/tmux/tmux/wiki">tmux</a> (which I had never really used before.) As usual, the lack of features is in my opinion a feature itself, and I've taken this opportunity to add tmux into my workflow. Perhaps more on that in another post..
</p>
<p>
But back to the potential of a GPU-accelerated, terminal-based music visualizer! Well, suffice it to say it kicks ass. Go ahead and download alacritty for yourself, get the cli asciinema player, and check out <a href="/media/watch-me-listen-to-music/">my video of the visualizer in action</a>. So now I have a new terminal that I didn't ask for (that I really enjoy) and a new workflow based on paning with tmux. Cool!
</p>
<p>
It hasn't been a 1:1 transition, but it was very close and what wasn't matched in terms of functionality was replaced with something I didn't have before. A few observations:
<ul>
<li>Pane splitting via tmux. This isn't handled exactly the way terminator does it, for example if I do a double click the whoe line - across panes even - would be selected, whereas in terminator that pane border was more "solid" I guess.</li>
<li>Tmux bindings that match what I use in Emacs - aside from the different prefix binding, I now split panes and navigate them with the same bindings that I use in Emacs. This is a huge win!</li>
<li>I no longer find myself opening multiple terminal windows; Now what might go in another window just gets opened in another tmux session. This has worked out very well!</li>
</ul>
</p>
<p>Although it is stated to be "alpha software", Alacritty already shows a lot of promise and is now a staple in my workflow.</p>