Skip to content

Terminal improvements - #39

Merged
SaicharanKandukuri merged 14 commits into
mainfrom
feat/improvements
Nov 8, 2026
Merged

SaicharanKandukuri merged 14 commits into
mainfrom
feat/improvements

Conversation

@SaicharanKandukuri

@SaicharanKandukuri SaicharanKandukuri commented Nov 6, 2026 •

Copy link
Copy Markdown
Member
  • Improves terminal tab shutdown and PRoot process-monitor compatibility.
  • Shows OSC terminal titles in tabs.
  • Adds searchable color, font, text, and cursor appearance settings with profile and font imports.
  • Expands terminal pinch zoom and text sizing from 4sp to 96sp.
  • Adds per-system System V IPC and memfd compatibility controls.
  • Loads optional global PRoot arguments from /storage/emulated/0/udroid-launch-flags.txt after managed options so advanced users can override defaults.
  • Exposes installed Linux filesystems as read-only Android document locations with distro icons and guest-safe symlink handling.

Terminal OSC roadmap

Implemented:

  • OSC 0/1/2 titles update terminal tabs.
  • Manual tab names override OSC titles, with Follow shell title to restore automatic updates.
  • Animated titles are coalesced without repeatedly writing app state.
  • OSC 4/10/11/12 and 104/110/111/112 colors and resets work with the selected appearance profile.
  • OSC 52 copies terminal data to the Android clipboard.
  • OSC 133 tracks prompt and command lifecycle for close warnings in Bash, Zsh, and Fish.
  • OSC 7 tracks the guest working directory and opens new tabs there when it remains accessible.
  • OSC 8 underlines hyperlinks and provides confirmed Open and Copy actions.

TODO:

Track close state per tab and expose graceful, forced, and failed shutdown phases to the terminal UI.

Disable tab interaction while shutdown is in progress, keep failed closes retryable, and label the final-tab action as stopping Linux.

Generated-by: LLM
Generate a complete synthetic CPU topology and boot time when Android blocks the host proc data.

Mount safe empty views for restricted network, storage, battery, filesystem, and swap metrics so htop and bpytop can remain operational.

Validated with testDebugUnitTest, lintDev, assembleDev, and device timeout probes for htop and bpytop.

Generated-by: LLM
Display shell and application OSC titles while preserving manual tab names as explicit overrides.

Add a Follow shell title action, sanitize untrusted title text, and coalesce animated title refreshes without persisting each frame.

Validated with testDebugUnitTest, lintDev, assembleDev, and the animated OSC title probe on Pixel.

Generated-by: LLM
Persist built-in and custom terminal palettes and apply them to active sessions, terminal chrome, and system bars.

Add a compact searchable profile picker with editing, Termux/Ghostty/iTerm2 import, Termux export, tests, user documentation, and palette attribution.
Separate terminal colors from font and text settings with live previews and searchable font selection.

Persist text size, line height, cursor style, and blink behavior in the live terminal. Bundle licensed monospace fonts and support validated multi-file TTF/OTF imports using embedded OpenType names.
Allow terminal text to scale from 4sp to 96sp through pinch gestures and appearance settings. Keep the slider in one-sp increments and cover lower-bound normalization.
Persist per-system toggles for PRoot's System V IPC and ashmem-backed memfd compatibility, and apply them to terminal, desktop, and application launches.

Expose both controls in Linux system details and retain them across filesystem resets.

Related to #34
Read udroid-launch-flags.txt from primary shared storage for each terminal, desktop, and Linux application launch. Append each non-empty, non-comment line after uDroid-managed PRoot options so users can override defaults without shell parsing. Document the file contract and cover parsing plus argument ordering across all launch paths.
Parse OSC 133 semantic prompt markers and propagate command activity through terminal session state so closing a busy tab requires confirmation.

Install shell-native lifecycle hooks for Bash, Zsh, and Fish in configured rootfses, refresh them on terminal launch, and document OSC compatibility.
Parse validated local OSC 7 reports and track the current directory per terminal tab. New tabs for the same Linux system start in that directory when it still resolves inside the rootfs or a configured bind mount, otherwise they fall back to the guest home.

Install Bash, Zsh, and Fish working-directory hooks and document the supported URI forms and fallback behavior.
Preserve bounded hyperlink metadata through terminal writes, copies, Unicode cells, scrollback, and reflow. Underline linked cells and require confirmation before opening supported web or mail links, while keeping a copy action for every URI.

Adapted from termux/termux-app#5390 by Matt Schwartz.
Register a read-only DocumentsProvider for installed root filesystems. Resolve Linux absolute and relative symlinks within the guest root, reject traversal, and label each source with its distro icon and a uDroid-specific description.
Record OSC 8 behavior and URI restrictions, and explain how installed Linux filesystems appear as read-only locations in Android's system picker.
Write guest configuration atomically without following symlinks, while allowing terminal launch to continue if integration refresh fails.

Keep Android Files roots synchronized with installed distro names, escape percent signs in OSC 7 paths, and preserve profile-name edits while changing colors.
@SaicharanKandukuri
SaicharanKandukuri marked this pull request as ready for review November 8, 2026 12:24
@SaicharanKandukuri
SaicharanKandukuri merged commit b1199a2 into main Nov 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant