From 9d0849f71754bf02440fab0f06a9184c749c88ab Mon Sep 17 00:00:00 2001 From: Spencer Bull Date: Mon, 7 Sep 2026 20:51:45 -0500 Subject: [PATCH] Add the Claude desktop app to Install > AI Follows the ChatGPT flow: the Install > AI entry runs omarchy-install-ai-claude in a floating terminal, which installs the claude-desktop package (Anthropic's Linux desktop beta, repacked from their Debian repo in omarchy-pkgs) and opens the app. Remove > AI drops the package along with ~/.config/Claude and ~/.cache/Claude, the Electron directories the desktop app owns, while keeping ~/.claude, ~/.claude.json, and ~/.cache/claude-cli-nodejs: those belong to the Claude Code CLI, which ships in its own package and survives this removal, just as the ChatGPT remover keeps the Codex CLI. The menu mark is a new U+E90E glyph in the Omarchy icon font, from Simple Icons' Claude mark, so it reaches desktops through the next omarchy-settings release. Co-Authored-By: Fable 5 Co-Authored-By: Codex XHigh --- bin/omarchy-install-ai-claude | 15 +++++++++++++++ bin/omarchy-remove-ai-claude | 19 +++++++++++++++++++ default/fonts/omarchy/README.md | 1 + default/fonts/omarchy/omarchy.ttf | Bin 9440 -> 9972 bytes default/omarchy/omarchy-menu.jsonc | 2 ++ manual/17-ai.md | 2 +- test/shell.d/menu-test.sh | 2 +- test/shell.d/remove-ai-test.sh | 18 ++++++++++++++++++ 8 files changed, 57 insertions(+), 2 deletions(-) create mode 100755 bin/omarchy-install-ai-claude create mode 100755 bin/omarchy-remove-ai-claude diff --git a/bin/omarchy-install-ai-claude b/bin/omarchy-install-ai-claude new file mode 100755 index 00000000..85a7e593 --- /dev/null +++ b/bin/omarchy-install-ai-claude @@ -0,0 +1,15 @@ +#!/bin/bash + +# omarchy:summary=Install the Claude desktop app +# omarchy:requires-sudo=true + +set -euo pipefail + +echo "Installing Claude..." +omarchy-pkg-add claude-desktop + +echo "Opening Claude..." +setsid uwsm-app -- /usr/bin/claude-desktop >/dev/null 2>&1 & + +echo "" +echo "Claude has been installed." diff --git a/bin/omarchy-remove-ai-claude b/bin/omarchy-remove-ai-claude new file mode 100755 index 00000000..9c66c5d0 --- /dev/null +++ b/bin/omarchy-remove-ai-claude @@ -0,0 +1,19 @@ +#!/bin/bash + +# omarchy:summary=Remove the Claude desktop app along with its configuration and caches. +# omarchy:requires-sudo=true + +# -u so an unset HOME is an error rather than a set of rm -rf paths rooted at /. +set -euo pipefail + +omarchy-pkg-drop claude-desktop + +# Not ~/.claude, ~/.claude.json, or ~/.cache/claude-cli-nodejs: those belong +# to the Claude Code CLI, which ships in a different package that survives +# this one. The desktop app keeps its state in its own Electron directories. +rm -rf \ + "$HOME/.config/Claude" \ + "$HOME/.cache/Claude" + +echo "" +echo "Claude has been removed." diff --git a/default/fonts/omarchy/README.md b/default/fonts/omarchy/README.md index b731549d..df93aa55 100644 --- a/default/fonts/omarchy/README.md +++ b/default/fonts/omarchy/README.md @@ -16,6 +16,7 @@ The private-use glyphs in `omarchy.ttf` are: - `U+E90B` — Perplexity, from - `U+E90C` — OpenClaw, traced from the lobster mascot the openclaw package ships as `dist/control-ui/favicon.svg`, since upstream publishes no monochrome SVG - `U+E90D` — Cursor, from +- `U+E90E` — Claude, from 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 632c91bb5441d37a752681d6d50943ea30e543a3..3c70d8031f15323654523a51fe288297c945edd7 100644 GIT binary patch delta 968 zcmZ9KO=uHa6vxkI4VsikSNsJ5wy_*uozkX8duY^#-5 zL5bkz!2>@Sa8XbZb)|?>9=wGMw}K!-5d=XOZXybbx;37e){W=#pY#8nbLQO5eP8&# z<65)|PXWN$xu>^(|Et0T0O>?NUaA!5?>pgb$o~LvQzxDCCr*rB?ggN$0Fj5~+2Tyk zqv0z6u}e5VSjK`(coX@5p=qH&=>F^Tg&hg9Y(2 z7B-wNR%Y#g-(JK4yfFA=e(vmIq4CoLfQ}LD|K~1d9CwJ6ssa*4b)$IHJs|i6GLBWx zbz@fiIuA>jnd^YIr=wYlZ!nIBwX?Ei@anCwH|^?A(4-P_^9~CWY{{ zAVp*LK$j3x6HHY@sv;3#a96$|K|==zTe;7h3@$K1oKip_l;?%GrgFSU6_KYSV;RF} zPjFm3JFfCnIdsHgn%*G@`d@n&(kVq8tL~ghwl)T1;jK;~(6=L%4tI6+ca7ORQ&c_F zVi+xi6N%hp8cc81_|Ea^NSKT!bCP*^qb3WJyC&(+ueuUWW+%5ym}KhoR#A^d7q)E_ zmxXXL(1%aOe`Cb9?N8s{9Se>8fS~sX0Y1EZeh#j`85NmFyql(}A?)N)%c#n__t?|J z_3U6CL+wFbK>dx%yC&ZwE3f^lnA<`UD-m-wNSOPvt(zkaZZvaL5lc?-+{`TA^$SK~ Bv?l-n delta 420 zcmZ8cJxBs!7=FI%Dmw`RJvD16Dj~Rj@E}5h+{z&wglLK`Gac^qDno^$Er_HaK8moR zp;ZEL%)N#}iiU=$)?1n!+OF3dEZT zuO$u5{H*=llYR$;Xj(6AKL1{90pcRydCH`;jmf*n3EgcFXEJ2CnCPZ+i#VDw@ AI_ menu also carries a few graphical AI apps: the ChatGPT desktop app, Grok Bot for chatting with xAI's models, Hermes Desktop, OpenClaw, and the Perplexity desktop app. +The _Install > AI_ menu also carries a few graphical AI apps: the ChatGPT desktop app, the Claude desktop app (Anthropic's Linux beta, with Chat, Cowork, and Claude Code tabs), Grok Bot for chatting with xAI's models, Hermes Desktop, OpenClaw, and the Perplexity desktop app. Hermes Desktop is the one to know about, because there is only ever one Hermes on a machine. The app only runs against a runtime built from its own commit, so it installs one of its own under `~/.hermes` on first launch, which takes a few minutes and shows its own progress. From then on that is the Hermes the terminal `hermes` command and the default agent use too, whichever order you installed them in. Installing it also hands Hermes the Omarchy theme as a skin named `omarchy`, which every Hermes surface follows as you switch themes; pick another under Hermes' Appearance settings or with `/skin` if you'd rather it didn't, and Omarchy leaves that choice alone. Removing the app under _Remove > AI_ takes that runtime with it, and keeps your chats, memories, and the skills Hermes wrote for itself unless you tell it otherwise: it asks, defaulting to no, whether that data and your connection settings should go too. diff --git a/test/shell.d/menu-test.sh b/test/shell.d/menu-test.sh index b227bb10..a424379b 100644 --- a/test/shell.d/menu-test.sh +++ b/test/shell.d/menu-test.sh @@ -641,5 +641,5 @@ assert( JS font_charset=$(fc-query --format='%{charset}' "$ROOT/default/fonts/omarchy/omarchy.ttf") -[[ $font_charset == *"e900-e90d"* ]] || fail "Omarchy icon font includes every custom menu glyph" +[[ $font_charset == *"e900-e90e"* ]] || fail "Omarchy icon font includes every custom menu glyph" pass "Omarchy icon font includes the official agent marks" diff --git a/test/shell.d/remove-ai-test.sh b/test/shell.d/remove-ai-test.sh index 9d518318..7c8ae043 100644 --- a/test/shell.d/remove-ai-test.sh +++ b/test/shell.d/remove-ai-test.sh @@ -55,6 +55,24 @@ pass "ChatGPT removal keeps the Codex CLI's runtime cache" [[ -d $HOME/.codex ]] || fail "ChatGPT removal keeps the Codex CLI's config" pass "ChatGPT removal keeps the Codex CLI's config" +# The Claude Code CLI ships in its own package and keeps its state in +# ~/.claude, ~/.claude.json, and ~/.cache/claude-cli-nodejs, so removing the +# desktop app must not take it. +fresh_home +mkdir -p "$HOME/.config/Claude" "$HOME/.cache/Claude" "$HOME/.cache/claude-cli-nodejs" "$HOME/.claude" +touch "$HOME/.claude.json" +"$ROOT/bin/omarchy-remove-ai-claude" >/dev/null + +for gone in .config/Claude .cache/Claude; do + [[ ! -e $HOME/$gone ]] || fail "Claude removal deletes the desktop app's config and caches" "$gone" +done +pass "Claude removal deletes the desktop app's config and caches" + +for kept in .claude .claude.json .cache/claude-cli-nodejs; do + [[ -e $HOME/$kept ]] || fail "Claude removal keeps the Claude Code CLI's state" "$kept" +done +pass "Claude removal keeps the Claude Code CLI's state" + # LM Studio's models follow a relocatable home, named only by the pointer file. fresh_home mkdir -p "$tmp_dir/relocated-models/models"