diff --git a/bin/omarchy-drive-set-password b/bin/omarchy-drive-set-password index baf4d1ba..cac42d58 100755 --- a/bin/omarchy-drive-set-password +++ b/bin/omarchy-drive-set-password @@ -5,7 +5,7 @@ encrypted_drives=$(blkid -t TYPE=crypto_LUKS -o device) if [[ -n $encrypted_drives ]]; then - if (( $(wc -l <</dev/null; then update-desktop-database "$APP_DIR" &>/dev/null || true fi +omarchy-restart-walker + echo "Web apps removed successfully." diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 90003fbe..b17347b1 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -10,7 +10,7 @@ bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop" -bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime" +bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian" bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password diff --git a/config/obsidian/user-flags.conf b/config/obsidian/user-flags.conf new file mode 100644 index 00000000..2f9cc082 --- /dev/null +++ b/config/obsidian/user-flags.conf @@ -0,0 +1,3 @@ +# Obsidian reads this file through the Arch package wrapper. +-disable-gpu +--enable-wayland-ime diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 20fee804..4daf95a0 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -8,7 +8,7 @@ bindd = SUPER, N, Neovim, exec, $terminal -e nvim bindd = SUPER, T, Top, exec, $terminal -e btop bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker bindd = SUPER, G, Messenger, exec, $messenger -bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu +bindd = SUPER, O, Obsidian, exec, obsidian bindd = SUPER, SLASH, Password manager, exec, $passwordManager source = ~/.local/share/omarchy/default/hypr/bindings/media.conf diff --git a/default/limine/limine.conf b/default/limine/limine.conf index 9868fbc7..787d7053 100644 --- a/default/limine/limine.conf +++ b/default/limine/limine.conf @@ -2,7 +2,7 @@ #timeout: 3 default_entry: 2 interface_branding: Omarchy Bootloader -interface_branding_color: 2 +interface_branding_color: 9ece6a hash_mismatch_panic: no term_background: 1a1b26 diff --git a/install/config/hardware/fix-bcm43xx.sh b/install/config/hardware/fix-bcm43xx.sh index f6e0f18b..a788d6f9 100644 --- a/install/config/hardware/fix-bcm43xx.sh +++ b/install/config/hardware/fix-bcm43xx.sh @@ -2,7 +2,7 @@ # - BCM4360 (2013–2015 MacBooks) # - BCM4331 (2012, early 2013 MacBooks) -pci_info=$(lspci -nnv) +pci_info=$(lspci -nn) if (echo "$pci_info" | grep -q "14e4:43a0" || echo "$pci_info" | grep -q "14e4:4331"); then echo "BCM4360 / BCM4331 detected" diff --git a/install/config/hardware/intel/ptl-kernel.sh b/install/config/hardware/intel/ptl-kernel.sh index 0e34def4..d914cf25 100644 --- a/install/config/hardware/intel/ptl-kernel.sh +++ b/install/config/hardware/intel/ptl-kernel.sh @@ -1,8 +1,8 @@ -# Install Panther Lake kernel for Intel Panther Lake systems +# Install Panther Lake kernel for Dell XPS Panther Lake systems # The linux-ptl kernel includes audio driver patches not yet in mainline. -if omarchy-hw-intel-ptl; then - echo "Detected Intel Panther Lake, installing PTL kernel..." +if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl; then + echo "Detected Dell XPS Panther Lake, installing PTL kernel..." omarchy-pkg-add linux-ptl linux-ptl-headers for pkg in linux linux-headers; do @@ -10,8 +10,8 @@ if omarchy-hw-intel-ptl; then done sudo mkdir -p /etc/limine-entry-tool.d - cat </dev/null -# Only show Panther Lake kernel in boot menu + cat </dev/null +# Only show Panther Lake kernel in boot menu on Dell XPS Panther Lake BOOT_ORDER="linux-ptl*, *fallback, Snapshots" EOF fi diff --git a/install/config/theme.sh b/install/config/theme.sh index 0dab91ad..83e2b8dd 100644 --- a/install/config/theme.sh +++ b/install/config/theme.sh @@ -5,6 +5,14 @@ sudo ln -snf /usr/share/icons/Adwaita/symbolic/actions/go-next-symbolic.svg /usr # Setup user theme folder mkdir -p ~/.config/omarchy/themes +# Add managed policy directories for Chromium and Brave for theme changes. +# Must exist before the first omarchy-theme-set, which writes color.json into them. +sudo mkdir -p /etc/chromium/policies/managed +sudo chmod a+rw /etc/chromium/policies/managed + +sudo mkdir -p /etc/brave/policies/managed +sudo chmod a+rw /etc/brave/policies/managed + # Set initial theme omarchy-theme-set "Tokyo Night" rm -rf ~/.config/chromium/SingletonLock # otherwise archiso will own the chromium singleton @@ -16,12 +24,5 @@ ln -snf ~/.config/omarchy/current/theme/btop.theme ~/.config/btop/themes/current mkdir -p ~/.config/mako ln -snf ~/.config/omarchy/current/theme/mako.ini ~/.config/mako/config -# Add managed policy directories for Chromium and Brave for theme changes -sudo mkdir -p /etc/chromium/policies/managed -sudo chmod a+rw /etc/chromium/policies/managed - -sudo mkdir -p /etc/brave/policies/managed -sudo chmod a+rw /etc/brave/policies/managed - # Default Chromium to follow system appearance ("device") instead of dark echo '{"browser":{"theme":{"color_scheme":0,"color_scheme2":0}}}' | sudo tee /usr/lib/chromium/initial_preferences >/dev/null diff --git a/install/login/limine-snapper.sh b/install/login/limine-snapper.sh index d588f43f..06d8f93e 100644 --- a/install/login/limine-snapper.sh +++ b/install/login/limine-snapper.sh @@ -1,6 +1,4 @@ if command -v limine &>/dev/null; then - sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook - sudo tee /etc/mkinitcpio.conf.d/omarchy_hooks.conf </dev/null HOOKS=(base udev plymouth keyboard autodetect microcode modconf kms keymap consolefont block encrypt filesystems fsck btrfs-overlayfs) EOF @@ -29,6 +27,10 @@ EOF CMDLINE=$(grep "^[[:space:]]*cmdline:" "$limine_config" | head -1 | sed 's/^[[:space:]]*cmdline:[[:space:]]*//') + # Write /etc/default/limine *before* installing limine-mkinitcpio-hook, whose + # post-transaction deploy hook runs limine-install and reads this file. Without + # it, ESP_PATH falls back to bootctl, which in a chroot prints a warning that + # gets captured as the path and trips a spurious "invalid ESP" error. sudo cp $OMARCHY_PATH/default/limine/default.conf /etc/default/limine sudo sed -i "s|@@CMDLINE@@|$CMDLINE|g" /etc/default/limine @@ -42,7 +44,8 @@ EOF sudo sed -i '/^ENABLE_UKI=/d; /^ENABLE_LIMINE_FALLBACK=/d' /etc/default/limine fi - # Remove the original config file if it's not /boot/limine.conf + # Remove the original config file if it's not /boot/limine.conf, so the deploy + # hook doesn't see conflicting configs on the same ESP. if [[ $limine_config != "/boot/limine.conf" ]] && [[ -f $limine_config ]]; then sudo rm "$limine_config" fi @@ -50,6 +53,8 @@ EOF # We overwrite the whole thing knowing the limine-update will add the entries for us sudo cp $OMARCHY_PATH/default/limine/limine.conf /boot/limine.conf + sudo pacman -S --noconfirm --needed limine-snapper-sync limine-mkinitcpio-hook + # Only snapshot root — /home is user data; rolling it back loses user work if ! sudo snapper list-configs 2>/dev/null | grep -q "root"; then sudo snapper -c root create-config / diff --git a/install/omarchy-other.packages b/install/omarchy-other.packages index 74ff6474..a68ecd30 100644 --- a/install/omarchy-other.packages +++ b/install/omarchy-other.packages @@ -12,11 +12,8 @@ egl-wayland git gst-plugin-pipewire gtk4-layer-shell -htop -intltool jdk-openjdk libpulse -libsass intel-ipu7-camera intel-lpmd intel-media-driver @@ -43,11 +40,9 @@ pipewire-alsa pipewire-jack pipewire-pulse qt6-wayland -sassc snapper thermald webp-pixbuf-loader -wget yay-debug tuxedo-drivers-nocompatcheck-dkms yt6801-dkms diff --git a/migrations/1776434586.sh b/migrations/1776434586.sh new file mode 100644 index 00000000..4caa0aa7 --- /dev/null +++ b/migrations/1776434586.sh @@ -0,0 +1,29 @@ +echo "Move Obsidian flags from Hyprland binding to Obsidian user flags" + +OBSIDIAN_FLAGS_FILE="$HOME/.config/obsidian/user-flags.conf" +OBSIDIAN_DEFAULT_FLAGS_FILE="$OMARCHY_PATH/config/obsidian/user-flags.conf" + +mkdir -p "$(dirname "$OBSIDIAN_FLAGS_FILE")" + +if [[ ! -f $OBSIDIAN_FLAGS_FILE ]]; then + cp "$OBSIDIAN_DEFAULT_FLAGS_FILE" "$OBSIDIAN_FLAGS_FILE" +else + missing_flags=$(grep -vE '^(#|$)' "$OBSIDIAN_DEFAULT_FLAGS_FILE" | grep -vxFf "$OBSIDIAN_FLAGS_FILE" || true) + + if [[ -n $missing_flags ]]; then + { + echo + echo "# Added by Omarchy migration 1776434586: Obsidian launch flags moved from Hyprland binding." + printf "%s\n" "$missing_flags" + } >>"$OBSIDIAN_FLAGS_FILE" + fi +fi + +if [[ -f ~/.config/hypr/bindings.conf ]]; then + sed -i '/Obsidian, exec/ { + s/ -disable-gpu//g + s/ --disable-gpu//g + s/ --enable-wayland-ime//g + s/"uwsm app -- obsidian/"uwsm-app -- obsidian/g + }' ~/.config/hypr/bindings.conf +fi diff --git a/migrations/1777511459.sh b/migrations/1777511459.sh new file mode 100644 index 00000000..b8fcb78a --- /dev/null +++ b/migrations/1777511459.sh @@ -0,0 +1,36 @@ +echo "Replace deprecated sainnhe.everforest VSCode extension with reesew.everforest-theme" + +# Background: +# The original "sainnhe.everforest" extension is no longer maintained — its +# upstream repo (https://github.com/sainnhe/everforest-vscode) was archived +# by the author, so it receives no updates or fixes. +# "reesew.everforest-theme" is a maintained fork of that same extension, +# published from https://github.com/reese/everforest-vscode, and is the +# replacement we now ship in themes/everforest/vscode.json. + + +# For each VS Code variant, uninstall the old extension and re-apply theme if the +# current Omarchy theme is everforest (which will install the new extension automatically). + +uninstall_old_extension() { + local editor_cmd="$1" + + omarchy-cmd-present "$editor_cmd" || return 0 + + if "$editor_cmd" --list-extensions | grep -Fxq "sainnhe.everforest"; then + "$editor_cmd" --uninstall-extension sainnhe.everforest >/dev/null + fi +} + +uninstall_old_extension "code" +uninstall_old_extension "code-insiders" +uninstall_old_extension "codium" +uninstall_old_extension "cursor" + +# If the user is currently on the everforest theme, refresh it so the updated +# vscode.json (with reesew.everforest-theme) is copied into ~/.config/omarchy/current/theme, +# then omarchy-theme-set-vscode (called by the refresh) installs the new extension. +THEME_NAME_PATH="$HOME/.config/omarchy/current/theme.name" +if [[ -f $THEME_NAME_PATH ]] && [[ "$(cat "$THEME_NAME_PATH")" == "everforest" ]]; then + omarchy-theme-refresh +fi diff --git a/migrations/1777570652.sh b/migrations/1777570652.sh new file mode 100644 index 00000000..ebe37936 --- /dev/null +++ b/migrations/1777570652.sh @@ -0,0 +1,5 @@ +echo "Update interface_branding_color for limine 12 (palette index -> RRGGBB)" + +if [[ -f /boot/limine.conf ]]; then + sudo sed -i 's/^interface_branding_color: 2$/interface_branding_color: 9ece6a/' /boot/limine.conf +fi diff --git a/migrations/1777572869.sh b/migrations/1777572869.sh new file mode 100644 index 00000000..b8ffd217 --- /dev/null +++ b/migrations/1777572869.sh @@ -0,0 +1,16 @@ +echo "Restore stock kernel on non-XPS Panther Lake systems" + +if omarchy-hw-intel-ptl && ! omarchy-hw-match "XPS"; then + omarchy-pkg-add linux linux-headers + + for pkg in linux-ptl linux-ptl-headers; do + sudo pacman -Rdd --noconfirm "$pkg" 2>/dev/null || true + done + + sudo rm -f /etc/limine-entry-tool.d/intel-panther-lake.conf + sudo rm -f /etc/limine-entry-tool.d/dell-xps-panther-lake.conf + + if omarchy-cmd-present limine-update; then + sudo limine-update + fi +fi diff --git a/themes/everforest/vscode.json b/themes/everforest/vscode.json index 02b107d0..c584417a 100644 --- a/themes/everforest/vscode.json +++ b/themes/everforest/vscode.json @@ -1,4 +1,4 @@ { "name": "Everforest Dark", - "extension": "sainnhe.everforest" + "extension": "reesew.everforest-theme" }