jac-desktop-app

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

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Shipping a Jac full-stack app to end users normally means running a server or bundling heavy runtimes like Electron. 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 Jac full-stack app as a desktop binary with a configured window title and filesystem access using the jac desktop target.

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 typed capability objects like fs, dialog, clipboard, and notification from @jac/desktop and call their async methods with await. Pass arguments positionally, since keyword arguments across the module boundary are not resolved correctly 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. There is no Rust toolchain, Electron, or separate backend process.

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

On Debian/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.

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 supports glob allow-lists for read and write paths. Setting a plugin to false disables it entirely.