Repair Copy URL shortcut during Quattro upgrade
This commit is contained in:
@@ -1709,6 +1709,62 @@ CHROMIUM_FLAGS_PATCH_PY
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repair_chromium_copy_url_shortcuts() {
|
||||||
|
local profile_root preferences
|
||||||
|
local -a profile_roots=(
|
||||||
|
"$HOME/.config/chromium"
|
||||||
|
"$HOME/.config/google-chrome"
|
||||||
|
"$HOME/.config/google-chrome-beta"
|
||||||
|
"$HOME/.config/BraveSoftware/Brave-Browser"
|
||||||
|
"$HOME/.config/BraveSoftware/Brave-Browser-Beta"
|
||||||
|
"$HOME/.config/microsoft-edge"
|
||||||
|
"$HOME/.config/microsoft-edge-beta"
|
||||||
|
"$HOME/.config/vivaldi"
|
||||||
|
"$HOME/.config/opera"
|
||||||
|
"$HOME/.config/helium"
|
||||||
|
)
|
||||||
|
|
||||||
|
for profile_root in "${profile_roots[@]}"; do
|
||||||
|
[[ -d $profile_root ]] || continue
|
||||||
|
|
||||||
|
for preferences in "$profile_root"/*/Preferences; do
|
||||||
|
[[ -f $preferences ]] || continue
|
||||||
|
grep -qF 'bocglpkldciamkbmlphanhkfnhpmnbma' "$preferences" || continue
|
||||||
|
|
||||||
|
python3 - "$preferences" "$preferences.omarchy-upgrade-to-quattro.$BACKUP_SUFFIX.bak" <<'CHROMIUM_SHORTCUTS_PATCH_PY'
|
||||||
|
import json
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
path = Path(sys.argv[1])
|
||||||
|
backup_path = Path(sys.argv[2])
|
||||||
|
old_id = "bocglpkldciamkbmlphanhkfnhpmnbma"
|
||||||
|
new_id = "bgpiichlckmfanooecilcjemknkcpngb"
|
||||||
|
preferences = json.loads(path.read_text())
|
||||||
|
extensions = preferences.get("extensions", {})
|
||||||
|
commands = extensions.get("commands", {})
|
||||||
|
changed = False
|
||||||
|
|
||||||
|
for command in commands.values():
|
||||||
|
if command.get("extension") == old_id and command.get("command_name") == "copy-url":
|
||||||
|
command["extension"] = new_id
|
||||||
|
changed = True
|
||||||
|
|
||||||
|
if changed:
|
||||||
|
settings = extensions.get("settings", {})
|
||||||
|
old_command = settings.get(old_id, {}).get("commands", {}).get("copy-url", {})
|
||||||
|
new_command = settings.get(new_id, {}).get("commands", {}).get("copy-url", {})
|
||||||
|
old_command.pop("was_assigned", None)
|
||||||
|
if new_command:
|
||||||
|
new_command["was_assigned"] = True
|
||||||
|
shutil.copy2(path, backup_path)
|
||||||
|
path.write_text(json.dumps(preferences, separators=(",", ":")))
|
||||||
|
CHROMIUM_SHORTCUTS_PATCH_PY
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
repair_sleep_lock_unit_override() {
|
repair_sleep_lock_unit_override() {
|
||||||
local unit="$HOME/.config/systemd/user/omarchy-sleep-lock.service"
|
local unit="$HOME/.config/systemd/user/omarchy-sleep-lock.service"
|
||||||
local legacy_exec='ExecStart=%h/.local/share/omarchy/bin/omarchy-system-sleep-monitor'
|
local legacy_exec='ExecStart=%h/.local/share/omarchy/bin/omarchy-system-sleep-monitor'
|
||||||
@@ -1805,6 +1861,7 @@ copy_missing_config_defaults "$root/config" "$HOME/.config"
|
|||||||
mark_removed_preinstalls_from_legacy_bindings
|
mark_removed_preinstalls_from_legacy_bindings
|
||||||
copy_always_config_defaults
|
copy_always_config_defaults
|
||||||
repair_chromium_copy_url_extension_flags
|
repair_chromium_copy_url_extension_flags
|
||||||
|
repair_chromium_copy_url_shortcuts
|
||||||
|
|
||||||
# Carry over user-added backgrounds from the legacy git checkout backup, then
|
# Carry over user-added backgrounds from the legacy git checkout backup, then
|
||||||
# remove old symlinks that pointed ~/.config/omarchy/themes/* back into the
|
# remove old symlinks that pointed ~/.config/omarchy/themes/* back into the
|
||||||
@@ -1871,7 +1928,7 @@ repair_sleep_lock_unit_override
|
|||||||
install_bash_startup
|
install_bash_startup
|
||||||
|
|
||||||
unset rel file backup retired_config_files always_copy_config_files uwsm_env known_config_default_hashes_by_key
|
unset rel file backup retired_config_files always_copy_config_files uwsm_env known_config_default_hashes_by_key
|
||||||
unset -f file_sha256 known_config_default_hashes default_hash_paths is_known_default_hash backup_config_file migrate_uwsm_env_customizations is_retired_config_file copy_config_default copy_missing_config_defaults refresh_known_config_defaults mark_removed_preinstalls_from_legacy_bindings copy_always_config_defaults repair_chromium_copy_url_extension_flags repair_sleep_lock_unit_override is_known_bashrc_default install_bash_startup
|
unset -f file_sha256 known_config_default_hashes default_hash_paths is_known_default_hash backup_config_file migrate_uwsm_env_customizations is_retired_config_file copy_config_default copy_missing_config_defaults refresh_known_config_defaults mark_removed_preinstalls_from_legacy_bindings copy_always_config_defaults repair_chromium_copy_url_extension_flags repair_chromium_copy_url_shortcuts repair_sleep_lock_unit_override is_known_bashrc_default install_bash_startup
|
||||||
|
|
||||||
mkdir -p "$HOME/.agents/skills" "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.pi/agent/skills"
|
mkdir -p "$HOME/.agents/skills" "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.pi/agent/skills"
|
||||||
if [[ -d $root/default/omarchy-skill ]]; then
|
if [[ -d $root/default/omarchy-skill ]]; then
|
||||||
|
|||||||
@@ -4,6 +4,13 @@ source "$(dirname "${BASH_SOURCE[0]}")/base-test.sh"
|
|||||||
|
|
||||||
export PATH="$ROOT/bin:$PATH"
|
export PATH="$ROOT/bin:$PATH"
|
||||||
|
|
||||||
|
TMPDIR=""
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
[[ -n $TMPDIR && -d $TMPDIR ]] && rm -rf "$TMPDIR"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
require_command jq
|
require_command jq
|
||||||
require_command node
|
require_command node
|
||||||
|
|
||||||
@@ -28,3 +35,37 @@ JS
|
|||||||
[[ $copy_url_id == "bgpiichlckmfanooecilcjemknkcpngb" ]] ||
|
[[ $copy_url_id == "bgpiichlckmfanooecilcjemknkcpngb" ]] ||
|
||||||
fail "copy-url extension manifest has the stable id" "$copy_url_id"
|
fail "copy-url extension manifest has the stable id" "$copy_url_id"
|
||||||
pass "copy-url extension manifest has the stable id"
|
pass "copy-url extension manifest has the stable id"
|
||||||
|
|
||||||
|
TMPDIR=$(mktemp -d)
|
||||||
|
preferences="$TMPDIR/Preferences"
|
||||||
|
backup="$TMPDIR/Preferences.bak"
|
||||||
|
patch_script="$TMPDIR/repair-shortcuts.py"
|
||||||
|
|
||||||
|
awk '
|
||||||
|
/<<'\''CHROMIUM_SHORTCUTS_PATCH_PY'\''/ { copying = 1; next }
|
||||||
|
copying && $0 == "CHROMIUM_SHORTCUTS_PATCH_PY" { exit }
|
||||||
|
copying { print }
|
||||||
|
' "$ROOT/bin/omarchy-upgrade-to-quattro" >"$patch_script"
|
||||||
|
|
||||||
|
cat >"$preferences" <<'JSON'
|
||||||
|
{"extensions":{"commands":{"linux:Alt+Shift+L":{"command_name":"copy-url","extension":"bocglpkldciamkbmlphanhkfnhpmnbma","global":false},"linux:Alt+Shift+D":{"command_name":"download-video","extension":"dedjgknigfeelejglamclffonmophnfl","global":false}},"settings":{"bocglpkldciamkbmlphanhkfnhpmnbma":{"commands":{"copy-url":{"suggested_key":"Alt+Shift+L","was_assigned":true}}},"bgpiichlckmfanooecilcjemknkcpngb":{"commands":{"copy-url":{"suggested_key":"Alt+Shift+L"}}}}}}
|
||||||
|
JSON
|
||||||
|
|
||||||
|
python3 "$patch_script" "$preferences" "$backup"
|
||||||
|
|
||||||
|
jq -e '
|
||||||
|
.extensions.commands["linux:Alt+Shift+L"].extension == "bgpiichlckmfanooecilcjemknkcpngb" and
|
||||||
|
.extensions.commands["linux:Alt+Shift+D"].extension == "dedjgknigfeelejglamclffonmophnfl" and
|
||||||
|
(.extensions.settings.bocglpkldciamkbmlphanhkfnhpmnbma.commands["copy-url"] | has("was_assigned") | not) and
|
||||||
|
.extensions.settings.bgpiichlckmfanooecilcjemknkcpngb.commands["copy-url"].was_assigned == true
|
||||||
|
' "$preferences" >/dev/null || fail "quattro upgrade moves the Copy URL shortcut to the stable extension id"
|
||||||
|
cmp -s "$backup" <(printf '%s\n' '{"extensions":{"commands":{"linux:Alt+Shift+L":{"command_name":"copy-url","extension":"bocglpkldciamkbmlphanhkfnhpmnbma","global":false},"linux:Alt+Shift+D":{"command_name":"download-video","extension":"dedjgknigfeelejglamclffonmophnfl","global":false}},"settings":{"bocglpkldciamkbmlphanhkfnhpmnbma":{"commands":{"copy-url":{"suggested_key":"Alt+Shift+L","was_assigned":true}}},"bgpiichlckmfanooecilcjemknkcpngb":{"commands":{"copy-url":{"suggested_key":"Alt+Shift+L"}}}}}}') ||
|
||||||
|
fail "quattro upgrade backs up Chromium preferences before shortcut repair"
|
||||||
|
pass "quattro upgrade repairs and backs up the Copy URL shortcut"
|
||||||
|
|
||||||
|
unchanged_hash=$(sha256sum "$preferences" | cut -d' ' -f1)
|
||||||
|
rm "$backup"
|
||||||
|
python3 "$patch_script" "$preferences" "$backup"
|
||||||
|
[[ $(sha256sum "$preferences" | cut -d' ' -f1) == "$unchanged_hash" && ! -e $backup ]] ||
|
||||||
|
fail "Copy URL shortcut repair is idempotent"
|
||||||
|
pass "Copy URL shortcut repair is idempotent"
|
||||||
|
|||||||
Reference in New Issue
Block a user