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.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cli_progress-3.0.6.tar.gz | 23.4 kB | Without provenance | Details for cli_progress-3.0.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cli_progress-3.0.6-py3-none-any.whl | Python 3 | none | any | Details for cli_progress-3.0.6-py3-none-any.whl |
Total release size: 46.9 kB
Release files / cli_progress-3.0.6.tar.gz
| Download URL | cli_progress-3.0.6.tar.gz |
|---|---|
| Size | 23.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea71345032d264807b61a1ddcce2280d67201cf099cfca8b4e16631bab690efc
|
|
BLAKE2b-256 checksum How to use checksums |
e44383c6a215ee335c380b13947275b17d0536fef1756cc2a6991833cd48c5f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","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.6-py3-none-any.whl
| Download URL | cli_progress-3.0.6-py3-none-any.whl |
|---|---|
| Size | 23.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
21ad0232b2beeb534fa8df3c78a2bc76ff202b30f7466314048a9d0f37d04674
|
|
BLAKE2b-256 checksum How to use checksums |
f49bbcb9a77ee5deeb9ed6bf9f1da69237765ff3e841baa818eb107a299426ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for cli_progress 3.0.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.