Skip to content

Platforms ​

gform runs natively on Linux, macOS, Windows, and WSL — Node.js ≥ 20 is the only runtime prerequisite. Same CLI, same engine, same YAML contracts; only absolute paths and browser discovery look local to the host.

Related: portable · install · browsers · doctor

Supported hosts ​

HostStatus
LinuxNative — default data home under ~/.local/share/gform
macOSNative — default under ~/Library/Application Support/gform
WindowsNative — default under %LOCALAPPDATA%\gform
WSLNative Linux side — data home stays in the distro (~/.local/share/gform), not /mnt/c/Users/…

Install Node, install Playwright Chromium (and prefer system Chrome for Google sign-in). No separate Windows-only or macOS-only build.

Parity goal ​

Must stay the sameMay differ by host
CLI verbs, aliases, flags, exit semanticsAbsolute paths in logs / links
Form YAML schema and merge precedenceDefault folder when env is unset
Run/batch manifests, reason codes, historyWhich browsers are discovered
JSON shapes (-j)Headed GUI availability
Soft vs hard wall behaviorOS install steps for browsers

Data home (no GFORM_HOME yet) ​

Owner: core (getGformHome / resolveGformHome). The CLI does not invent a separate home.

Resolution:

  1. GFORM_HOME if set
  2. else $XDG_DATA_HOME/gform if set
  3. else the native default for this host (table above)
bash
export GFORM_HOME=/custom/gform          # Unix / WSL
setx GFORM_HOME "D:\data\gform"          # Windows (new shells)

Layout under the home: portable.

If you previously used the old XDG-shaped folder on macOS/Windows (~/.local/share/gform), set GFORM_HOME to that path or copy data into the new default — gform does not auto-migrate.

Host-specific notes ​

  • Browsers / WSL — prefer Linux Chrome inside the distro; Windows .exe under /mnt/c may show as found but often is not CDP-controllable — browsers
  • Headed runs — need a real display (desktop / WSLg); otherwise warn / fall back to headless
  • Doctor — reports home writable + browser readiness — doctor

Quick verify ​

bash
gform doctor
gform br list
export GFORM_HOME="$PWD/.gform-home"   # pin for scripts / CI
gform verify <form>

Only absolute paths in the output should look local to that host — commands and outcomes stay the same.