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 provides a very simple GUI for your scripts.
All you need is a JSON file and a tiny executable.
No need for compilers, browsers, or 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.)

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 About License
libui-ng GUI framework MIT
RapidJSON JSON parser MIT
subprocess.h Command processor Unlicense
c-env-utils Utilities for environment info MIT
tiny-str-match String validator MIT