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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#+TITLE: My Emacs on Android Setup
#+DATE: 2020-09-11T03:03:37Z
#+DRAFT: true
#+DESCRIPTION:
#+TAGS[]: emacs android tmux
#+KEYWORDS[]: emacs android tmux
#+SLUG:
#+SUMMARY:
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 operational
development and writing environment which has both a small 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, as it's nearly impossible to rebind keys on Android, and I need
the control key to be in the place of caps lock to be effective at
using Emacs.
It's also possible to connect a bluetooth mouse, then enabling
=xterm-mouse-mode=, 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.
#+BEGIN_SRC shell
pkg install emacs git
#+END_SRC
Since I host my Emacs on [[https://github.com/dantecatalfamo/emacs.d][GitHub]], getting things started here is
effortless. All I had to do was clone it onto my system, and open
Emacs, it even sets itself up for use thanks to =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.
#+BEGIN_SRC shell
pkg install hugo
#+END_SRC
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.
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.
#+BEGIN_SRC shell
pkg install clang gdb
#+END_SRC
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 [[https://rclone.org/webdav/][this]] guide from the =rclone=
website.
Both scripts are incredibly simple, consisting mainly of a single line each.
=nextcloud-pull.sh=
#+BEGIN_SRC shell
#!/bin/sh
echo
echo "############################"
echo "## PULLING FROM NEXTCLOUD ##"
echo "############################"
echo
rclone sync -i nextcloud:Org Org
#+END_SRC
=nextcloud-push.sh=
#+BEGIN_SRC shell
#!/bin/sh
echo
echo "##########################"
echo "## PUSHING TO NEXTCLOUD ##"
echo "##########################"
echo
rclone sync -i Org nextcloud:Org
#+END_SRC
There's even a spectacular third-party repository called [[https://github.com/its-pointless/its-pointless.github.io][its-pointless]],
which provides tools which aren't available in the main Termux
repo.
Perhaps most importantly from an Emacs perspective, they provice
=ecl=. Because to 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 [[https://raku.org/][Raku]], a language which I
really enjoy toying around with.
|