Skip to main content

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, ssh without -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)

Source distribution for cli_progress 3.0.2
File Size Uploaded
cli_progress-3.0.2.tar.gz 21.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cli_progress 3.0.2
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

3.0.4

2 release files

This release

3.0.2 This release

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.9.0

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page