diff --git a/default/fonts/omarchy/README.md b/default/fonts/omarchy/README.md new file mode 100644 index 00000000..8eb3c441 --- /dev/null +++ b/default/fonts/omarchy/README.md @@ -0,0 +1,13 @@ +# Omarchy icon font + +The private-use glyphs in `omarchy.ttf` are: + +- `U+E900` — Omarchy +- `U+E901` — Pi, from +- `U+E902` — OpenCode, from +- `U+E903` — omp, from +- `U+E904` — Grok, from +- `U+E905` — Codex, from the OpenAI mark on + +The agent marks are monochrome so the menu can render them using the active +theme's foreground and selection colors. diff --git a/default/fonts/omarchy/omarchy.ttf b/default/fonts/omarchy/omarchy.ttf index 273256d0..a548aec1 100644 Binary files a/default/fonts/omarchy/omarchy.ttf and b/default/fonts/omarchy/omarchy.ttf differ diff --git a/default/omarchy/omarchy-menu.jsonc b/default/omarchy/omarchy-menu.jsonc index 203318d9..2806fe12 100644 --- a/default/omarchy/omarchy-menu.jsonc +++ b/default/omarchy/omarchy-menu.jsonc @@ -133,14 +133,14 @@ "setup.default": {"icon":"","label":"Defaults","aliases":["default","defaults"]}, "setup.default.agent": {"icon":"󰚩","label":"Agent"}, "setup.default.agent.claude": {"icon":"󰛄","label":"Claude","checked":"[[ \"$(omarchy-default-agent)\" == \"claude\" ]]","action":"omarchy-default-agent claude"}, - "setup.default.agent.codex": {"icon":"󰞵","label":"Codex","checked":"[[ \"$(omarchy-default-agent)\" == \"codex\" ]]","action":"omarchy-default-agent codex"}, + "setup.default.agent.codex": {"icon":"","iconFont":"omarchy","label":"Codex","checked":"[[ \"$(omarchy-default-agent)\" == \"codex\" ]]","action":"omarchy-default-agent codex"}, "setup.default.agent.copilot": {"icon":"","label":"Copilot","checked":"[[ \"$(omarchy-default-agent)\" == \"copilot\" ]]","action":"omarchy-default-agent copilot"}, "setup.default.agent.crush": {"icon":"󰋑","label":"Crush","checked":"[[ \"$(omarchy-default-agent)\" == \"crush\" ]]","action":"omarchy-default-agent crush"}, "setup.default.agent.gemini": {"icon":"󰫢","label":"Gemini","checked":"[[ \"$(omarchy-default-agent)\" == \"gemini\" ]]","action":"omarchy-default-agent gemini"}, - "setup.default.agent.grok": {"icon":"󰰱","label":"Grok","checked":"[[ \"$(omarchy-default-agent)\" == \"grok\" ]]","action":"omarchy-default-agent grok"}, - "setup.default.agent.omp": {"icon":"󰣪","label":"omp","checked":"[[ \"$(omarchy-default-agent)\" == \"omp\" ]]","action":"omarchy-default-agent omp"}, - "setup.default.agent.opencode": {"icon":"󰕪","label":"OpenCode","checked":"[[ \"$(omarchy-default-agent)\" == \"opencode\" ]]","action":"omarchy-default-agent opencode"}, - "setup.default.agent.pi": {"icon":"󰏿","label":"Pi","checked":"[[ \"$(omarchy-default-agent)\" == \"pi\" ]]","action":"omarchy-default-agent pi"}, + "setup.default.agent.grok": {"icon":"","iconFont":"omarchy","label":"Grok","checked":"[[ \"$(omarchy-default-agent)\" == \"grok\" ]]","action":"omarchy-default-agent grok"}, + "setup.default.agent.omp": {"icon":"","iconFont":"omarchy","label":"omp","checked":"[[ \"$(omarchy-default-agent)\" == \"omp\" ]]","action":"omarchy-default-agent omp"}, + "setup.default.agent.opencode": {"icon":"","iconFont":"omarchy","label":"OpenCode","checked":"[[ \"$(omarchy-default-agent)\" == \"opencode\" ]]","action":"omarchy-default-agent opencode"}, + "setup.default.agent.pi": {"icon":"","iconFont":"omarchy","label":"Pi","checked":"[[ \"$(omarchy-default-agent)\" == \"pi\" ]]","action":"omarchy-default-agent pi"}, "setup.default.browser": {"icon":"","label":"Browser"}, "setup.default.browser.chromium": {"icon":"","label":"Chromium","when":"omarchy-cmd-present chromium","checked":"[[ \"$(omarchy-default-browser)\" == \"chromium\" ]]","action":"omarchy-default-browser chromium"}, "setup.default.browser.chrome": {"icon":"󰊯","label":"Chrome","when":"omarchy-cmd-present google-chrome-stable","checked":"[[ \"$(omarchy-default-browser)\" == \"chrome\" ]]","action":"omarchy-default-browser chrome"}, diff --git a/test/shell.d/menu-test.sh b/test/shell.d/menu-test.sh index d7621e18..ccb8ce7f 100644 --- a/test/shell.d/menu-test.sh +++ b/test/shell.d/menu-test.sh @@ -168,12 +168,12 @@ assertEqual( 'menu lists Direct Boot immediately below Input' ) const expectedAgents = { - pi: { icon: '󰏿', label: 'Pi' }, - omp: { icon: '󰣪', label: 'omp' }, - opencode: { icon: '󰕪', label: 'OpenCode' }, + pi: { icon: '\ue901', iconFont: 'omarchy', label: 'Pi' }, + omp: { icon: '\ue903', iconFont: 'omarchy', label: 'omp' }, + opencode: { icon: '\ue902', iconFont: 'omarchy', label: 'OpenCode' }, claude: { icon: '󰛄', label: 'Claude' }, - codex: { icon: '󰞵', label: 'Codex' }, - grok: { icon: '󰰱', label: 'Grok' }, + codex: { icon: '\ue905', iconFont: 'omarchy', label: 'Codex' }, + grok: { icon: '\ue904', iconFont: 'omarchy', label: 'Grok' }, gemini: { icon: '󰫢', label: 'Gemini' }, copilot: { icon: '', label: 'Copilot' }, crush: { icon: '󰋑', label: 'Crush' }, @@ -183,6 +183,7 @@ assert( const entry = defaultById[`setup.default.agent.${agent}`] return entry && entry.icon === expected.icon + && entry.iconFont === (expected.iconFont || '') && entry.label === expected.label && entry.action === `omarchy-default-agent ${agent}` && !entry.when @@ -483,3 +484,7 @@ assert( 'mouse activation carries pointer intent into subordinate menus' ) JS + +font_charset=$(fc-query --format='%{charset}' "$ROOT/default/fonts/omarchy/omarchy.ttf") +[[ $font_charset == *"e900-e905"* ]] || fail "Omarchy icon font includes every custom menu glyph" +pass "Omarchy icon font includes the official agent marks"