Gooey: Turn almost any Python command line program into a full GUI application

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

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • Gooey

    Turn (almost) any Python command line program into a full GUI application with one line

  • Hey! Cool project! I have a question: why do you dump out sys.argv to a local file in the CWD? [0] tmp.txt is hardly a unique name… or am I missing something and this never triggers?

    [0] https://github.com/chriskiehl/Gooey/blob/be4b11b8f27f500e732...

  • python-uime

  • Wow, what a nice coincidence to see this on HN! Just two days ago, I was hacking up a similar project. https://github.com/livetheoogway/python-uime

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • quick

    A real QUICK Qt5 based gUI generator for ClicK (by szsdk)

  • Which is arguably a good reason Click should look for an alternative basis (though, OTOH, the reasons Click remains on optparse are, arguably, a reason that optparse, while it perhaps should not be further developed but for bug fixes, should not be considered deprecated), but in fact a lot of Python command-line programs depend on Click, so something that only works on argparse-based programs does not, in fact, support "almost any Python command line program".

    Interestingly, there is a gooey-inspired GUI generator for Click-based programs: https://github.com/szsdk/quick

  • docopt

    This project is no longer maintained. Please see https://github.com/jazzband/docopt-ng

  • http://docopt.org/

    Not quite what you asked for, but close: type example invocations to generate the CLI, and just pull the arguments from a dictionary at runtime.

  • camply

    camply, the campsite finder ⛺️ - a tool to find campsites at sold out campgrounds through sites like recreation.gov

  • Adding Textual support to camply [1] was apparently very easy. I didn't to the implementation; I just contribute to the project sometimes: https://juftin.com/camply/command_line_usage/#tui

    [1] https://juftin.com/camply/

  • ffmprovisr

    Repository of useful FFmpeg commands for archivists!

  • The Handbrake suggestion is a good one if your only interest is transcoding ... which barely scratches the breadth of what ffmpeg as a tool can do.

    Try: https://amiaopensource.github.io/ffmprovisr/

    for a 'better' ffmpeg CLI documentation, your mileage may vary, it's task and example focused.

    Try: https://github.com/topics/ffmpeg-gui

    for 66 variations on a GUI for ffmpeg of which I have no comment, I'm an old school CLI user through and through.

  • klask

    Automatically create GUI applications from clap3 apps

  • There are also similar applications for usage with clap-rs.[1][2]

    [1]: https://github.com/MichalGniadek/klask

    [2]: https://github.com/grantshandy/claui

  • 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
  • claui

    A GUI generator for clap-rs using egui

  • There are also similar applications for usage with clap-rs.[1][2]

    [1]: https://github.com/MichalGniadek/klask

    [2]: https://github.com/grantshandy/claui

  • jc

    CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.

  • > I'd love to see programs communicate through a typed JSON/proto format that shed enough details to make this more independent, and get useful shell command structuring/completion or full blown GUIs from simply introspecting the expected input and output types.

    You should try PowerShell. It's basically Microsoft's .NET ecosystem molded into an interactive command line. I'm not entirely sure if PoweShell can make full use of the static types that build up its core, but its ability to exchange objects in the command line is almost unmatched.

    On Linux you can use `jc` (https://github.com/kellyjonbrazil/jc) combined with `jq` (https://jqlang.github.io/jq/) to glue together command lines.

  • jq

    Command-line JSON processor

  • > I'd love to see programs communicate through a typed JSON/proto format that shed enough details to make this more independent, and get useful shell command structuring/completion or full blown GUIs from simply introspecting the expected input and output types.

    You should try PowerShell. It's basically Microsoft's .NET ecosystem molded into an interactive command line. I'm not entirely sure if PoweShell can make full use of the static types that build up its core, but its ability to exchange objects in the command line is almost unmatched.

    On Linux you can use `jc` (https://github.com/kellyjonbrazil/jc) combined with `jq` (https://jqlang.github.io/jq/) to glue together command lines.

  • bencher

    A package for benchmarking the characteristics of arbitrary functions (by blooop)

  • I'm trying to solve the part of the problem that generates the output, the argparse part would not be that hard to write.

    https://github.com/blooop/bencher/tree/main

  • PowerShell

    PowerShell for every system!

  • PowerShell is available on macOS and Linux as well (source on Github: https://github.com/PowerShell/PowerShell). It may not be as well-integrated with things like system services management, but the language still works well. You can still use all the command line tools you're used to on Linux, of course.

    nushell does look interesting, though the lack of a .deb repository does put it pretty low on my to-do list.

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