Jeremy Wakeman

Jeremy Wakeman

Homepage, project information, and interests

23 Apr 24

Snal Linux 1.32 released

I've released the new version of Snal Linux. Version 1.32 is available at the project's Sourceforge page.

  • I merged the upstream changes from Archiso.
  • I updated the scripts from jwscripts.
  • I switched from using the yay package to yay-bin. Both are from AUR, but yay-bin is pre-compiled, so if I b0rk something on my build system, Snal might still have a working yay.
  • I added (back?) a custom /etc/issue that was somehow missing from previous versions.

Once again, little has changed with the configuration, so new software versions are the star of the show. This release has Linux Kernel 6.8.7 and Firefox 125.

I've really enjoyed getting more familiar with modern alternatives to standard utilities. As of the release of Snal 1.32, I'm using exa in place of ls, bat in place of cat, and neovim in place of vim. I've included those in Snal.

I'm using bash aliases for the new utilities to make switching between systems easier. I continue to type the normal command names and have aliases that resolve to the replacement utilities. That way, I won't get used to typing exa on my main machine and try to run it on an embedded system that has busybox ls and definitely doesn't have exa.

My goal with the aliases is to be able to type ls on either system and have it function usefully. On the embedded system, the alias resolves to /usr/bin/ls, which is a symlink to /usr/bin/busybox. On the desktop system, the alias resolves to /usr/bin/exa and includes information about git, if available. To achieve that goal, the aliases in my bashrc files have gotten a little more complex so that they use use exa if it's found by running which. Here's the relevant section:

use_exa=$(which exa 2>/dev/null || echo /dev/null)

if [[ -x $use_exa ]] ; then
    #echo "aliasing ls to $use_exa"
    $use_exa | grep git >/dev/null 2>&1
    test_exa_git=$?

    alias ls="$use_exa"
    alias la="$use_exa -a"
    alias lag="$use_exa -a | grep"
    alias lg="$use_exa | grep"
    if [[ $test_exa_git -eq 0 ]] ; then
        alias ll="$use_exa -l --git"
        alias lla="$use_exa -la --git"
        alias llag="$use_exa -la --git | grep "
        alias llg="$use_exa -l --git | grep "
    else
        alias ll="$use_exa -l"
        alias lla="$use_exa -la"
        alias llag="$use_exa -la | grep "
        alias llg="$use_exa -l | grep "
    fi
else
    alias ls="ls -hFp --color=auto "
    alias la="ls -hFpA --color=auto "
    alias lag="ls -hFpA | grep "
    alias lg="ls -hFp | grep "
    alias ll="ls -hFpl --color=auto "
    alias lla="ls -hFplA --color=auto "
    alias llag="ls -hFplA | grep "
    alias llg="ls -hFpl | grep "
fi

I have similar sections for bat and cat, as well as nvim and vim.

By the way, I'm not trash-talking busybox. It's a brilliant little tool that re-implements many common utilities in a single binary executable. I'm just using it as an example of a different type of Linux system. Embedded Linux systems often include busybox to save space and complexity. Desktop Linux systems might include exa because of the git feature or because it's written in a language that's designed to be memory safe.

If you don't happen to be familiar with busybox, check out their homepage here: https://www.busybox.net/. Among the commands it implements are awk, bzip2, cat, chmod, chown, chroot, cp, date, dd, ed, find, fsck, getty, httpd, install, ip, kill, less, ls, man, mkdir, mount, mv, nc, netstat, ping, rm, rmdir, sed, sort, tar, tee, telnet, tftp, tftpd, umount, vi, watch, wget, and xargs! Note: this is not a complete list; these are just the ones I happened to pick while glancing at the documentation. The full list is included in their documentation.

The new ISO is available via Sourceforge at the download page.

Check it out!