Software

6 minute read

A majority of my favourite tools from Linux work well on Android.

Although this is all in relation to working on Android, the software I use is generally the same as if I was on a Linux desktop. That’s kind of the point, nowadays I can use almost the same environment on Android as I can on my desktop.

Termux

Termux is a brilliant free terminal app and Linux environment for Android. It has most of the Linux commands I need and I can install git, Vim, Tmux, mutt, ImageMagick and the majority of the terminal software I like to use. For certain jobs such as scripting, SSH sessions and writing, this is all I need.

Termux can run non-terminal, graphical apps too, but you won’t be able to see them. That’s what the next app is for.

Termux:X11

This amazingly useful app describes itself as being in early development, but I’ve been daily-driving it for months without significant issues.

Termux:X11 is an X Server for Termux. This allows you to install graphical Linux apps, as long as they are available for your system architecture (ie AArch64 — or ARM64 as it’s known — for most modern Android devices).

This means I can run, directly on my tablet:

  • Desktop Firefox (so, full developer tools)
  • Desktop Chromium (this was quite hard to get installed and isn’t the absolute latest version but is still very useful for development)
  • Krita/Inkscape/GIMP for image processing
  • Thunar file manager
  • Audacity (using PulseAudio over the network to pipe the audio up to Android by using the devices own IP address… I’m sure this creates some delay/latency but I’ve not noticed it in practice and for my typical usage of minor adjustments to audio files it works well)

PRoot Distro

This is a ‘container environment manager’ and allows you to easily install, uninstall, backup and restore Linux distributions, alongside/on-top-of Android, sharing the kernel.

It’s really simple to use, eg installing Debian Linux is a matter of opening Termux and entering:

proot-distro install debian

Then for a shell login:

proot-distro login debian

PRoot Distro provides a nice choice of distros including:

  • Alpine Linux (edge)
  • Arch Linux ARM
  • Artix Linux (AArch64 only)
  • Debian (stable)
  • Fedora 38 (AArch64 only)
  • Manjaro (AArch64 only)
  • OpenSUSE (Tumbleweed)
  • Pardus (yirmibir)
  • Ubuntu (23.10)
  • Void Linux

You can install as many distros as you want and swap between them easily. Each distro just sits in a directory on the Android device. Using the backup tools the entire system can be bundled up as a single archive file and moved over to another Android device.

Window Management

I believe that the best user interface (actually, interface of any kind) is one that I don’t even notice exists. It doesn’t shout at me, it doesn’t wow me with animations and eye-candy. It allows me to get to the tools I need to get the job done and stay immersed in the task. It is at peace with itself enough to take a back seat and not demand attention. It is, conceptually, transparent.

A lot of people like the gestural UI featured in ‘Minority Report’. I like the film, and the scene with Tom Cruise manipulating the UI is well produced and fun to watch. But as a UI it’s terrible! Hugely inefficient with all those big sweeping hand gestures, it’s not quick or practical. I don’t want to have to perform interpretive dance to use my computer (nor watch my computer doing little performances when I’m trying to get stuff done).

I found similar sentiment in this Daring Fireball article about the Apple Vision Pro:

“To me the Macintosh has always felt more like a place than a thing. Not a place I go physically, but a place my mind goes intellectually. When I’m working or playing and in the flow, it has always felt like MacOS is where I am. I’m in the Mac.

“Interruptions — say, the doorbell or my phone ringing — are momentarily disorienting when I’m in the flow on the Mac, because I’m pulled out of that world and into the physical one.”

I am nearly exactly like this too, except I don’t want to feel like I’m “in the Linux” (and definitely not “in the Mac” or “in Windows”!). I don’t want to be aware of that layer of abstraction at all. I don’t mind feeling that I’m “in Vim”, but really I want to be “in the code” that I’m editing. I specifically don’t want to feel the manicured claw of a corporate behemoth like Apple or Microsoft on my shoulder… but that’s just me.

I’d rather forget that my OS(/window manager) exists. It’s a facilitator, not an end in itself.

DWM: Tiling Window Manager

I used to prefer larger screens and multiple monitors. I knew about the concept of workspaces but they sounded annoying and fiddly. It took me a long time to give them a chance and it happened accidentally, as a side-effect of trying a tiling window manager.

Very briefly, a tiling window manager organises your windows into tiles, meaning instead of having oddly-sized overlapping windows floating around making a confusing mess of your screen and using space inefficiently, your screen splits into fractions, each being filled by an app. If you have too many apps on the screen they can go onto other screens, or ‘workspaces’. Personally I tend to run most apps fullscreen most of the time, switching between them with keyboard shortcuts.

I started with i3 Window Manager, which is a really nice piece of software. After a few years of using it though I realised I didn’t use most of its features, so landed on the very minimal Suckless Tools DWM.

With workspaces, each app can have its own screen and can be accessed instantly via a keyboard shortcut. With familiarity this becomes a chord in muscle memory, a hand-shape to mash at keyboard. I have habits for where I keep each app, so eg my terminal is in workspace 1 so [Alt]+[1] puts me in the terminal. [Alt]+[9] puts me in FireFox and so on.

I’ve [Alt]+[Tab]bed through apps in the past. Workspaces are similar except you know the keyboard chord will take you directly to the app you want, you don’t have to play ‘stop the magical app carousel at the right time’… which may be a drawback for some I guess, as carousels can be fun.

We can only focus on one thing at a time, that’s how attention works. I can see some uses for multiple screens eg if you have to monitor lots of things, like real-time charts or meters. In that case your peripheral vision is good at detecting change/motion so you can make use of all the space. But personally I’m completely over large/multiple displays. In my circumstances, they waste power, waste space, and are just not necessary.