Drop western default apps from the CN default set

Basecamp, Discord, HEY, Google Contacts/Maps/Messages/Photos,
WhatsApp, and X lose their shipped launchers, webapp keybindings,
and the whatsapp-slim extension; aether, libreoffice-fresh, and
obs-studio leave the base package set. The HEY mailto handler and
its registration go with them. Preinstall add/remove lists, the
launcher hide list, and chromium flags stay in sync.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QKxGW1raAWaqeU8WdHsMsp
This commit is contained in:
2026-08-25 10:23:52 -04:00
co-authored by Claude Fable 5
parent 7150f63544
commit 6d8acfca9f
31 changed files with 2 additions and 265 deletions
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Basecamp
Exec=omarchy-launch-webapp https://launchpad.37signals.com
Terminal=false
Type=Application
Icon=basecamp
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Discord
Exec=omarchy-launch-webapp https://discord.com/channels/@me
Terminal=false
Type=Application
Icon=omarchy-discord
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Google Contacts
Exec=omarchy-launch-webapp https://contacts.google.com/
Terminal=false
Type=Application
Icon=google-contacts
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Google Maps
Exec=omarchy-launch-webapp https://maps.google.com
Terminal=false
Type=Application
Icon=google-maps
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Google Messages
Exec=omarchy-launch-webapp https://messages.google.com/web/conversations
Terminal=false
Type=Application
Icon=google-messages
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=Google Photos
Exec=omarchy-launch-webapp https://photos.google.com/
Terminal=false
Type=Application
Icon=google-photos
StartupNotify=true
-9
View File
@@ -1,9 +0,0 @@
[Desktop Entry]
Version=1.0
Name=HEY
Exec=omarchy-webapp-handler-hey %u
Terminal=false
Type=Application
Icon=hey
StartupNotify=true
MimeType=x-scheme-handler/mailto
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=WhatsApp
Exec=omarchy-launch-webapp https://web.whatsapp.com/
Terminal=false
Type=Application
Icon=whatsapp
StartupNotify=true
-8
View File
@@ -1,8 +0,0 @@
[Desktop Entry]
Version=1.0
Name=X
Exec=omarchy-launch-webapp https://x.com/
Terminal=false
Type=Application
Icon=x
StartupNotify=true
Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

