There is a read only demo here https://a.ocv.me/pub/demo/
I have a Bluetooth keyboard case for my Android tablet. All the time, I use Termux to ssh into my Linux machine over my home network and code on it in Neovim from my couch.
I don't bother with the default notes app on my phone. Termux + Neovim running vimwiki and syncing to a private GitHub repo is way better.
Most stuff you want at the CLI is in the Termux package repository. On the occasions when it isn't, you can install clang, make, cmake, ninja, whatever libraries you need, and build it from source. At that point most stuff just works.
Termux is incredible and single-handedly keeps me running Android.
But this is one of the things I really would love to have on my iPhone that I’m jealous of the Android ecosystem for. I know there are alternatives for iOS and I’ve used them (no need to list them here, this thread isn’t about iOS). For me, a really good terminal/CLI with good integration with the OS would be killer. But I know I’m niche and unlikely to see such a thing outside of SSHing to a remote VM.
https://social-cdn.vivaldi.net/system/media_attachments/file...
Does it? I've looked at it only briefly (like enabled it, waited a while for it to download something big, then got a basic shell) but it seemed much less capable than Termux. Can you get cell tower info or copy to clipboard for example, or use other Android APIs?
Edit: looked into it a bit more, /etc/issue says it's a Debian 13 (latest stable), apt works with sudo (this is a locked-down device where I don't have root permission on, why does it need a fake sudo to use apt?) but of course programs like wavemon are useless because Android doesn't let you access the WiFi interface. There's no settings besides port forwarding and resetting the "partition". I don't see any documentation or info on how/whether you can interface with the rest of the system in any way. Looking on the web for Android terminal or "Linux developer environment" (as the system settings calls it) is predictably useless and only results in Google's unrelated Android SDK or other terminal emulator apps
Edit 2: okay, beware of it: I was curious if the same "you can't make the OS not kill your script" problem also happened in this OS terminal and.. it's worse. So I ran `while true; do date >> latest.txt; sleep 10; done` to see how long it'd stay alive and then did some other tasks like turning the screen off and on, opening a navigation app and zooming into a dense city, and loading a few websites. Locked the screen once more for good measure and then unlocked and opened the terminal. Guess what? It's broken. Not just crashed: I simply cannot start it anymore. The only "error handling" (Fehlerbehebung it says) step it offers is to delete all data and start with a clean system. The stack trace says there's a nullpointer in TerminalWebViewClient, with the next line being in Trichrome. It's a web browser apparently
It's a VM running normal Debian. Inside the VM, you do have root, and that sudo isn't fake.
It is very unreliable though. I hope Android 17 improves it, as other than the restart issues, I've generally found it to be very functional.
My android phone is a Pixel 8 and that sounds cool :-)
The main one I use with my Android tablet specifically is a no-name brand, knock-off "magic keyboard"-style folio case that I got on AliExpress for like, 45 USD. I ordered the English layout, I received the Spanish one (which is mostly the same but had additional legends for Spanish characters). Le sigh. It's AliExpress, I didn't bother contacting support.
For my phone, I have a really old Zagg one that was originally for an iPad. The iPad has long since died but the keyboard lives on. Woo!
The main keyboard I type on all day at my desk is a Logitech Pebble K380s. It can store three different connection profiles, which can be either Bluetooth or Logi unified receiver. So I have one of those profiles set to connect to my Pixel 8 via Bluetooth (typing from that now). Makes toggling back and forth between that and my desktop very smooth.
On a "real keyboard" (like this K380s) there's a dedicated Esc key. Most tablet folio cases don't have Esc. I found an app called "External Keyboard Helper Pro" that lets me rebind Caps Lock to Esc. That makes Neovim much more pleasant.
So I have a python script in the NAS that calculates the MD5 checksum of every photo and video, and generates a shell script that, when executed on the phone, will calculate the MD5 on the local device, and delete if it is equal to the NAS.
The generated shell script gets sent to the phone, then I execute it from within a Termux window, pointing at the DCIM folder.
I can free up tens of GB of memories with reliability in the face of a misbehaving sync algorithm.
[1] https://help.nextcloud.com/t/auto-upload-is-skipping-random-...
And having tools like exiftool, ffmpeg, and ImageMagick among others available in Termux is wonderful.
I have deep trust issues with commands that work on more than one file at a time.
If you install Termux widgets, you can directly start the script from your Android launcher's Home screen.
What I like about my process is that there is only one source script (the python one) to keep around.
Typing on a phone sucks, but at least modal modes (vim) and unexpected keyboard[1] makes it somewhat tolerable.
The on demand nature of it is a major selling point to me. When I open Termux and run SSH it's up, if I shut down Termux, SSH goes away with it. That and I can use rsync which is a tool I've been using for syncing files for a long time.
There's no need to run always-on tools like LocalSend or SyncThing, at least not for my use case. I have a little "sync" shell script on my desktop I can run to easily sync files "desktop TO phone" or "phone TO desktop".
Out of curiosity, is there an equivalent on ios with that level of support?
a-Shell should be faster than iSH for local stuff since the tools are compiled natively, but nothing on iOS, as far as I know, compares to Termux on Android.
Edit: well, it's also very slow unfortunately. I believe iPhone CPUs either don't support virtualisation or they don't expose it (edit #2: it's the latter). Either way, QEMU is struggling quite a bit, and due to it being a GUI it's even slower than what iSH could do
I just hope against hope that Google doesn't limit its functionality further and point us towards the new terminal app in the name of security.
When Android was new, I very frequently used Termux and ConnectBot with my first few Motorola Droid phones. For a brief moment, I had a working phone with a great physical design only held back by an outdated chipset and being locked to Planet Computers' abandonware. I could touch-type at 80 WPM on an easily pocketable device! Termux shone there.
So many things about Android were not just more exciting in terms of potential when it was new, but actively better: wider variety of hardware, widely unlocked bootloaders, no remote attestation, etc. Termux sadly feels like a painful reminder of that to me.
https://www.androidauthority.com/unihertz-titan-2-elite-qwer...
https://www.engadget.com/mobile/smartphones/clicks-is-bringi...
I keep reading on https://www.reddit.com/r/androidterminal/ about user experiences with it and it seems pretty great.
The Android Terminal app is just a view to a full VM. If you want a more traditional Linux system on your phone alongside Android instead of a Terminal in Android, essentially having a second system just conveniently running on the hardware of your phone, then that's for you. However it does also use more storage.
I searched "Linux" in the settings and it found this experimental "Run Linux Terminal on Android" toggle... Which doesn't work. Tapping it won't turn it on. Oh well.
Also you can build some CLI or TUI using Go and compile using Android NDK and run it on Termux.
Right now I'm on an S24 Ultra, before that a Note 10 Lite, and before that another Note 10 Lite.
I would learn it on the bus, and at the time I didn't have a data plan, so I could only access things I had already downloaded. The `:help` documentation is very thorough.
Then you can attach a Bluetooth keyboard. And you can import scripts (Perl, Python, Shell, ...) via ssh from other devices. Last but not least, you can start an ssh server on the device and use Termux from your desktop or laptop. And you can start a web server, to access your device's media files, etc.
https://play.google.com/store/apps/details?id=de.software_la...
Either that or I connect a wireless physical keyboard.
Edit: The killer feature of Penti is that it is transparent and allows you to put the 'buttons' where it is convenient to place the fingertips. Unlike regular software keyboards which hide half the screen and have 'buttons' that are pretty much thumbs-only. Since I code a lot I'm not particularly keen on mainstream next-word-guessing either.
Yes, I know Termux-X11 exists but that app is a single Android window (again, I'm not sure if that's the right term) for all X windows. I'm wondering if there's an app that creates an Android window for each X window.
I highly recommend using Unexpected Keyboard along with termux (a recommendation I myself almost certainly got from HN).
Beware of one thing, though... if you upgrade Termux, or remove/reinstall, you lose everything inside that "linux" system. I lost my first VAX setup that way. 8(
That's what I get for sticking with 32 bit ARM chromebook. Lightning fast. Great battery. Old OS.
For a couple of weeks I'd automated myself out of on-call by hooking that to an automation that fired every time I got paged. I wasn't brave enough to keep it going in the long term, but it was the best two weeks of sleep I had at that place.
So almost everything is text (with markup/markdown) and can thus easily be synced and merged between devices via rsync, ssh and perl or shell scripts.
Example: when I want to look up notes in either markor's or diary's files, that's easily accomplished with a shell script, e.g.
cd ~/storage/shared/Documents/markor
if [[ $# == 0 ]] ; then
exec zsh
else
grep -i "$@" **/*(.) | less
fi
Instead of grep I could even use agrep to handle typos. I can start a simple web server on the phone or tablet, if needed: python -m http.server $PORT --bind 0.0.0.0
and view media files from another device (mobile, desktop, laptop, … whatever.And there's exiftool, ffmpeg, ImageMagick, scripting languages, all in reach, wherever I go.
For anyone who already is familiar with a linux terminal, termux is a great way to use a lot of the open-source tools you're already familiar with instead of trying to find a dozen different apps instead (that all probably show ads, spy on you, or require a subscription). There are also several apps that use it as a necessary backbone for their functionality, and require it to be installed.
- Using vim/neovim is way better than I'd expect on a phone keyboard, because you can move around faster with less keypresses.
- My terminal sessions are wrapped in tmux, so switching between devices is seamless (tmux panes resize without any problems to match your device dimensions/aspect ratio as soon as you interact with the terminal - nothing ever breaks). You can do the pinch gesture to change the text size, depending on what you need to see at the moment.
- Both devices are using tailscale, so all I need is cellular data connection. For low quality network coverage I use mosh, which makes the session truly unkillable and makes sure it will recover when the connection comes back, albeit I ran into some annoying limitations with text scrollback.
With the recent development of agents, it becomes even more effective, since I can just open up claude session, type the prompt and have the agent do the heavy-lifting (mostly writing large chunks of code). This greatly compresses the amount of text you'd have to type and makes phone-only coding more viable than ever.
Not to single you out but I worry about this trend. As things stand, free (FLOSS) privacy-respecting computing remains all but impossible on the mobile platform. If now Termux is encouraging even geeks to abandon the desktop, that seems like a net negative.
I take notes, do programming, remote into computers, investigate networks, download and play back music/podcasts/web radio, surf the web with w3m, run background services, pretty much anything I'd use a terminal emulator for on a laptop computer.
Eventually I expect more people to move off Discord and the like so I can easily have them in terminal chat software instead.
The colors/graphics seem to be better on irssi and can also handle all the emacs and gnu screen keyboard chords and escape sequences.
I try every android terminal but nobody is really thinking about running more than simple commands.
I've got a wireguard setup from phone or tablet to my workstation. Using mosh with zellij and I can do all the development I want. Whether it is restarting a machine, or actually writing code, using claude code etc. It works really well
Tailscale works with "--tun=userspace-networking" [1].
I had it running on an old phone as a Frigate server with a solar powerbank in remote area, using the 4G as a failover. The uptime is almost a week without solar. Attiny hooked to the power button and a photodiode on the phone flash [2] (blink per minute) used as a watchdog for shutdowns/hangs to hardware reset. The button cap is removed without disassembling the phone.
Old phones are still more efficient than most off the shelf SBCs, especially under load. ~3W compared to 12W with a Pi5 in the same performance ballpark.
[0]: https://github.com/George-Seven/Termux-Udocker https://github.com/indigo-dc/udocker
I don't know why I never tried this in the past! SSHing my machine and vice-versa!
Just figured out that I could use my computer's terminal to send to my android's clipboard via SSH.
Pair it with Tailscale and we have a beast!
A year ago I used it to solve Advent of Code problems on my phone during my work commute. It was lovely. I have also used it to get access to a resampling calculator and a mental logarithm trainer on my phone.
https://sourceforge.net/projects/android-ports-for-gnu-emacs...
https://mstempl.netlify.app/post/emacs-on-android/ https://kristofferbalintona.me/posts/202505291438/
(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")))))Kinda difficult to explain. But Copilot says:
Provide a single-line weather summary (temperature, wind direction name + degrees, wind speed, symbol text) for use elsewhere (repo name suggests it’s for a clock/display).
Inside or outside of Termux, it allows you to interact with your android device in general from the comfort of your main computer/laptop over ADB.
It becomes a super multiplier for Termux when I don't want to deal with the hassle of connecting a separate keyboard to my android phone/tablet.
(A heads up, I have to use the `--render-driver=software` switch in order for scrcpy to work at all on my laptop.)
My banking app works for logging in to check account balances, even despite having a rooted device. Though, I have not set up any kind of payment methods, Android Pay, etc.
As an example - I used it to do Rustlings every day I commute on a subway. NYC subways don't have mobile network coverage, so I can't just SSH there into a remote machine.
Termux is currently grandfathered in because it's still built against the last API version not to have these restrictions (28?). But it's only a matter of time before that version starts throwing "This app was built for an old version of Android and may not work properly on new devices" errors and then, stop working altogether...
That said, it has to be compiled for older Android SDK level because newer levels prevent apps to run executables they downloaded on their own and not bundle with the APK, even isolated. Android may disable compatibility with the older SDK some day but for now it works.
That all said, I've heard news about Android getting degraded by Google to be more like Apple. Hope its rumors, but at least I had a good decade+.