My new toys - configuration weekend

New tools

I thought I will give a try and install two applications:

  • alacritty - terminal emulator - almost 55k (!) stars on GH (I need to find out why)
  • zellij - which is a “terminal workspace with batteries included” (hm, why it is so popular?)

In the meantime, I also try out:

  • broot - file finder/browser (just checking if I need it, I’m rather happy with fzf defaults.
  • yazi - which is ranger alternative written in Rust (“Blazing fast terminal file manager written in Rust, based on async I/O.”)

My playground

  • I’m trying out alacritty. Installs without issues on ubuntu with snap. Works just fine. I don’t know why people love alacritty so much.
  • I remember I needed to download zellij, but now I found it on snap;
  • broot is strange and confusing, I played a little with it, it has its potential, I probably need to learn about it more
  • yazi looks nice and promising; it is sooo much faster than ranger (which is witten in Python)
    • however, I need to find out how to change the default configuration of alacritty or yazi so that .png files can be rendered somehow inside the terminal without launching feh or eog
    • (3 mins later) I found this note saying I need to install Uberzug (sounds German and scary, how can people use German unwelcoming names for thei software, I don’t get it.)
  • I also enabled Caret Browsing in firefox to improve working with keyboard only.
  • I watched “How to useand configure Alacritty” by Eric Murphy
  • then The Algorithm just took me over and I started watching, in order:

Dopamine levels: through the roof… …wait and calm down! No, you’re not jumping into Obsidian plugins right now! Hold your horses!

Let’s see what we’ve got:

alacritty

alacritty webpage

what I like

  • there is vi mode toggled by Ctrl+Shift+Space which allows to navigate and copy any part of the terminal screen
  • it is fast.
  • it is configured in TOML.
  • has good defaults
  • hints definitions for mouse interaction (like: highlighted web links ready to be clicked and navigated to)

Note: hints seem to work in terminal itself, but are ignored when zellij is used:

zellij does not support alacritty hints

wezterm

wezterm webpage

I was previously using wezterm which is incredibly nice (15.1K stars). There is one reason why I decided to try out alacritty: wezterm is not available in ubuntu snap (you can add APT repo or download pre-built packages), flatpak is only for stable, and appimage requires re-download each time I want a new version; alacritty is packaged in snap so it is easier to update. Yes, I know. I’m lazy 😄!

zellij

zellij webpage

It has suprisingly welcoming user interface:

  • tab-bar plugin at the top shows the name of your session and all your tabs
  • a pane (with default shell)
  • status-bar plugin at he bottom

Those two lines at the bottom are your “menu” and show what you can do and how to do it:

  • CTRL prefix operates on higher-level entities (panes, tabs, sessions) or actions (locking, searching, moving, resizing) -as if they were introducing a new “mode” (like vim modes); you should expect more fineg-rained actions/options be available using ALT
  • ALT prefix allows to operate in currently selected mode

This is the “normal mode”:

Default menu view in zellij - normal mode

This is what happens when I select Ctrl+t - I enter “tab mode” and I’m able to see what I can do in this context.

Choosing to do something in tab mode

I can now press n to actually create a new tab and the top of my Zellij window changes - new tab is created with new pane (see left); now I quickly rename the tab to be “example” by Ctrl+t followed by r (the tab indicates it expects input - see middle image); finally the tab is renamed (right image):

New tab creation and rename

what I like

  • menu/keybindings visible by default, very well designed
  • great documentation
  • possibilities: layouts, plugins, themes, configuration, own key bindings and actions, sessions(!)
  • configuration is written in KDL which I have no idea about and which seems like another rabbit hole to me

what I don’t like

  • this section is empty

yazi

yazi page

Here the explorability is rather limited - what you get is basically a ranger-like three-pane layout. In order to know what you can do, you need to first navigate to quick-start page which lists default keybindings. Studying this page for a while gives enough knowledge to start using yazi; to use it effectively you probably need to train your neural network so that most frequently used opertions are ingrained in your muscle memory.

how it looks like

This is yazi in zellij on alacritty browsing its own sourcecode:

yazi in zellij on alacritty browsing its own sourcecode

image preview

I didn’t figured it out yet.

Image Preview feature seems to be problematic:

  • there is no epxlicit support for image veiwing in allacrity and this scary Uberzeug might not work
  • Zellij users got a special note in a section about Uberzeug that Zellij only supoprts Sixel graphics format
  • to be honest, I tried (for 20 minutes perhaps) configure preview in ranger and I failed
  • I also tried using yazi in vscode console (which should work according to yazi compatibility table but ended up with frozen laptop (it could not handle VSCode anymore…)

Summary

It is too early to say how much I will enjoy using those tools. For sure, I’ll stay with alacritty for a few weeks/months and I’ll see. My requirement is that I don’t need to think about it.

I might want to try and use yazi as well - this will certainly take some more time: for the keyboard shortcust to sink in and for me to find out how to configure mime-time handing and executing/opening different type of contents in different programs. So, let the fun begin! 😄