~hristoast/hristoast

hristoast/site/a-terminal-feature-i-never-knew-i-wanted.html -rw-r--r-- 3.0 KiB View raw
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<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>