the fdroid build of emacs doesn't really work very well with my org-roam, so i use a termux build,,, well nix-on-droid+emacs-overlay... and it's fine, for capture and recall. but i'm not authoring a lot of text with it. a custom extra-keys in the termux config so that your common emacs keybindings are on screen in a tool bar can get you close to a point-and-click interface... but you don't really have a good "swipe" input or voice input to input text efficiently, it's a character interface, a TUI, which is actually not what you want on a phone, you want a word-based interface. so when i want to do org-mode right now, i pull a unihertz titan 2 out of my pocket. without a sim card, the titan battery lasts for about three days unless i fire up an nix devShell & lsp server on it.
calc-mode is my default android calculator tho.
tbh don't listen to me, though: i've been teaching myself 8vim[1] and building a markdown document graph database in my free time. don't listen to ~any emacs user's opinion with any authority, we all have found our own local minima, our opinions and advice usually aren't so useful to each other
I didn't know about modified-bar-mode, though, that's neat.
As a vim user, I suppose it’s proper to say “I don’t” :p
Also as a vim user, no one should listen to mine with any authority
—
Jokes aside, 8vim looks pretty slick! I don’t have an android to play around with at the moment but if I remember this I’ll check it out when I do.
Text input on phones for anything beyond prose seems to be a space ripe for innovation - although, as an iPhone user, the amount of anything technical I want to do from my phone approaches zero quickly.
if so - can you compare them?
(I use thumbkey, but when I ran across 8vim considered switching
however I use thumbkey fluently and am not sure if worth switching)
I sort of came here to say the same thing.
The intersection between (the set of people who care about good UX) and (the set of people who would try to use emacs on android) is the empty set. Emacs users' self-flagellation is pretty legendary, and I say this as an emacs user (though I've mostly given up on how janky and slow it is compared to modern editors and only use it for magit these days)
If you find your emacs to feel jank I highly recommend declaring "emacs bankruptcy" and starting anew with a fresh config. Defaults emacs ships with today are really good.
That said I haven't used emacs on Android yet so I don't know how well, if it all, it works. I also think the UX of emacs tends to bend toward the user's own preferences rather than good UX, and the default UX of emacs is a bit bad.
The more I used my apps, the more I wanted their UX optimised for mobile. This often means completely rethinking the Emacs experience when bringing to mobile.
This is most obvious in my latest app [1]. Org markup fully fades as implementation details. Of all my apps, this is the one I personally use the most. Proudly, I also started getting non-Emacs users interested in org [2].
Anyway, that’s all to say that as an Emacs fan, I want the full Emacs experience on desktop, but when on iPhone, I want fully optimised mobile UX. No meta anything there ;)
[1] https://xenodium.com/journelly-like-tweeting-but-for-your-ey...
[2] https://ellanew.com/ptpl/157-2025-05-19-journelly-is-org-for...
For me it is noticeably snappier than VSCode (which I am hassled by management to use for Copilot).
Ah, accessible. Word with a different meanings, and for me, in this sense, it's not helpful at all. Fortunately I managed to get Emacs talking with Speechd-el in Termux. Speechd-el is a poor man's Emacspeak. But it does seem to work. Well besides pressing SPC doesn't read the new text that scrolled onscreen, but if I have to, I can hook it.
Also, is there a preconfigured config for Android that can be downloaded so that you don't have to spend too much time in the Customize mode to get started? (I'm assuming, though the article didn't go into detail, that much of the reason for spending time in Customize would be to remap some of those shortcuts to be easier to type on a virtual keyboard, e.g. fewer modifiers).
(tool-bar-mode 1)
(scroll-bar-mode 1)
(modifier-bar-mode 1)
(menu-bar-set-tool-bar-position `bottom)
You can use a pretty standard config. You are likely not going to be writing pages of code and for prose there are better things on a phone than the keyboard. You can get pretty far though github searching Emacs lisp files with android in the text.
More interesting is dealing with androids permissions. The original article mentions this and I have some notes here. https://gsilvers.github.io/me/posts/20250921-emacs-on-androi...
(global-set-key (kbd "<volume-down>") 'fill-paragraph)
You can use the usual C-h k <key> to see what Emacs calls the key. (menu-bar-mode -1)
(setq inhibit-splash-screen t)
(setq inhibit-startup-echo-area-message t)
(global-set-key "å" 'hippie-expand)
(global-set-key "∆" 'toggle-truncate-lines)
(global-set-key (kbd "<f12>") 'toggle-truncate-lines)
(xterm-mouse-mode 1)
(global-set-key (kbd "<mouse-5>") 'scroll-up-command)
(global-set-key (kbd "<mouse-4>") 'scroll-down-command) ;
(global-set-key (kbd "<wheel-up>") 'scroll-up-command)
(global-set-key (kbd "<wheel-down>") 'scroll-down-command) ;
(setq case-fold-search t)
(setq-default truncate-lines t)
(setq sort-fold-case t)
(autoload 'scad-mode "scad-mode" "A major mode for editing OpenSCAD code." t)
(add-to-list 'auto-mode-alist '("\\.scad$" . scad-mode))
(require 'scad-preview)
(global-set-key (kbd "Å") 'dabbrev-expand)
(add-hook 'python-mode-hook 'whitespace-mode)
(setq whitespace-line-column 128)
(custom-set-faces
'(default ((t (:background "#000000" :foreground "#ffffff"))))
'(whitespace-space ((t (:background "black" :foreground "blue"))))
'(whitespace-tab ((t (:background "black" :foreground "blue"))))
'(whitespace-newline ((t (:background "black" :foreground "blue"))))
'(whitespace-empty ((t (:background "black" :foreground "grey50")))))Is there a good interface to (GUI?) openscad from termux?
There no gui, you use openscad to generate STL and view that in Android STL-viewer. You can automatize it so that it is almost like the real thing.
file_to_watch=$1
last_modified=$(stat -c %Y "$file_to_watch")
while true; do
current_modified=$(stat -c %Y "$file_to_watch")
if [ "$last_modified" != "$current_modified" ]; then
openscad $1 -o $1.stl
last_modified="$current_modified"
fi
sleep 1 # Check every second
doneThe only reason I want emacs on my phone is the one thing I don’t have: I want my org notes to be on both desktop and mobile. But syncing files across both has been dreadful, even in paid apps: duplicates everywhere and I constantly have to rechoose the files in a file finder UI. So my reminders are not just ever present for the time when they’re relevant, they’re just “not there” unless I take a lot of manual steps (if I’m lucky only) once a day.
My use case is I want the vim analog to some emacs tooling like org-mode, everywhere. I want open formats, I want vimwiki-style linking, I want taskwarrior integration, and I also want it to synch on all my devices.
There are some proprietary tools like NotePlan that use iCloud as backhaul (very well, actually), and it's open format, but it has an opinionated UX that isn't quite me, and I think I just want to stay in vim as much as possible that I can do what I want with. I suspect most people here interested in emacs would have a similar take on it.
If you're on iOS, and your laptop/desktop is macOS, you have a cloud drive that is (IMHO), better than Dropbox right there, baked in, so what would it look like to use that file system? Not awful actually. I've found device synch across that file system to be transparent and high quality, as long as I remember to save things regularly.
The problem for me when it comes to the mobile experience is that I think - no matter whether you're an emacs or vim user - you probably don't want that mode-based editing on your phone.
The best notes app on iOS is Apple Notes because it does a lot of things incredibly well for the context of writing notes one-handed while stood on a bus, or while sat in a coffee shop with a small touch-screen keyboard.
Where I'm at right now is I want to build something that can read and interact with my files on my phone, but is not mode-based - it just uses Apple text editing like Apple Notes, and saves everything in iCloud files (or Dropbox as a backup to get out of the apple ecosystem), and on my local machine I just get that live synched experience with the editor that makes sense.
So the format I'm mostly interested in (vimwiki), has formatting that would be understandable as styles in Apple Notes, so I'm trying to work out whether to a) write something to import/export to notes from vimwiki, or b) provide a vimwiki-aware editing tool with the ergonomics of Apple Notes for my phone. I suspect doing the same but for emacs and org-mode would do the job well for those who want that experience too.
1. Able to natively edit and view same file type on both devices, be it .md or .org or whatever you choose (there are more apps supporting .md, if you can stomach that)
2. Links must work on both devices! That alone means it's not trivial, even if you have a lightbulb moment and use .md files for access to more apps, together with one of Emacs' filetype-independent links like Hyperbole or Denote, because no .md app will support those links. Conversely in .org, not all apps even support Org-ID links... especially not making it easy to insert such a link.
3. App must have satisfactory editing facilities. I know at least one app that doesn't even let you indent/dedent list bullets...
4. If you use TODO tasks, the app needs to make it convenient to see them at a glance across all files. Many Org apps fail here and either basically assume you have like one "todo.org" file and need no hand-holding, or even if they list all TODOs, there's no way to sort or filter, or it only lets you see them but not toggle them to DONE!
5. If you use a wiki-style workflow such as org-roam, so that you have far too many small files to keep track of, the app needs to make it easy to browse. Many apps fail here, just showing you a file list on the assumption that you even know what your files are named or what's in them. Count your blessings if there's at least a good search facility.
6. Instant & reliable sync. Logseq Sync is too buggy (at least it was in 2023). Things like Syncthing just aren't good enough if you don't also host a server that is always on. If sync conflicts are frequent, I'll be so wary of editing that I stop altogether.
I've heard good things about https://apps.apple.com/gb/app/synctrain/id6553985316?platfor... for iOS, but I'm guessing it can't work constantly in the background like on Android?
I've just started playing with it, but so far it seems quite good.
I use iCloud sync and then on a macOS machine, I have code that commits it to VCS, so that it's durable.
A. Emacs and org mode on my laptop
B. Neovim to do development via SSH on my dedicated Hetzner box, because my laptop is too potato for dev
C. A bash script to push up any random notes I have up to the server
I have used sshfs, syncthing and unison in the past, but never quite got the workflow for either to click.
After about 13 years of trying I still am not as functional as most Dropbox users. I just can't stand Dropbox.
In the spirit of hopefully constrictive feedback:
A/B: Any reason not to do emacs or neovim everywhere? You can copy your dotfiles to the server if needed?
C: I wouldn't/don't use Dropbox either. If bash+scp works then great, but have you considered keeping your files in git? Still easy to sync over ssh from one machine to another, but natively handles things like sync conflicts.
Its almost more of an aesthetic choice really, its just that Emacs feels comfier to me on a local machine. You otherwise lose too much of that feeling of customizing everything to your own taste, which is to me the nicest part of Emacs. It's kind of what I imagine a well tuned Forth to feel like.
Neovim is great over SSH, and I kind of prefer it as an editor - but Org support is too compelling. I've tried Neovim Org configs but they just can't compete with the legacy of Emacs Org. Org roam is unbeatable even with the preponderance of wiki style knowledge base apps. Org publish is just too good, as well. I've played with Neorg, and I really like it as a project, but it does feel like it is about 20 years behind.
I use git a lot but it runs into the large binary problem. I know git-annex is supposed to be good, but I haven't used it much. Syncthing is good but a lot of UI. I like unison but it isn't super well suited to the 'background sync' workflow.
My laptop is also a modified chromebook with a 50 GB HDD. I could get a real computer and solve a lot of my sync issues tomorrow, but then what would I have to complain about?
I see people with surface pros running VB studio, drinking Folger's with no discernable side effects and they are probably happier and more productive than I am.
Point being I might try Emacs on android
Then I can access the incoming.org file and org-refile entries at will.
Usage is just 'note "note text"'. this is generally how I process notes in org - I collect things in an inbox and them I elaborate on them, then refile them into a fully fledged note or the appropriate context.
Its dead simple, but comfy for my workflows and solves the problem of "collecting notes from mobile" without trying to struggle session mobile Emacs or Org mode
I don't even use a third party software-keyboard, I just use termux's special key bar. To set it up, add the following to ~/.termux/termux.properties
extra-keys = [['TAB','CTRL','ALT','ESC','HOME','END','LEFT','UP','DOWN','RIGHT']]
This has been enough for using org mode in everyday life tasks, and I don't need to keep swapping keyboards.In .bashrc:
# Full brightness on entry
termux-brightness 255
# Auto-brightness based on light sensor on exit
LIGHT_VALUE=$(termux-sensor -s stk3a5x_als -n 1 | jq '.. | .values? | select(. != null) | .[0]')
if [ -n "$LIGHT_VALUE" ]; then
if (( $(echo "$LIGHT_VALUE > 1000" | bc -l) )); then
trap 'termux-brightness auto' exit
else
trap 'termux-brightness 50' exit
fi
fiI figure it is impossible, without a special keyboard installed and even then it gets cumbersome to quickly input something like C-x C-s for saving a file. I am not motivated enough, to come up with a whole different shortcut system, just for rare if ever Emacs on phone use.
There are several developer oriented keyboards. I found the Unexpected Keyboard quite good.
This is my Unexpected layout:
<?xml version="1.0" encoding="utf-8"?>
<keyboard bottom_row="false" name="Emacs-rev1" script="latin">
<row>
<key c="q" sw="1" nw="loc esc"/>
<key c="w" sw="2" nw="~" ne="\@"/>
<key c="e" sw="3" nw="!" ne="\#" se="loc €"/>
<key c="r" sw="4" ne="$"/>
<key c="t" sw="5" ne="%"/>
<key c="y" sw="6" ne="^"/>
<key c="u" sw="7" ne="&"/>
<key c="i" sw="8" ne="\*"/>
<key c="o" sw="9" ne="("/>
<key c="p" sw="0" ne=")"/>
</row>
<row>
<key shift="0.4" c="a" nw="loc tab" ne="`"/>
<key c="s" ne="loc §" sw="loc ß"/>
<key c="d"/>
<key c="f"/>
<key c="g" ne="-" sw="_"/>
<key c="h" ne="=" sw="+"/>
<key c="j" ne="}" nw="{"/>
<key c="k" nw="[" ne="]"/>
<key c="l" nw="|" ne="\\"/>
</row>
<row>
<key width="1.5" c="shift" ne="loc capslock"/>
<key c="z"/>
<key c="x" ne="loc †"/>
<key c="c" sw="<" ne="."/>
<key c="v" sw=">" ne=","/>
<key c="b" sw="\?" ne="/"/>
<key c="n" sw=":" ne=";"/>
<key c="m" ne=""" nw="'"/>
<key width="1.5" c="backspace" ne="delete"/>
</row>
<row height="0.95">
<key width="1.7" key0="ctrl" key1="loc switch_greekmath" key2="loc meta" key3="loc switch_clipboard" key4="switch_numeric"/>
<key width="1.7" key0="alt" key1="loc change_method" key2="fn" key3="switch_emoji" key4="config"/>
<key width="3.5" key0="space" key7="loc home" key8="loc end"/>
<key width="1.6" key0="loc compose" key7="up" key6="right" key5="left" key8="down" key1="loc page_up" key3="loc page_down"/>
<key width="1.5" key0="enter" key1="loc voice_typing" key2="action"/>
</row>
</keyboard>It seems to me to be the best possible configuration for Emacs on Android (on a phone) and I was wondering if I should invest time in such a solution.
strokes-mode.el would also be very nice, but apparently it doesn't have touchscreen support.
There's a saying in my language, "the appetite grows while you eat"...
i was really hoping that with the display port over usb-c out that appeared in pixel 9 that there would be a useful desktop that could potentially support laptop replacement, but it seems all the desktop mode, termux and termux with x over vnc (or whatever it is) seem not quite mature. could be cool though, although, maybe better if there were a wireless link for the display and a way to have it not interfere with the phone being a phone.
https://sourceforge.net/projects/android-ports-for-gnu-emacs...
There is a catch though, you need to download and install Termux & Emacs from this project as per the instructions. It took me a while to get it working, but after that it worked like a charm.
If you do want Termux, a signed and compatible version is provided by the Emacs devs. It should all be in the README (at least it always has been, through various updates, since I started using the Emacs on Android before it was merged into the main branch).
The Unexpected Keyboard is a great addition, but even with the stock Android keyboard, it's totally usable. Of course, it helps to add things to menus and remap the volume keys.
You can add buttons to the toolbar with something like:
(tool-bar-add-item "spell"
'eval-last-sexp
'eval-last-sexp
:help "Eval last sexp")
(tool-bar-add-item "back-arrow"
'xref-pop-marker-stack
'xref-pop-marker-stack
:help "Previous Definition")
(tool-bar-add-item "fwd-arrow"
'xref-find-definitions
'xref-find-definitions
:help "Find Definitions")
There are many icons bundled with Emacs that you can reuse: https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/etc/im...You can remove toolbar buttons:
(tool-bar-add-item-from-menu 'find-file "")
Otherwise, you can add to menus: (define-key global-map
[menu-bar edit expand]
'("Expand word" . dabbrev-expand))
Remapping the volume keys is super handy, especially when you change the behavior by mode or buffer: (global-set-key (kbd "<volume-down>") 'fill-paragraph)
(global-set-key (kbd "<volume-up>") 'my-runner)
(defun my-runner ()
(interactive)
(cond ((equal major-mode 'org-mode)
(call-interactively (local-key-binding (kbd "C-c C-c"))))
((equal major-mode 'emacs-lisp-mode)
(save-buffer)
(call-interactively 'eval-defun))
((string= (my-get-file-name)
"/data/data/org.gnu.emacs/files/.emacs.d/my_python_file.py")
(save-buffer)
(with-current-buffer (shell "*shell*")
(my-send-string
"python /data/data/org.gnu.emacs/files/.emacs.d/my_python_file.py"
t
"*shell*")
))
(t
(message "Undefined action"))
))
Redefining the fill column is handy to set appropriate text wrapping:C-x f runs the command set-fill-column
Otherwise, the menu for Lime Wrapping in this buffer is super helpful.
I set my init to load up Dired so that I'm met with my project directory and am ready to go.
It's hard for me to think of another editor having my back like Emacs has. Again, amazing work by the community!
I think you're kind of right. I was surprised that that's two clicks away from the front page, under docs. That's where I'd look but it probably should have a nice visible link that's the first thing you see. There is a picture of the program running on an android device and a QR code.
Perfectly adequate for people who know how it all works or people who look for software install instructions on the regular, but not the best first contact for people who don't.
Edit: Actually, even the instructions page doesn't tell you to download and run the package on the device's browser. A user visiting on a laptop or something will just have a weird useless file in the downloads dir (unless they go the adb route or otherwise figure out it needs to go on the device first).
Pretty good for Emacs*
Long live VI.
Today's SOCs are much more powerful.