-3
View File
@@ -12,13 +12,10 @@ if gum confirm "Are you sure you want to restore all preinstalled web apps, TUI
# Mirrors the list in omarchy-remove-preinstalls; both track omarchy-base.packages # Mirrors the list in omarchy-remove-preinstalls; both track omarchy-base.packages
if ! omarchy-pkg-add \ if ! omarchy-pkg-add \
aether \
cliamp \ cliamp \
libreoffice-fresh \
xournalpp \ xournalpp \
pinta \ pinta \
obsidian \ obsidian \
obs-studio \
kdenlive \ kdenlive \
moonlight-qt \ moonlight-qt \
lazydocker \ lazydocker \
+1 -2
View File
@@ -11,7 +11,7 @@ Usage: omarchy finalize user [--force] [--first-install]
Runs the per-user setup steps that /etc/skel can't seed: Runs the per-user setup steps that /etc/skel can't seed:
dev-aware skill symlinks, xdg-user-dirs + gtk bookmarks (need \$HOME), dev-aware skill symlinks, xdg-user-dirs + gtk bookmarks (need \$HOME),
default browser/mailto, and install/user/all.sh. default browser, and install/user/all.sh.
For shipped configs see /etc/skel (new users) and omarchy-reinstall-configs For shipped configs see /etc/skel (new users) and omarchy-reinstall-configs
(existing users explicitly resyncing). (existing users explicitly resyncing).
@@ -110,7 +110,6 @@ source "$OMARCHY_INSTALL/user/all.sh"
omarchy-refresh-applications omarchy-refresh-applications
env -u BROWSER xdg-settings set default-web-browser chromium.desktop env -u BROWSER xdg-settings set default-web-browser chromium.desktop
xdg-mime default HEY.desktop x-scheme-handler/mailto
if (( first_install )); then if (( first_install )); then
mkdir -p "$state_dir/migrations" mkdir -p "$state_dir/migrations"
-3
View File
@@ -18,13 +18,10 @@ if gum confirm "Are you sure you want to remove all preinstalled web apps, TUI w
~/.local/bin/omp ~/.local/bin/ori ~/.local/bin/grok ~/.local/bin/crush ~/.local/bin/ghui ~/.local/bin/hunk ~/.local/bin/omp ~/.local/bin/ori ~/.local/bin/grok ~/.local/bin/crush ~/.local/bin/ghui ~/.local/bin/hunk
omarchy-pkg-drop \ omarchy-pkg-drop \
aether \
cliamp \ cliamp \
libreoffice-fresh \
xournalpp \ xournalpp \
pinta \ pinta \
obsidian \ obsidian \
obs-studio \
kdenlive \ kdenlive \
moonlight-qt \ moonlight-qt \
lazydocker \ lazydocker \
-15
View File
@@ -1,15 +0,0 @@
#!/bin/bash
# omarchy:summary=Open HEY webmail and translate mailto links
# omarchy:args=[url]
url="$1"
web_url="https://app.hey.com"
# Handle mailto: URLs
if [[ $url =~ ^mailto: ]]; then
email=$(echo "$url" | sed 's/mailto://')
web_url="https://app.hey.com/messages/new?to=$email"
fi
exec omarchy-launch-webapp "$web_url"
+1 -1
View File
@@ -2,4 +2,4 @@
--ozone-platform-hint=wayland --ozone-platform-hint=wayland
--password-store=gnome-libsecret --password-store=gnome-libsecret
--enable-features=TouchpadOverscrollHistoryNavigation --enable-features=TouchpadOverscrollHistoryNavigation
--load-extension=/usr/share/omarchy/default/chromium/extensions/copy-url,/usr/share/omarchy/default/chromium/extensions/yt-dlp,/usr/share/omarchy/default/chromium/extensions/whatsapp-slim --load-extension=/usr/share/omarchy/default/chromium/extensions/copy-url,/usr/share/omarchy/default/chromium/extensions/yt-dlp
@@ -1,21 +0,0 @@
{
"manifest_version": 3,
"name": "WhatsApp Slim",
"version": "1.1",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAszLhFYxjvKqx1VAORt3M6b0H1Kz03cmQ1MrUjJZ8gj3nhRcvufk6PS17yUIjEdKKmuj+1HuFVwOaHJQsACGJXwn2TeKQqZmZx/83yd7ydgabHXTsJbhy5O+Yunv+VA1B2IX/phcXpkH9bPv2PuC/bQ13nmmAvT2b+EMyq8EPQHOoSWhE4M4kIhLDczTmxfJX5X3tTxH66952DYuQWvGpIXLAUXkvIgap0qemW68/LymPaWzcg6g3oE/nZ7C0j7JE5bnqLFxqXNlA9Jt+Ss/1Y33QL3OSD9EEsrpgueS0bbqtkmFQ9/jGlruIL+qj0xe+CAtqbJ5ty9H/sqi01kjfyQIDAQAB",
"description": "Make WhatsApp Web follow the system theme and collapse its chat list in narrow windows, this extension is installed by Omarchy",
"content_scripts": [
{
"matches": [
"https://web.whatsapp.com/*"
],
"css": [
"whatsapp.css"
],
"js": [
"system-theme.js"
],
"run_at": "document_start"
}
]
}
@@ -1,4 +0,0 @@
if (localStorage.getItem("system-theme-mode") !== "true") {
localStorage.setItem("system-theme-mode", "true");
location.reload();
}
@@ -1,64 +0,0 @@
/* Collapse WhatsApp Web's chat list to a Signal-style avatar rail when the
* window is too narrow to show both the full list and the conversation.
* Leans on WhatsApp's stable structural ids (#side, #main, #pane-side) and
* data-testid hooks rather than its obfuscated, frequently-churning class
* names. */
@media (max-width: 1100px) {
/* The chat-list column (title header + #side) becomes an avatar rail */
div:has(> div#side) {
flex: 0 0 90px !important;
min-width: 90px !important;
max-width: 90px !important;
}
/* Chat-list title bar, search, filter chips, and banner don't fit.
* Scoped to the column wrapper: the left icon nav rail confusingly
* shares the same chatlist-header testid and must survive. */
div:has(> div#side) > header,
#side > div:first-child,
#side [role="tablist"],
#side span[data-testid="chat-butterbar"] {
display: none !important;
}
/* The rail doesn't need a visible scrollbar, and horizontal overflow
* from the collapsed rows must not wiggle */
#pane-side {
overflow-x: hidden !important;
scrollbar-width: none !important;
}
/* Chat rows: keep the avatar column, collapse the text/preview columns
* without display:none so the unread badge can be resurrected */
[data-testid="cell-frame-container"] {
position: relative !important;
}
[data-testid="cell-frame-container"] > div:not(:first-child) {
visibility: hidden !important;
width: 0 !important;
min-width: 0 !important;
overflow: hidden !important;
}
/* Float the unread badge over the avatar's top-right corner */
[data-testid="cell-frame-container"] span[aria-label*="unread"] {
visibility: visible !important;
position: absolute !important;
top: 2px !important;
left: 50px !important;
}
/* The empty drawer overlay keeps the stock chat-list width, which
* strands its divider border in the middle of the conversation */
[data-testid="drawer-middle"] {
border-left: none !important;
}
/* Let the app shrink below WhatsApp's default minimum width */
#app,
#app .two {
min-width: 0 !important;
}
}
-9
View File
@@ -21,14 +21,5 @@ if o.preinstalled_bindings_enabled() then
o.bind("SUPER + SHIFT + A", "ChatGPT", { webapp = "https://chatgpt.com" }) o.bind("SUPER + SHIFT + A", "ChatGPT", { webapp = "https://chatgpt.com" })
o.bind("SUPER + SHIFT + ALT + A", "Grok", { webapp = "https://grok.com" }) o.bind("SUPER + SHIFT + ALT + A", "Grok", { webapp = "https://grok.com" })
o.bind("SUPER + SHIFT + C", "Calendar", { webapp = "https://app.hey.com/calendar/weeks/" })
o.bind("SUPER + SHIFT + E", "Email", { webapp = "https://app.hey.com" })
o.bind("SUPER + SHIFT + ALT + E", "New email", { webapp = "https://app.hey.com/messages/new?display=standalone&new_window=true" })
o.bind("SUPER + SHIFT + Y", "YouTube", { webapp = "https://youtube.com/" }) o.bind("SUPER + SHIFT + Y", "YouTube", { webapp = "https://youtube.com/" })
o.bind("SUPER + SHIFT + ALT + G", "WhatsApp", { webapp = "https://web.whatsapp.com/", focus = true })
o.bind( "SUPER + SHIFT + CTRL + G", "Google Messages", { webapp = "https://messages.google.com/web/conversations", focus = true })
o.bind("SUPER + SHIFT + P", "Google Photos", { webapp = "https://photos.google.com/", focus = true })
o.bind("SUPER + SHIFT + S", "Google Maps", { webapp = "https://maps.google.com/", focus = true })
o.bind("SUPER + SHIFT + X", "X", { webapp = "https://x.com/" })
o.bind("SUPER + SHIFT + ALT + X", "X Post", { webapp = "https://x.com/compose/post" })
end end
-5
View File
@@ -19,11 +19,6 @@ kbd-layout-viewer5
kcm_fcitx5 kcm_fcitx5
kcm_kaccounts kcm_kaccounts
kvantummanager kvantummanager
libreoffice-base
libreoffice-draw
libreoffice-math
libreoffice-startcenter
libreoffice-xsltfilter
limine-snapper-restore limine-snapper-restore
lstopo lstopo
org.fcitx.Fcitx5 org.fcitx.Fcitx5
-3
View File
@@ -1,7 +1,6 @@
# Omarchy core package list pacstrapped by the ISO. # Omarchy core package list pacstrapped by the ISO.
# The ISO builder also reads this file when constructing the offline mirror. # The ISO builder also reads this file when constructing the offline mirror.
aether
alsa-utils alsa-utils
asdcontrol asdcontrol
avahi avahi
@@ -74,7 +73,6 @@ less
libsecret libsecret
libvips libvips
libyaml libyaml
libreoffice-fresh
llvm llvm
localsend localsend
lua51 lua51
@@ -93,7 +91,6 @@ noto-fonts-cjk
noto-fonts-emoji noto-fonts-emoji
nss-mdns nss-mdns
nvim nvim
obs-studio
obsidian obsidian
omacalc omacalc
omacut omacut
@@ -1,32 +0,0 @@
#!/bin/bash
set -euo pipefail
source "$(dirname "${BASH_SOURCE[0]}")/base-test.sh"
require_command node
# A keyless unpacked extension gets a path-derived id, so its settings — and
# any shortcut registrations it may grow — would go stale if its load path or
# packaging ever changed. The pinned key keeps the id stable everywhere.
whatsapp_slim_id=$(node - <<'JS' "$ROOT/default/chromium/extensions/whatsapp-slim/manifest.json"
const crypto = require('crypto')
const fs = require('fs')
const manifest = JSON.parse(fs.readFileSync(process.argv[2], 'utf8'))
const hash = crypto.createHash('sha256').update(Buffer.from(manifest.key, 'base64')).digest()
const alphabet = 'abcdefghijklmnop'
let id = ''
for (const byte of hash.subarray(0, 16)) {
id += alphabet[byte >> 4]
id += alphabet[byte & 0x0f]
}
process.stdout.write(id)
JS
)
[[ $whatsapp_slim_id == "amhpgjbcfakkmkeojmoaoiochhifohdi" ]] ||
fail "whatsapp-slim extension manifest has the stable id" "$whatsapp_slim_id"
pass "whatsapp-slim extension manifest has the stable id"
-30
View File
@@ -1,30 +0,0 @@
#!/bin/bash
source "$(dirname "${BASH_SOURCE[0]}")/base-test.sh"
require_command jq
require_command node
EXT_DIR="$ROOT/default/chromium/extensions/whatsapp-slim"
jq -e '
.content_scripts[0].js == ["system-theme.js"] and
.content_scripts[0].run_at == "document_start"
' "$EXT_DIR/manifest.json" >/dev/null || fail "WhatsApp enables system theming before startup"
mode=$(node - "$EXT_DIR/system-theme.js" <<'JS'
const fs = require("fs")
const values = new Map()
let reloaded = false
global.localStorage = {
getItem: key => values.get(key),
setItem: (key, value) => values.set(key, value),
}
global.location = { reload: () => { reloaded = true } }
eval(fs.readFileSync(process.argv[2], "utf8"))
process.stdout.write(`${values.get("system-theme-mode")}:${reloaded}`)
JS
)
[[ $mode == "true:true" ]] || fail "WhatsApp selects its system theme mode" "$mode"
pass "WhatsApp follows the system theme through its existing slim extension"