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
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 22 KiB |
@@ -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 \
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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 \
|
||||||
|
|||||||
@@ -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"
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
|
||||||
@@ -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"
|
|
||||||