Z2Term
Rootless Linux terminal with a GUI, SSH, automation and a Japanese IME.
com.zerotoship.z2term
About Z2Term
Z2Term is a terminal for Android that is also a way to drive Android.
It runs Alpine, Ubuntu, Arch and Kali without root, opens a Linux desktop in a tab, and lets the shell reach the phone itself: read a notification, ask you a question in the notification shade, or run a script when the battery, the network or an incoming SMS changes.
* Linux distributions without root: z2root is a ptrace-based userspace implementation written for this app and built from source. A real chroot is optionally available on rooted devices.
* Terminal emulator: VT100/xterm, 256-colour and true colour, alternate screen, East Asian Width (CJK / emoji) rendered as 2 cells, OSC 4/7/8/10/11/12/52
* 9 built-in themes plus a custom theme editor, and custom font loading
* 5,000-line scrollback (configurable 500-50,000) with search
* Multi-tab sessions with independent emulators, drag to reorder
* Linux GUI: Xvnc + openbox with an RFB client built into the app, with audio and video. "z2gui" starts a desktop, "z2run <app>" launches a GUI program. The same screen also connects to another machine over VNC or RDP.
* SSH client and SFTP built in (public-key auth, secrets encrypted by the Android Keystore), port forwarding in both directions that can outlive the tab, plus a built-in sshd that binds to localhost only by default
* Android bridge: around 40 "z2-*" helpers call host features from the shell (notifications, clipboard, battery, sensors, torch, intents, alarms, text-to-speech, and wireless adb to the device itself)
* It can ask you things: "z2-ask" puts a question in the notification shade and reads your reply into a shell variable
* Automation hub: "z2-when" runs scripts on device events (charging, battery level, time or cron, Wi-Fi, connectivity, boot, a share from another app, an incoming SMS, sensors, an arriving notification, a new file), narrowed by filters. Rules are plain text and survive reboots without opening the app.
* Resident servers: register any server as a start command and