A .sh script runner for anyone tired of hopping between folders and scripts. It scans your selected folder to build a centralized hub, opens a new terminal per script for easier project management and auto-detects Python environments.
Toolbar for easy configuration access:
- Project — Set project path | Refresh to rescan scripts
- Terminal — Set Git Bash path
- Venv — Venv activate path for scripts that interact with Python | Clear venv path to revert to auto-detect.
All of the above, plus per-script categories and favorites, are stored in config.json in the app directory.
Scripts are shown in a responsive card grid. Each card has:
- File name — Relative to project root.
- Favorite — Star to pin; favorites sort first.
- Category — None, backend, or frontend; default from folder name, editable per script.
- Env — Shown per script.
- Status — Idle, Running, or Stopped.
- Run — Opens the configured terminal with CWD = script’s folder.
- Kill — Stops only the process tree launched by the app for that script.
When a script is running, each card shows these live metrics (updated every second):
- PID — Process ID.
- CPU % — Current CPU usage.
- RAM (RSS) — Resident memory in use (MB).
- RAM % — Share of system RAM.
- Elapsed — Time since the script started.
- Peak memory — Maximum RSS reached (MB).
- CPU time — Total CPU time consumed.
- Threads — Number of threads.
- Search — Type in the search box to filter cards by folder or file name (live filter).
- Folder — Dropdown to show "All" or only scripts under a first-level folder (e.g. backend, frontend).
The app scans the selected folder recursively and lists every .sh file. Names are shown relative to the project (e.g. backend/run.sh, scripts/docker-up.sh). Scripts run with CWD = their own folder, not the project root.
Env is detected in the script’s folder: .venv, venv, or node_modules. For scripts in category backend, a configured venv path (see Configuration) overrides that.
Example layout (any structure works):
your-project/
├── backend/ # auto = backend; .venv/venv
├── frontend/ # auto = frontend; node_modules
├── api/ # category to None
└── scripts/ # category None
git clone https://github.com/leobrqz/ShScriptHub.git
cd ShScriptHubpip install -r requirements.txtpython src/main.pyLeonardo B.
- GitHub: leobrqz
- LinkedIn: leonardobri
Check out my other projects <3
