main
Kyle Bergstedt Publish 1.1.112 8d0a92c 6d ago

name: adom-vscode-settings description: "Get/set ANY VS Code setting, the color theme, fonts, and font sizes LIVE from inside the container, with no window reload, so active Claude/AI sessions survive. Uses the native VS Code API (ConfigurationTarget.Global), the fix for settings.json merges that hang or need a workbench reload. Also reports the RESOLVED font family the renderer truly shows (document.fonts.check), not just the configured stack. Trigger words: change theme, set theme, vscode theme, dark theme, set font, change font, font size, editor font, terminal font size, chat font, prose font, vscode setting, config get, config set, workbench.colorTheme, editor.fontFamily, editor.fontSize, chat.fontFamily, live settings, no reload, which font is active, resolved font, font not applying, theme without reload."

Parent skill: adom-vscode

adom-vscode-settings, live config / theme / fonts

Every verb here applies through vscode.workspace.getConfiguration().update(key, value, ConfigurationTarget.Global), which lands immediately: no window reload, no settings.json file merge, and active Claude Code sessions survive. Prefer these over editing ~/.local/share/code-server/User/settings.json by hand, and NEVER route a settings change through an out-of-band host spawn (wsl.exe on Windows, limactl/nsenter or POST 127.0.0.1:47084/workspace/exec on macOS).

Any setting

adom-vscode config get workbench.colorTheme   # effective value + default/global/workspace layers
adom-vscode config set editor.fontSize 14     # values parse as JSON when possible, else string
adom-vscode config set workbench.statusBar.visible false

HTTP: GET /config?key=<dotted.key>, POST /config {key, value}.

Theme

adom-vscode theme get                 # active + preferredDark/preferredLight + EVERY installed theme
adom-vscode theme set "Adom Studio Dark"   # switches live. Installed Adom labels:
                                           # Adom Studio, Adom Studio Dark,
                                           # Adom Studio Dark (Brighter Text),
                                           # Adom Kickstand, Adom Slate.
                                           # An unknown label answers known:false and
                                           # leaves the editor on the default (white) theme —
                                           # always read `theme get` for the real list first.

theme get enumerates every theme contributed by installed extensions (label, uiTheme, owning extension), so you can offer the user a real list. theme set warns (but still applies) if the name is not among installed themes; a wrong name silently falls back to the default look, so check the available list when a set "didn't take".

HTTP: GET /theme, POST /theme {theme}.

Fonts

adom-vscode font get        # all font settings + RESOLVED (truly rendered) families
adom-vscode font set --editor-family "Fira Code" --prose-family Inter --editor-size 14
adom-vscode font-size get
adom-vscode font-size set --editor 14 --terminal 13 --prose 15 --prose-code 13

The key map (CLI flag -> settings key):

Flag Key What it styles
--editor-family editor.fontFamily Code editor
--editor-size editor.fontSize Code editor
--terminal-size terminal.integrated.fontSize Integrated terminal
--prose-family chat.fontFamily Chat prose (Claude panel text)
--prose-size chat.fontSize Chat prose
--prose-code-family chat.editor.fontFamily Chat code blocks
--prose-code-size chat.editor.fontSize Chat code blocks

HTTP: GET /fonts, POST /fonts {editorFamily?, proseFamily?, proseCodeFamily?, editorSize?, terminalSize?, proseSize?, proseCodeSize?} (any subset).

Resolved fonts, the part HD needs

The configured stack often names fonts that are NOT installed on the rendering side (the user's browser or the HD webview), so reading the setting alone lies. font get also returns resolved: the first family in each stack that the renderer can truly draw, checked with document.fonts.check inside the workbench (via the Adom sidebar webview). If the sidebar webview is not alive the response says so (resolved.via: null plus a note) and only configured values are returned; the check works again once the Adom sidebar has been opened.

Gotchas

  • Font/theme changes by these verbs need NO reload. If a user reports a settings change "didn't apply", suspect the old host-spawn/settings.json path or a wrong key name, not these verbs.
  • config set writes the Global (User) layer. A workspace-layer override (.vscode/settings.json) still wins; config get shows all layers so you can see when that is happening.