Commit Graph
21 Commits
Author SHA1 Message Date
0ad64a59df Fix command injection in theme install, drop tzupdate NOPASSWD (#6694)
* Fix theme install code execution and drop tzupdate NOPASSWD

VULN-01 (C, D, E): a malicious theme can execute arbitrary code
during install through three injection sinks:

  C: colors.toml values reach a sed script unsanitized.
     GNU sed's `e` flag runs the pattern space as a shell command.

  D: vscode.json `.name` is interpolated into a sed replacement
     string without escaping sed metacharacters.

  E: keyboard.rgb content is interpolated into a python3 -c
     argument without validation.

Fix C by validating keys and values in omarchy-theme-color's parser
with a character allowlist. Byte-identical output for all 22 shipped
themes.

Fix D by escaping backslash, ampersand, and slash in the theme name
before sed interpolation.

Fix E by gating on ^[0-9A-Fa-f]{6}$ before interpolation, in both
the Framework 16 and ASUS ROG keyboard scripts.

VULN-02: the tzupdate sudoers grant has no argument constraint.
tzupdate -l lets any wheel user write a root-owned symlink to any
path. Drop it; nothing has invoked tzupdate since omarchy-cmd-tzupdate
was removed. Keep timedatectl set-timezone.

* Harden keyboard and vscode theme scripts

keyboard-f16: pass hex as sys.argv instead of interpolating into
python3 -c. The hex validation gate stays as the primary defense;
argv separation is defense-in-depth per OWASP guidance.

vscode: replace sed interpolation of theme name with jq, which
handles arbitrary strings safely via --arg. Validate extension IDs
against ^[a-zA-Z0-9._-]+$ before passing to --install-extension.

* Keep VS Code settings edits JSONC-safe

settings.json is JSONC, so routing the write through jq dropped theme sync
entirely for anyone with a comment or trailing comma in the file, including
the `{ "workbench.colorTheme": "",\n}` shape Omarchy itself creates. Edit in
place again and close the injection by validating the theme label instead.

Scope the extension-id guard to the install so a malformed id no longer skips
the colorTheme write, and treat a missing descriptor field as empty rather
than the literal string "null".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Widen the accepted colors.toml value charset

The sanitizer dropped gradient angles, decimals, underscored palette
references, and paths, which vanish from --raw/--all and leave a raw
{{ placeholder }} in the generated config. Allow the punctuation real
palettes use, keep out everything sed treats as special, and say so on
stderr rather than dropping a key silently.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 12:31:52 +02:00
Ryan Hughes 0f5e81143e Move current theme state to local state 2026-06-09 19:48:37 -04:00
Ryan Hughes 357b77c92c Register generated VS Code theme extension 2026-06-02 20:28:18 -04:00
Ryan Hughes 4087be7f79 Clean up semantic theme compatibility 2026-06-02 19:35:07 -04:00
Ryan Hughes 89bfa841c4 Restore semantic theme compatibility 2026-06-02 17:23:28 -04:00
Bjarne ØverliandRyan Hughes b1505a085d Implement semantic theme color system 2026-06-02 17:23:28 -04:00
David Heinemeier Hansson cc378a1f7b Hide more irrelevant stuff for users 2026-05-06 13:20:34 +02:00
David Heinemeier Hansson a0185bfc65 Quiet down so we don't get useless output spam 2026-05-01 18:27:29 +02:00
d2a4cc0c4d Add omarchy CLI (#5477)
* Add omarchy CLI

* Remove outdated or internal

* Add bash completions for command

* Add omarchy command documentation

* Add missing docs

* Correct to what's now right

* Fix tests

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2026-05-01 17:40:22 +02:00
David Heinemeier Hansson db52ba346c Extract omarchy-toggle-enabled and use this with the waybar to persist 2026-04-17 15:45:44 +02:00
Ty SmithandGitHub 176194a76f Add VSCode insiders theme support (#5119)
VSCode Insiders uses a different directory than VScode. This commit adds compatibility.
2026-03-26 07:46:02 +01:00
David Heinemeier Hansson 7514ae7dcf Use consistent bash5 style for conditionals and quoting 2026-02-21 10:18:47 +01:00
David Heinemeier Hansson 9fc65dd2de Simplify the VSCode/derivatives theme setting 2026-01-08 10:22:10 +01:00
David Heinemeier Hansson 57bbe425df Unused variable 2026-01-02 21:20:44 -08:00
Vaibhav VermaandGitHub e03193eea4 Fix omarchy-theme-set-vscode to only remove theme instead of the complete line (#2523) 2025-10-18 12:16:27 +02:00
David Heinemeier Hansson 9c8dad9054 Not needed and distracting when themes are not available for Cursor 2025-10-14 12:15:10 +03:00
David Heinemeier Hansson 491e980dd9 Style 2025-10-14 12:02:27 +03:00
7a7266aed0 Theme support for Cursor (#2015)
* Imitating VSCode omarchy-theme-set

* Changed VSCode theme setter take arguments to Cursor theme setter could call it.

* All omarchy commands are in path

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: @adelplace
2025-10-06 21:49:44 +02:00
Omar SkalliandGitHub 206930def8 Improve theme-set-vscode to support jsonc and respect symlinks (#1756) 2025-09-18 16:43:01 -05:00
David Heinemeier Hansson 1514c5c633 Fix references 2025-09-17 12:16:41 +02:00
d3304c4a88 Automatically change VS Code theme along with Omarchy themes (#800)
* Automatically change VS Code theme along with Omarchy themes

* Create a way to skip vscode auto-theming

* Make theme setting resilient to different states of the settings.json

* Improve setting and removing theme and notify when waiting on install

* Explain what we're doing

* Extract dedicated bin for vscode theme change

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
2025-09-15 18:20:02 +02:00