jac-desktop-app

Packages full-stack Jac applications as native desktop binaries using OS webviews.

Updated Jul 26, 2026
One-click install
npx skills add https://github.com/PMN123/trapdoor --skill jac-desktop-app-pmn123
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: jac-desktop-app
Source: https://github.com/PMN123/trapdoor/tree/main/.agents/skills/jac-desktop-app
Command: npx skills add https://github.com/PMN123/trapdoor --skill jac-desktop-app-pmn123

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Shipping a Jac full-stack app to end users normally requires a running server or a heavy Electron wrapper. This Skill explains how to compile the same cl/sv source into a single native binary that embeds CPython and renders the UI in the OS-native webview, with no Rust toolchain, no Electron, and no separate backend process. ## Core Features & Use Cases - Desktop build target: Use jac build --client desktop and jac start --client desktop to produce a relocatable binary plus dist/ bundle, with a --dev HMR mode for iterating against the real desktop window. - Window and app configuration: Set binary name, identifier, version, and window geometry through the [desktop] table in jac.toml. - OS capability plugins: Call filesystem, dialogs, clipboard, notifications, window control, shell, and path APIs from cl code via the typed @jac/desktop SDK, with per-plugin security gating in [desktop.plugins]. - Use Case: You have a Jac web app and want to ship it to Linux, macOS, and Windows users as a downloadable desktop app that can save files locally and send OS notifications. ## Quick Start Ask the assistant to package your existing Jac full-stack app as a desktop binary and add a save-file dialog using the @jac/desktop fs and dialog plugins.

Frequently Asked Questions about jac-desktop-app

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a Jac app as a desktop application?▼

Run jac build --client desktop to produce a native binary plus dist/ bundle under .jac/client/desktop, or jac start --client desktop to build and launch the window. The desktop target ships with jaclang core, so no extra setup step is required.

How do I access the filesystem or native dialogs from a Jac desktop app?▼

Import the typed SDK with import from "@jac/desktop" and call async methods like fs.write_file or dialog.save_file with await. Pass arguments positionally, because keyword arguments across the module boundary are miscompiled by the cl compiler.

Does the Jac desktop target use Electron or Rust?▼

No. The desktop target compiles a native host that embeds CPython and renders the UI in the OS-native webview: WebKitGTK on Linux, WKWebView on macOS, and WebView2 on Windows. No Rust toolchain, Electron, or PyInstaller is involved.

Can I cross-compile a Jac desktop app for Windows from Linux?▼

No, cross-compilation is not supported yet. The --platform flag only affects sidecar naming, such as selecting .exe for Windows, so you must build on each target operating system.

How do I restrict shell or filesystem access in a Jac desktop app?▼

Configure the [desktop.plugins] table in jac.toml. The shell plugin is deny-all by default until you add allow patterns, and fs uses glob allow-lists for read and write paths. Setting a plugin to false disables it entirely.

What Linux dependencies are needed to build a Jac desktop app?▼

On Debian or Ubuntu, install build-essential, pkg-config, libgtk-3-dev, and libwebkit2gtk-4.1-dev. A C toolchain is needed once to compile the libwebview.so wrapper, and jaclang ships an install_webkit_deps.sh helper script.