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.