← ClaudeAtlas

gnome-shell-extension-local-devlisted

Build, symlink-install, enable, debug, and package a GNOME Shell extension locally on GNOME 46–50 (Wayland-safe). Use when creating or iterating on any gnome-shell extension.
papanito/ai-skills · ★ 0 · AI & Automation · score 60
Install: claude install-skill papanito/ai-skills
# GNOME Shell Extension Local Dev (GNOME 46–50) ## When to use Creating, iterating on, or packaging a GNOME Shell extension. Covers project structure, import paths, gettext, threading, live install/enable, debugging, and CI packaging. ## Project structure (GNOME 50 verified) ``` <uuid>@<domain>/ metadata.json # uuid, name, shell-version[], version (int), version-name (str), settings-schema, gettext-domain extension.js # import { Extension, gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js' prefs.js # import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js' codeburn.js (etc) # helper modules — receive gettext as a parameter, never import it stylesheet.css schemas/<schema>.gschema.xml install.sh # symlink/enable/reload script (pure bash) Makefile # install/link/uninstall/schemas targets .gitlab-ci.yml # pack/validate/upload/release pipeline ``` UUID format: `name@domain.tld`. The extension dir name MUST equal the uuid. ## Import paths (critical — getting either wrong silently breaks loading) - **extension.js**: `import { Extension, gettext as _ } from 'resource:///org/gnome/shell/extensions/extension.js'` (lowercase `shell`) - **prefs.js**: `import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js'` (capital `Shell/Extensions`, different path `js/extensions/prefs.js`) - **helper