Get to coding in minutes using this gnome shell extension template that comes out of the box with everything you need to get started including
- Typescript
- Biome for linting and formatting
- Esbuild for building
- HMR (hot module replacement) using another virtual machine or nested session
- Third party dependencies support
- Edit code on the host machine.
- Test the extension in a Fedora 41 VM using GNOME on Xorg (for unsafe reload).
- Share the project folder into the VM via SSHFS and run dev commands inside the VM.
- Requirements: Bun, OpenSSH client
- Useful scripts:
bun run format→ Format with Biomebun run lint→ Lint with Biome (safe fixes)bun run lint:fix→ Lint with unsafe fixesbun run check→ Lint + format
Optional VM bootstrap (copies scripts/dev.sh, installs sshfs on VM):
# Run the script itself
./scripts/setup-vm.sh user@vm-ip
# Run the bun script
bun setup user@vm-ip- At login, choose “GNOME on Xorg”.
- Enable Unsafe mode: Alt+F2 →
lg→ settings → enable Unsafe mode. - Install tools:
# This is already automated in the setup script
sudo dnf install -y fuse-sshfs gnome-extensions-app- Install
bunseparately:
curl -fsSL https://bun.sh/install | bashUse scripts/dev.sh inside the VM. It mounts the host project to /mnt/host/gnomext, cds there, and drops you into a shell.
- In
scripts/dev.sh, setHOST_SPECto your host user/IP and project path. - Copy to VM (or use
setup-vm.sh):
scp scripts/dev.sh user@vm-ip:~/dev.sh
ssh user@vm-ip 'chmod +x ~/dev.sh'- On the VM:
~/dev.shbun install
bun run build:dev # builds, installs, and unsafe-reloads GNOME Shell (Xorg only)
bun run log # view GNOME Shell logsNotes
- Build artifacts go to
build/(gitignored). dist/contains compiled JS when applicable.- Biome handles lint/format;
dist/is ignored.
This software is distributed under MIT license. See the license file for details.