Skip to content
This repository was archived by the owner on Dec 4, 2025. It is now read-only.
This repository was archived by the owner on Dec 4, 2025. It is now read-only.

Implement a real frontend #8

@newgreenshoot

Description

@newgreenshoot

If nothing else, we need a combined progress bar that includes downloading and extraction (since users keep closing the window before the extraction finishes after they notice that the download is done). Preferably, we can also use real GUI dialog boxes to ask the user yes/no questions where they can answer by clicking a button, and to leverage a filepicker for selecting things like your desired sourcemods path.

PyQt5 seems like the standard solution here, but it's also a big library that increases the executable size, and we'll still need to make everything available through the CLI for dedicated servers using the tool.

Proposal: Use a TUI framework instead. They're hardly intimidating if they're pretty and abstracted enough, they'll work fine even on dedicated servers, they're (maybe?) easier to implement, they don't inflate the binary size as much, and they're mostly built with Python in mind, rather than being a set of Python bindings on top of a huge library.

Projects worth looking at:
https://github.com/Textualize/rich (for basic text theming - would be easy to implement in the short-term) (now in-use)
https://github.com/Textualize/textual (derived from the last one. a complete UI framework - based on CSS, which should make it easier)
https://github.com/bczsalba/pytermgui (mainly interesting because you can write your interface in YAML)
https://github.com/jwlodek/py_cui (supposedly similar to Tkinter)

This isn't comprehensive. Even if we used a TUI library, we might just use Tkinter's filepicker since that's harder to do in an intuitive way from the terminal. Tkinter is a built-in module, trivial to access and use for basic needs like that, and uses the native filepicker on Windows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is neededquestionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions