ScriptWeaver Documentation
ScriptWeaver lets you build native desktop apps in plain JavaScript — no web browser, no heavy runtime. You write standard JS, lay out real native widgets, and ship a tiny cross-platform bundle that runs on the free Player.
New here? Start with the Hello, World tutorial.
Getting started
- Introduction — what ScriptWeaver is and how the pieces fit
- Install & run — get the Player; run a script or a
.zipapp - Tutorial: Hello, World — a clickable button in 60 seconds
Guides
- Widget basics — creating widgets, options-as-properties, the common methods
- Layout —
pack,grid,place, and theFlex/Gridhelpers - High-DPI & scaling — resolution independence across platforms; when fixed-pixel sizes need scaling
- Events & binding —
onClick,.bind(), keyboard and mouse events - Variables & reactivity —
StringVar/IntVar/ … two-way binding - Dialogs — native message boxes and file pickers (
sw.dialog) - System & files —
sw.sys,sw.fs,sw.app - Theming — switch the look with
app.setTheme(); the bundled theme pack - Packaging apps — bundle your app as a
.zip - MarkView: in-app Markdown — render Markdown help inside your app
Widget reference
- Buttons — Button · TButton · CheckButton · TCheckButton · RadioButton · TRadioButton
- Inputs — Entry · TCombobox · Spinbox · Scale
- Containers — Frame · LabelFrame · TNotebook · PanedWindow · TopLevel
- Display — Label · Message · Listbox · Treeview · Text · TProgressbar
- Drawing — Canvas — vector scene graph (tkpath)
- Menus & images — Menu · MenuButton · Photo
- Scrolling & decoration — Scrollbar · TSeparator · TSizegrip
Reactive variables (StringVar, IntVar, BoolVar, DoubleVar) are covered in
the Variables & reactivity guide.
Several pages document a classic widget and its themed T-prefixed variant
together — for example Entry covers both Entry and TEntry, and
Scale covers Scale and TScale. Prefer the themed variant for a
modern look.
ScriptWeaver bundles modern themes — Azure light/dark plus the full ttkbootstrap pack — switchable at runtime with
app.setTheme(). Prefer the themed widgets — the ones prefixedT(TButton,TEntry, …) — for a contemporary look. The non-prefixed names are the classic Tk equivalents.
System API
The sw.* system namespace is covered in the guides:
- System & files —
sw.fs(files),sw.sys(processes, paths, environment),sw.app - Dialogs —
sw.dialog(message boxes and file / directory / colour pickers) - Reflection —
sw.reflect(introspect widgets, options and commands; intended for tool authors)
Examples
Annotated walk-throughs of the bundled demos: a notes editor, a file browser, a todo list, a preferences dialog, and a Markdown help viewer.