cli_progress
Run a long command (an installer, an update) behind a calm full-screen progress window.
While it runs you see only your logo, the current step and a smooth progress bar, with the time it has taken and roughly how long is left. The output is one key away, and it is always written to the log file.
▓▓▓
▓▓▓▓▓
▓▓▓
▓▓▓▓▓ ▓▓▓▓▓
▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓
▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓
▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓
Hiddify Manager v14.0.0
Installing...
━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━━━━━━━━ 62.1%
⏱ 2m 10s ≈ 1m 20s left ⚠ 1
✓ MySQL 12s
✓ Hiddify Panel 48s
⠦ Xray 6s
Setting up xray-core (25.10.15) ...
L show log Q quit
Usage
python -m cli_progress --title "Hiddify Manager" --subtitle v14 \
--logo logo.ico --log /var/log/install.log -- ./install.sh --no-gui
| Option | |
|---|---|
--title, --subtitle |
shown under the logo |
--logo FILE |
a text file with the logo (block characters); a built-in one by default |
--log FILE |
the command's whole output (with its colors) goes there |
--regex |
the progress line; default ####<percent>####<title>####<step>#### |
--auto-exit SECONDS |
close this long after a success (default 5; 0 waits for a key) |
--no-counts |
hide the ⚠ warnings / ✗ errors counts next to the timer |
--plain |
no window: print the output and a line for each step |
The command reports progress by printing lines such as:
echo "####42####Installing...####Hiddify Panel####"
Those lines are not shown or logged as output; they move the bar and add a step.
Keys
| Running | Finished | |
|---|---|---|
L |
show the log | show the log |
Q, Esc, Ctrl+C |
ask before stopping (Ctrl+C twice stops) | close |
Enter |
close |
In the log (it opens under the logo and the progress bar, which stay on top): ↑ ↓ PgUp PgDn scroll (it holds still while you read), End follows new lines again, e / E jump
to the next / previous error or warning, Esc goes back.
What happens when
- Success: the logo turns green and the window closes after a few seconds (any key keeps it open).
- Failure: the logo turns red, the step that failed is marked, the last errors and warnings are shown, and the window stays until you close it. A short summary with the log's path is printed after it closes.
- Stop: the command gets SIGINT (to clean up), then SIGTERM, then SIGKILL. The exit code is 130.
- No usable terminal (a pipe, cron,
sshwithout-t,TERM=dumb): plain output, same log, same exit code. The command never runs twice.
The command runs in its own session with no stdin: the terminal's Ctrl+C reaches the window (which asks first), not the command.
Development
uv manages the environment, the dependencies (pyproject.toml, uv.lock) and the builds.
make install # uv sync: .venv with the dev tools
make test # flake8, black, mypy, then pytest with coverage
make build # uv build: the sdist and the wheel in dist/
make release # writes cli_progress/VERSION, tags and pushes; CI builds, checks the wheel runs, and publishes
Try it: uv run python -m cli_progress --title Demo -- ./test.sh
Metadata
Release files for cli_progress 3.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cli_progress-3.0.2.tar.gz | 21.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cli_progress-3.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.8 kB
Release files / cli_progress-3.0.2.tar.gz
| Download URL | cli_progress-3.0.2.tar.gz |
|---|---|
| Size | 21.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2ee05ac2aafbabc5af56f1725e8b33bcc18f237dd62d84cee75535f5e98073b6
|
|
BLAKE2b-256 checksum How to use checksums |
325746dccea119aa343b6e39c71215371482e94a18e0b0994b3012d24e44dc12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / cli_progress-3.0.2-py3-none-any.whl
| Download URL | cli_progress-3.0.2-py3-none-any.whl |
|---|---|
| Size | 22.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6ea27f56a3778258799d859283554dcc7ce4ed8ed2254002328ac96ab1beb598
|
|
BLAKE2b-256 checksum How to use checksums |
40e2470803e62cb7ad4296ca8a84a1d46987b42bbdab67146e8a2a6bd74fc47a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|