tarwin / tinyjsapp
git clone https://github.com/tarwin/tinyjsapp.git
v0.59.0 · 2d ago
🔥 on GitHub Trending today
Framework for building small native desktop apps with a txiki.js JavaScript backend and a system webview frontend.
Why you might care
Aimed at developers who want desktop apps without Electron: about 6 MB shipped, no bundled Chromium or Node, and no HTTP server since the page talks to the backend over a Unix domain socket. Supports macOS, Windows and Linux, with native menus, tray apps, dialogs, drag and drop, signed builds, and auto-update.
+8
stars, 24h · #1,689
+~56
stars, 7 days · #2,135
+~240
stars, 30 days · #2,130
1.3k
★ total · +5% this week
47
forks · 7 open issues
Star history (as recorded here)
LanguageC
LicenseMIT
Created2026-07-12 (3mo ago)
Last pushtoday
Watchers6
OwnerUser
Seen on GitHub Trending
- 2026-10-21 — #3 daily in c · +43 ★
- 2026-10-20 — #3 daily in c · +59 ★
Links
README excerpt
# tinyjs Tiny desktop apps for macOS, Windows and Linux: a txiki.js backend + a native webview window. - **~6 MB shipped**, two real files — no Electron, no Node, no bundled Chromium - **No HTTP server, no ports** — the page and the backend talk over a Unix domain socket in a private temp directory - Backend is plain JavaScript with full system access (files, sockets, processes, FFI) via txiki.js - Frontend is plain HTML/CSS/JS (multi-file, WebGPU included) rendered by the system WebKit - Native menus, dialogs, **tray/menu-bar apps**, notifications, drag & drop with real file paths, window control - Hot reload in dev, signed `.app` bundles out of `build`, **auto-update** out of `publish` Questions, help, or something you built: come say hi on Discord. ## Install [code] The same script now handles Linux too (it detects the OS). Installs to `~/.tinyjs` and symlinks `tinyjs` onto your PATH. Pin a version with `TINYJS_VERSION=vX.Y.Z`. Later, `tinyjs update` runs the copy of the installer that came with your install if a newer release exists (`--check` only reports, `--dry-run` shows what it would run); `tinyjs dev` also mentions new releases, checking at most once a day. After updating, run `tinyjs update-project` in each project to refresh its types and coding-agent skill (see below). Linux needs the system WebKitGTK runtime: `sudo apt install libwebkit2gtk-4.1-0` on Debian/Ubuntu, `sudo zypper install libwebkit2gtk-4_1-0` on openSUSE. Prebuilt binaries ship for Linux x86_64 and arm64 with the first tagged release after Linux support merged — the installer says so plainly against older releases. To install from source instead: [code] On Linux, `setup.sh` needs the system dev packages first. Debian/Ubuntu: `sudo apt install build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev`. openSUSE: `sudo zypper install gcc-c++ make pkgconf-pkg-config gtk3-devel webkitgtk3-devel libayatana-appindicator3-devel` (WebKitGTK 4.1's dev package is `webkitgtk3-devel` there — the "3" says GTK3, not an older WebKit). It downloads a prebuilt `tjs` from the tinyjsapp releases, or builds txiki.js from source (`TJS_BUILD=1 ./setup.sh`, needs cmake + ninja). **Windows:** [code] Installs prebuilt binaries to `%LOCALAPPDATA%\tinyjs` (override with `TINYJS_HOME`; pin with `TINYJS_VERSION`) and adds it to your user PATH — open a new terminal afterwards. Needs only the WebView2 runtime (preinstalled on Windows 11). `tinyjs update` runs the installer's bundled copy. (Requires a release that ships Windows assets — the first one after Windows support merged; the installer says so plainly against older releases.) To develop tinyjs itself from source (needs MinGW-w64: `winget install BrechtSanders.WinLibs.POSIX.UCRT`): [code] **Linux:** Runs on X11 and Wayland sessions — Ubuntu 24.04+ and current distros with `webkit2gtk-4.1`. Use the same install command above (it detects Linux) or build from source with `./setup.sh` (see the distro d
Blurb generated by claude-haiku-5-5 1d ago. Star deltas marked ~ are extrapolated from partial history.