Not too long ago I purchased a Samsung Galaxy Tab A. I bought it mostly for browsing the internet and reading PDFs, but I've been using it a lot more for working in Emacs recently.
With the help of Termux, I've gotten more or less a fully functional development and writing environment which has both a small physical size, and long battery life. With the use of a bluetooth keyboard, I have everything required to work, and comfortably at that.
I use the HHKB Professional Hybrid, which I highly recommend for the task. It's nearly impossible to properly rebind keys on Android, and I need the control key to be in the place of caps lock to be effective at using Emacs.
In addition, I have a stand case for my tablet, so it is able to sit up in landscape mode by itself.
It's also possible to connect a bluetooth mouse, then to enable
xterm-mouse-mode
in Emacs, but I rarely find that necessary.
Thanks to the mostly frontend agnostic nature of Emacs, everything I would normally do on my desktop computer or laptop work almost identically when working from within Termux.
I actually often find it much easier to write on my tablet than I do on my computer, since the fullscreen nature of Termux tends to stop me from getting distracted by other things I'm working on in the background.
The first thing I had to do was install Emacs and git, which are as easy as running a single command.
pkg install emacs git
Since I host my Emacs configuration on GitHub, getting things started
here is effortless. All I had to do was clone it onto my system, and
open Emacs. It completely sets itself up courtesy of use-package
,
which installs all the required packages and dependencies without
requiring my intervention.
Because I host my blog's contents in a git repository as well, I'm
also able to clone that and work on it using the hugo
package.
pkg install hugo
I can even run the development server in a shell
buffer in Emacs and
check out how the post I'm writing looks in Firefox, all on the
tablet. In fact, this post itself was written entirely from my tablet!
From there I'm able to much of the same things as I do anywhere
else. For writing C, I installed clang
and gdb
, which are both
available from the default repo as well.
pkg install clang gdb
This setup works particularely well because of Emacs' excellent gdb
debugging interface. Thanks to not needing any sort of graphical
interface beyind Emacs, my ability to get things done is completely
unhindered. I'm a huge fan of gdb
mode, especially with (setq
gdb-many-windows t)
.
I'm also able to work on my org documents, which I store in a personal
Nextcloud instance, thanks to rclone
. I have two small scripts which
I've written so I'm able to sync the files before I start editing
them, and after I'm done.
Setting up rclone
to work with my nextcloud instance is incredibly
easy and only took me a minute using this guide from the rclone
website.
Both scripts are incredibly simple, consisting mainly of a single line each.
nextcloud-pull.sh
#!/bin/sh
echo
echo "############################"
echo "## PULLING FROM NEXTCLOUD ##"
echo "############################"
echo
rclone sync -i nextcloud:Org Org
nextcloud-push.sh
#!/bin/sh
echo
echo "##########################"
echo "## PUSHING TO NEXTCLOUD ##"
echo "##########################"
echo
rclone sync -i Org nextcloud:Org
There's even a spectacular third-party repository called its-pointless, which provides tools which aren't available in the main Termux repo.
Perhaps most importantly from an Emacs perspective, they provide
ecl
. Because of this, I'm able to have a full interactive Common
Lisp development environment on my tablet. There's something about
that I find really cool! Of course because of how ecl
works, the
first time I launched sly
it took a couple seconds while ecl
compiled everything.
Something which is important to note is that even though it's not
installed as a dependency by default, ecl
requires the
libatomic-ops-dev
package in order to function correctly.
They also provide an up to date version of Raku, a language which I really enjoy toying around with, along with Julia, octave, and R, among other things.
One shortcoming of running my large Emacs configuration on such a low
power device is that it can take a couple of seconds to start the
first time. Fortunately emacsclient
works perfectly in Termux, so
I'm able to simply launch the Emacs daemon in the background when I
fist launch it. I have an alias in my .bashrc
to do this
automatically.
alias em="emacsclient -c -t -a ''"
I just call em
instead of emacs
when I want to edit a document. It
will either open a new frame connected to an already running Emacs
daemon, or launch the daemon, and then connect once it's started.
I'm still working out the kinks in my setup, but I'm overall extremely pleased with how well it works.