Skip to content

Latest commit

 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JetTUI

A portable Textual TUI toolkit for Java / Spring Boot developers.

中文


What is JetTUI

JetTUI is a single-window terminal dashboard that bundles the four things Java/Spring Boot developers do every day:

  1. Start/stop services — launch Spring Boot *Application.java main classes with JDWP debug enabled, each service gets its own log tab.
  2. Build & installmvn install the whole project or any single module incrementally, with live Maven log streaming.
  3. Package — scan deployable modules, multi-select, run mvn package and report the produced jlcloud-*.jar artifacts (deployment is out of scope).
  4. JDK / Maven switch — press F4, enter the JDK/Maven home directory, click Activate to switch versions instantly. The change takes effect in the current process and is persisted to user environment variables (JAVA_HOME, MAVEN_HOME, PATH) so new terminals keep the selection (Windows only).

Drop tool_tui/ and run_fast_tui.py into any Maven multi-module project and it just works — no config file, no hardcoded paths.

Why JetTUI

AI-assisted development is everywhere now. Anyone can be a full-stack engineer with the help of LLMs — but do we still need to install a pile of heavy IDEs and tooling just to write code?

JetTUI's original intention: uninstall IntelliJ IDEA, keep just VS Code (or any plain editor you like) plus this tiny TUI, and return to a native, lightweight workflow. Build, run, debug Spring Boot services — all from the terminal, no heavyweight IDE required. It turns out, the simple way works just fine.

Features

  • Lightweight — replace IDEA with VSCode + JetTUI; memory drops from 2-4GB to a few hundred MB.
  • Zero config — no config file; auto-detects all Maven multi-module projects under the directory. Copy and run.
  • Mouse-friendly TUI — every action is a click; the keyboard is only an accelerator.
  • Env switch — type the path, one-click activate; switch JDK / Maven freely, auto-written to env vars, permanent.
  • Log-friendly — start/build/package all stream logs; each launch writes {svc}_{timestamp}.log for AI to read and fix bugs.
  • Debug-ready — JDWP suspend=n always on; pair any editor (VSCode/Vim/JetBrains) with JetTUI to debug Spring Boot.

Requirements

Component Version
Python 3.10+
textual >= 8.2
rich >= 15.0
Maven on PATH (mvn / mvn.cmd)
JDK JAVA_HOME set, or java on PATH

Install Python deps:

pip install textual rich

Quick Start

# from the root of any Maven multi-module project
python run_fast_tui.py
# or
python -m tool_tui

Tab layout:

Tab Hotkey Purpose
Service Manager F1 start/stop Spring Boot services with JDWP debug
Cache Manager F2 mvn install globally or for a single module
Build Manager F3 mvn package selected modules (no deploy)
Environment Switch F4 switch JDK / Maven versions (Windows only)

Interaction

JetTUI is a TUI — every action is reachable by mouse click: click tabs to switch, click list items to select, click buttons to start/stop/build/package. Keyboard shortcuts exist as accelerators, not requirements.

Key Action
F1 / F2 / F3 / F4 switch tab (or click the tab)
Enter confirm the highlighted item
q quit

Project Layout

your-maven-project/
├── pom.xml                       ← project root (auto-detected)
├── run_fast_tui.py               ← thin entry shell
└── tool_tui/
    ├── __init__.py
    ├── __main__.py               ← `python -m tool_tui` entry
    ├── app.py                    ← ToolApp shell (TabbedContent)
    ├── common.py                 ← path detection, mvn/java lookup, classpath
    ├── service_manager.py        ← F1 Service Manager container
    ├── cache_manager.py          ← F2 Cache Manager container
    ├── build_manager.py          ← F3 Build Manager container
    └── env_manager.py            ← F4 JDK/Maven Environment Switch (Windows only)

Runtime artifacts (auto-created, safe to delete):

log/                               ← per-service & per-build logs
├── cp_{svc}.txt                   ← cached dependency classpath
├── {svc}_{timestamp}.log          ← service stdout
└── build_{tag}_{timestamp}.log    ← maven build stdout
debug_ports.json                   ← allocated JDWP ports

How It Works

Dynamic project root detection (common.py): The anchor is the directory that contains tool_tui/. From there JetTUI walks up/down to find the nearest pom.xml, preferring aggregator poms (with <modules>). This is why the same bundle works in any Maven project layout.

Async scanning (every manager): The __init__ of each Container only initializes empty data structures, so instantiation takes <1 ms. on_mount then fires a @work(thread=True) worker that runs the actual scan (rglob, os.walk, pom parsing) off the UI thread. When the worker finishes it calls self.app.call_from_thread(self._on_scanned, data) to marshal the result back to the UI thread, which then populates the ListView. The first paint is therefore instant and shows a scanning... please wait message in the log panel.

License

Provided as-is for internal developer tooling.

Contact

  • WeChat: GengMS_DEV
  • Welcome to follow the WeChat Official Account: 极客悟道

About

A portable Textual TUI toolkit for Java / Spring Boot developers. for native java and maven

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages