Skip to content

matyalatte/tuw

Repository files navigation

Tuw: a tiny GUI wrapper for command-line tools

  _____
 |_   _|   ___      __
   | || | | \ \ /\ / /
   | || |_| |\ V  V /
   |_| \__,_| \_/\_/
  Tiny UI wrapper for
       CLI tools

build test Codacy Badge

Only 500KB for a portable GUI!

Tuw will give a very simple GUI to your scripts.
All you need is a JSON file and a tiny executable.
No need compilers, no need browsers, and no need huge executables!

sample

Features

  • Define GUI in JSON
  • Embed JSON into exe
  • Save arguments
  • Input paths by drag and drop
  • Cross-platform (Windows, macOS, Linux, BSD, etc.)
  • Native look and feel
  • Portable
  • Small size
  • UTF-8 support

Downloads

You can download executables from the release page

  • Tuw*-Windows*.zip is for Windows (7 or later.)
  • Tuw*-macOS*.tar.bz2 is for macOS (10.9 or later.)
  • Tuw*-Linux*.tar.bz2 is for Linux (with GTK3.14, GLIBC2.15, and GLIBCXX3.4.21, or later versions of the libraries.)

Linux builds only support distributions using glibc.
Build the executable by yourself if you want to use it on unsupported distros.

Examples

There are some JSON files to learn how to define GUIs.

JSON Schema

There is a schema for gui_definition.json.
You can use it to validate definitions while editing files.

VSCode

For VSCode, you can add the schema path to settings.json (File > Preferences > Settings > JSON:Schemas > Edit in settings.json.)

"json.schemas": [
    {
        "fileMatch": [ "gui_definition.json" ],
        "url": "https://raw.githubusercontent.com/matyalatte/tuw/main/schema/schema.json"
    }
]

FAQ

Frequently Asked Questions

Building

Building Executables

License

Files in this repository are available under the MIT license.

External Projects

Project Used for License
libui-ng GUI framework MIT
RapidJSON JSON handling MIT
subprocess.h Command processing Unlicense