How apt renders its fancy progress bar?

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • rich

    Rich is a Python library for rich text and beautiful formatting in the terminal.

  • For building rich terminal UIs in Python, I recommend Rich the library

    https://github.com/willmcgugan/rich

  • scallion

    GPU-based Onion Hash generator

  • Nitpick about the website, but please don't use PGP short fingerprints like 0x46EBCD72F08E6717. They can be brute forced [0] very fast to get a different private key with the same fingerprint. You can also use them to generate keys with vanity fingerprints, which is pretty funny [1].

    [0] https://github.com/lachesis/scallion

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • textual

    The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.

  • smooth-progress

    pixel-by-pixel node progress bar

  • They use this package under the hood: https://github.com/jdxcode/smooth-progress

  • bubbletea

    A powerful little TUI framework 🏗

  • tqdm

    :zap: A Fast, Extensible Progress Bar for Python and CLI

  • libmish

    Libmish adds a command prompt to your program, and telnet access. With your own commands.

  • I use a similar approach in libmish [0], ie I "reserve" the bottom 2 rows, and output the scrolling text in the top parts. Pretty straightforward.

    [0]: https://github.com/buserror/libmish

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • npm

  • npm was about 6 years old and im pretty sure a lot of corporates have adopted node by then.

    I don't think it has so much to do with quality but rather we like to re-invent shiny "new" wheels and then the new tooling must iron out all the corner cases.

    https://github.com/npm/npm/issues/11283

  • runSAS

    This shell script tool allows you to run a SAS program or a batch of SAS programs via Bash environment with various interactive and non-interactive execution modes. This is ideal for a SAS environment which is restrictive by design and you need a batch execution script/tool especially when you have a batch of SAS Data Integration Studio (DI) jobs.

  • I implemented something like this in pure bash. I called this status bar sort of implementation as "message bar" to show ongoing progress when script is running on the bottom of the screen using just bash...

    This message bar would also become a prompt and take in user inputs on certain events apart from being a static status bar

    Cursor positions, scrolling screens, event handling, progress bar, resolution changes, user inputs...everything had to be catered for in this - I remember thoroughly enjoying developing this.

    https://github.com/PrajwalSD/runSAS

  • compradprog

    Composite Radial Progress Demo

  • To take things in a more constructive direction, that said, it is an area I've experimented with/tried to solve.

    My big idea was radial progress indicators to try a different "best of both worlds" approach to progress spinners versus progress bars especially for "composite" progress indication where you have an unknown number of subtasks all running at their own speeds and can be discovered/initiated independently (such as downloading files). People are worse at estimating percentages of circles than lines, which I see as something of a benefit (because the exact progress percentage should be fuzzy).

    It's still not great at giving an indication of overall speed/estimated time, but it's potentially very great at "the application hasn't crashed and is busy".

    It was fun to experiment with/prototype, but I don't expect it to replace progress bars any time soon. (I think it should, but it's trade-off space where every option has drawbacks and while it fits closer to what I think is my personal "ideal", it probably won't make everyone happy either.)

    Demo: http://worldmaker.net/compradprog/

    Source: https://github.com/WorldMaker/compradprog/

    Blog post on intentions/thought process: http://blog.worldmaker.net/2015/03/17/compradprog/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts