From eb3bd95fcaf77bbac42031460ba0e653ea0f0899 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 5 Apr 2026 09:37:36 +0200 Subject: [PATCH 01/47] We don't actually ever need this notification --- bin/omarchy-hyprland-monitor-scaling-cycle | 2 -- default/hypr/looknfeel.conf | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/bin/omarchy-hyprland-monitor-scaling-cycle b/bin/omarchy-hyprland-monitor-scaling-cycle index a3b24243..233ec06c 100755 --- a/bin/omarchy-hyprland-monitor-scaling-cycle +++ b/bin/omarchy-hyprland-monitor-scaling-cycle @@ -18,7 +18,5 @@ case "$CURRENT_INT" in *) NEW_SCALE=1 ;; esac -hyprctl keyword misc:disable_scale_notification true hyprctl keyword monitor "$ACTIVE_MONITOR,${WIDTH}x${HEIGHT}@${REFRESH_RATE},auto,$NEW_SCALE" -hyprctl keyword misc:disable_scale_notification false notify-send -u low "󰍹 Display scaling set to ${NEW_SCALE}x" diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index cd3417bd..b73c9548 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -122,6 +122,7 @@ master { misc { disable_hyprland_logo = true disable_splash_rendering = true + disable_scale_notification = true focus_on_activate = true anr_missed_pings = 3 on_focus_under_fullscreen = 1 From 7bef44a4bedee9fb0a3296f9dbe3aec2542b189a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 6 Apr 2026 09:05:02 +0200 Subject: [PATCH 02/47] Prevent spurious hyprland errors during git update --- bin/omarchy-update-git | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/omarchy-update-git b/bin/omarchy-update-git index 42516230..04e428bb 100755 --- a/bin/omarchy-update-git +++ b/bin/omarchy-update-git @@ -6,5 +6,10 @@ echo -e "\e[32mUpdate Omarchy\e[0m" omarchy-update-time +# Suppress Hyprland config errors while git updates default config files mid-pull +hyprctl keyword debug:suppress_errors true &>/dev/null || true + git -C $OMARCHY_PATH pull --autostash git -C $OMARCHY_PATH --no-pager diff --check || git -C $OMARCHY_PATH reset --merge + +hyprctl reload &>/dev/null || true From abace0cbd587778819a21951f60c74b4cf629b27 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 6 Apr 2026 09:36:35 +0200 Subject: [PATCH 03/47] Prevent the need for double sudo --- bin/omarchy-update | 7 +++++++ bin/omarchy-update-perform | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/omarchy-update b/bin/omarchy-update index 76fb755b..a9b2ba8d 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -2,6 +2,13 @@ set -e +# Run the update inside a PTY so pacman/yay keep showing download progress +# while still logging the full session for later analysis. +if [[ -z $OMARCHY_UPDATE_LOGGED ]]; then + script_command=$(printf '%q ' "$0" "$@") + exec env OMARCHY_UPDATE_LOGGED=1 script -qefc "$script_command" "/tmp/omarchy-update.log" +fi + trap 'echo ""; echo -e "\033[0;31mSomething went wrong during the update!\n\nPlease review the output above carefully, correct the error, and retry the update.\n\nIf you need assistance, get help from the community at https://omarchy.org/discord\033[0m"' ERR if [[ $1 == "-y" ]] || omarchy-update-confirm; then diff --git a/bin/omarchy-update-perform b/bin/omarchy-update-perform index 8965c0c2..d98b96c3 100755 --- a/bin/omarchy-update-perform +++ b/bin/omarchy-update-perform @@ -2,13 +2,6 @@ set -e -# Run the update inside a PTY so pacman/yay keep showing download progress -# while still logging the full session for later analysis. -if [[ -z $OMARCHY_UPDATE_LOGGED ]]; then - script_command=$(printf '%q ' "$0" "$@") - exec env OMARCHY_UPDATE_LOGGED=1 script -qefc "$script_command" "/tmp/omarchy-update.log" -fi - # Ensure screensaver/sleep doesn't set in during updates hyprctl dispatch tagwindow +noidle &>/dev/null || true From 29a0663cc1f3eaa3e91b3600912ef110eecaa97b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 7 Apr 2026 09:14:13 +0200 Subject: [PATCH 04/47] Ensure we enable the LPMD service after installing --- install/config/hardware/intel/lpmd.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/config/hardware/intel/lpmd.sh b/install/config/hardware/intel/lpmd.sh index 8fcfccdb..ad8cf374 100644 --- a/install/config/hardware/intel/lpmd.sh +++ b/install/config/hardware/intel/lpmd.sh @@ -6,5 +6,6 @@ if omarchy-hw-intel && omarchy-battery-present; then cpu_model=$(grep -m1 "^model\s*:" /proc/cpuinfo 2>/dev/null | cut -d: -f2 | tr -d ' ') if [[ "$cpu_model" =~ ^(151|154|170|172|183|186|189|191|204)$ ]]; then omarchy-pkg-add intel-lpmd + sudo systemctl enable intel_lpmd.service fi fi From cc3880b99e394436643cedc0246f3f799470169f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 7 Apr 2026 09:15:08 +0200 Subject: [PATCH 05/47] Enable lmpd if installed but not running --- migrations/1775546086.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 migrations/1775546086.sh diff --git a/migrations/1775546086.sh b/migrations/1775546086.sh new file mode 100644 index 00000000..403705ae --- /dev/null +++ b/migrations/1775546086.sh @@ -0,0 +1,5 @@ +echo "Enable Intel LPMD service if installed" + +if pacman -Q intel-lpmd &>/dev/null; then + sudo systemctl enable --now intel_lpmd.service +fi From 3bfed7da3778019bfdf096f80274b4d676afae28 Mon Sep 17 00:00:00 2001 From: Timo Hubois <46505685+timohubois@users.noreply.github.com> Date: Tue, 7 Apr 2026 12:21:39 +0200 Subject: [PATCH 06/47] Merge pull request #5247 from timohubois/feat-mise-node-latest-npx-wrapper Run Omarchy's npx wrappers through mise-managed Node --- bin/omarchy-npx-install | 2 +- migrations/1775236589.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 migrations/1775236589.sh diff --git a/bin/omarchy-npx-install b/bin/omarchy-npx-install index 3c294c7b..2ec926d9 100755 --- a/bin/omarchy-npx-install +++ b/bin/omarchy-npx-install @@ -18,7 +18,7 @@ mkdir -p "$HOME/.local/bin" cat > "$HOME/.local/bin/$command" < Date: Wed, 8 Apr 2026 14:35:52 +0200 Subject: [PATCH 07/47] Setup power profile defaults on first run since that's when the daemon is available --- bin/omarchy-cmd-first-run | 1 + install/config/all.sh | 1 - install/{config => first-run}/powerprofilesctl-rules.sh | 0 install/preflight/first-run-mode.sh | 2 ++ migrations/1769566732.sh | 2 +- 5 files changed, 4 insertions(+), 2 deletions(-) rename install/{config => first-run}/powerprofilesctl-rules.sh (100%) diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-cmd-first-run index 830bef54..a1734cfb 100755 --- a/bin/omarchy-cmd-first-run +++ b/bin/omarchy-cmd-first-run @@ -15,6 +15,7 @@ if [[ -f $FIRST_RUN_MODE ]]; then bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh" bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh" bash "$OMARCHY_PATH/install/first-run/elephant.sh" + bash "$OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh" sudo rm -f /etc/sudoers.d/first-run bash "$OMARCHY_PATH/install/first-run/welcome.sh" diff --git a/install/config/all.sh b/install/config/all.sh index 79383094..37554d42 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -24,7 +24,6 @@ run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh run_logged $OMARCHY_INSTALL/config/input-group.sh run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh run_logged $OMARCHY_INSTALL/config/kernel-modules-hook.sh -run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh run_logged $OMARCHY_INSTALL/config/wifi-powersave-rules.sh run_logged $OMARCHY_INSTALL/config/plocate-ac-only.sh diff --git a/install/config/powerprofilesctl-rules.sh b/install/first-run/powerprofilesctl-rules.sh similarity index 100% rename from install/config/powerprofilesctl-rules.sh rename to install/first-run/powerprofilesctl-rules.sh diff --git a/install/preflight/first-run-mode.sh b/install/preflight/first-run-mode.sh index 536058cc..f56f071b 100644 --- a/install/preflight/first-run-mode.sh +++ b/install/preflight/first-run-mode.sh @@ -10,6 +10,8 @@ $USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl $USER ALL=(ALL) NOPASSWD: /usr/bin/ufw $USER ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker $USER ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache +$USER ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/udev/rules.d/* +$USER ALL=(ALL) NOPASSWD: /usr/bin/udevadm $USER ALL=(ALL) NOPASSWD: SYMLINK_RESOLVED $USER ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP EOF diff --git a/migrations/1769566732.sh b/migrations/1769566732.sh index f2df93c0..1a5256ea 100644 --- a/migrations/1769566732.sh +++ b/migrations/1769566732.sh @@ -1,3 +1,3 @@ echo "Set power profile based on source switching (AC or Battery)" -source $OMARCHY_PATH/install/config/powerprofilesctl-rules.sh +source $OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh From 8ad61cadcb78f8025bfa2f3ba7609175ee377c90 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 9 Apr 2026 09:53:12 +0200 Subject: [PATCH 08/47] Add way to toggle on/off internal display on laptops --- bin/omarchy-hyprland-monitor-internal-toggle | 22 ++++++++++++++++++++ bin/omarchy-menu | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 bin/omarchy-hyprland-monitor-internal-toggle diff --git a/bin/omarchy-hyprland-monitor-internal-toggle b/bin/omarchy-hyprland-monitor-internal-toggle new file mode 100755 index 00000000..325f7589 --- /dev/null +++ b/bin/omarchy-hyprland-monitor-internal-toggle @@ -0,0 +1,22 @@ +#!/bin/bash + +# Toggle the internal laptop display on/off. +# Useful when connected to an external monitor and you want to close the lid +# or just use the external display only. + +INTERNAL=$(hyprctl monitors all -j | jq -r '.[] | select(.name | startswith("eDP")) | .name') + +if [[ -z $INTERNAL ]]; then + notify-send -u low "󰍹 No internal display found" + exit 1 +fi + +DISABLED=$(hyprctl monitors all -j | jq -r --arg m "$INTERNAL" '.[] | select(.name == $m) | .disabled') + +if [[ $DISABLED == "true" ]]; then + hyprctl keyword monitor "$INTERNAL,preferred,auto,auto" + notify-send -u low "󰍹 Internal display on" +else + hyprctl keyword monitor "$INTERNAL,disable" + notify-send -u low "󰍹 Internal display off" +fi diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 53d2b4cf..362e0ef0 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -168,7 +168,7 @@ show_share_menu() { } show_toggle_menu() { - case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in + case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n󰶐 Laptop Display") in *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; @@ -178,6 +178,7 @@ show_toggle_menu() { *Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;; *Gaps*) omarchy-hyprland-window-gaps-toggle ;; *Scaling*) omarchy-hyprland-monitor-scaling-cycle ;; + *Laptop*) omarchy-hyprland-monitor-internal-toggle ;; *) back_to show_trigger_menu ;; esac } From 5fb06d2d77e4f823ba3922e10e31bde1a4947cf7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 9 Apr 2026 09:53:54 +0200 Subject: [PATCH 09/47] Better glyph --- bin/omarchy-menu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 362e0ef0..92fdd952 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -168,7 +168,7 @@ show_share_menu() { } show_toggle_menu() { - case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n󰶐 Laptop Display") in + case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n󰛧 Laptop Display") in *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; From 111307fba3dc3e218efd18ccac3e5ef7247be0c5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 10 Apr 2026 06:10:38 -0400 Subject: [PATCH 10/47] Address the new haptic touchpad in the shipping xps --- bin/omarchy-haptic-touchpad | 5 ++-- bin/omarchy-restart-trackpad | 25 +++++++++++++++---- .../hardware/dell/fix-xps-haptic-touchpad.sh | 2 +- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/bin/omarchy-haptic-touchpad b/bin/omarchy-haptic-touchpad index f800f0d0..f0240116 100755 --- a/bin/omarchy-haptic-touchpad +++ b/bin/omarchy-haptic-touchpad @@ -11,7 +11,6 @@ Trigger protocol used by these Synaptics touchpads. import fcntl, glob, os, struct, sys VENDOR = "06CB" -PRODUCT = "D01A" REPORT_ID = 0x37 INTENSITY = 40 # 0-100 @@ -34,7 +33,7 @@ def find_hidraw(): try: with open(uevent) as f: content = f.read().upper() - if f"0000{VENDOR}" in content and f"0000{PRODUCT}" in content: + if f"0000{VENDOR}" in content: return os.path.join("/dev", os.path.basename(path)) except OSError: continue @@ -46,7 +45,7 @@ def find_touchpad_event(): try: with open(path) as f: name = f.read().strip().upper() - if VENDOR in name and PRODUCT in name and "TOUCHPAD" in name: + if VENDOR in name and "TOUCHPAD" in name: event = path.split("/")[-3] return os.path.join("/dev/input", event) except OSError: diff --git a/bin/omarchy-restart-trackpad b/bin/omarchy-restart-trackpad index 80bdfcfd..4e2d584a 100755 --- a/bin/omarchy-restart-trackpad +++ b/bin/omarchy-restart-trackpad @@ -1,8 +1,23 @@ #!/bin/bash -# Reload the intel_quicki2c driver to fix a dead trackpad. -# The THC (Touch Host Controller) can fail to initialize interrupts -# during boot or after suspend, leaving the trackpad registered but -# not delivering events. +# Reset the trackpad by unbinding and rebinding its driver. +# Covers both driver paths: +# - i2c_hid_acpi (DesignWare I2C, e.g. XPS 14/16 Synaptics trackpad) +# - intel_quicki2c (THC Touch Host Controller) -sudo modprobe -r intel_quicki2c && sudo modprobe intel_quicki2c +# Try i2c_hid_acpi path (DesignWare I2C trackpads) +for dev in /sys/bus/i2c/drivers/i2c_hid_acpi/i2c-*; do + [ -e "$dev" ] || continue + I2C_DEVICE=$(basename "$dev") + echo "Resetting $I2C_DEVICE via i2c_hid_acpi unbind/rebind..." + echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/unbind > /dev/null + sleep 1 + echo "$I2C_DEVICE" | sudo tee /sys/bus/i2c/drivers/i2c_hid_acpi/bind > /dev/null + echo "Done" +done + +# Also try THC path +if lsmod | grep -q intel_quicki2c; then + echo "Reloading intel_quicki2c..." + sudo modprobe -r intel_quicki2c && sudo modprobe intel_quicki2c +fi diff --git a/install/config/hardware/dell/fix-xps-haptic-touchpad.sh b/install/config/hardware/dell/fix-xps-haptic-touchpad.sh index 427f3783..dd079611 100644 --- a/install/config/hardware/dell/fix-xps-haptic-touchpad.sh +++ b/install/config/hardware/dell/fix-xps-haptic-touchpad.sh @@ -1,5 +1,5 @@ # Fix Dell XPS haptic touchpad. -# The Synaptics haptic touchpad (06CB:D01A) uses the HID Manual Trigger +# The Synaptics haptic touchpad (vendor 06CB) uses the HID Manual Trigger # protocol, but the kernel's HID haptic subsystem only supports Auto Trigger. # This sets up a lightweight daemon that monitors touchpad button events and # sends haptic pulses via HID feature reports on the hidraw device. From 5ca74821d49d549abec4cb68af53278cdd6d832a Mon Sep 17 00:00:00 2001 From: Pierre Olivier Martel Date: Fri, 10 Apr 2026 06:24:30 -0400 Subject: [PATCH 11/47] Fix Fcitx5 icon showing up in the waybar (again!) (#5263) * Update Fcitx5 autostart handling * Restart xcompose to apply the changes --- config/autostart/org.fcitx.Fcitx5.desktop | 2 ++ install/config/all.sh | 1 - install/config/remove-fcitx5-autostart.sh | 1 - migrations/1772120972.sh | 3 --- migrations/1775691486.sh | 6 ++++++ 5 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 config/autostart/org.fcitx.Fcitx5.desktop delete mode 100644 install/config/remove-fcitx5-autostart.sh delete mode 100644 migrations/1772120972.sh create mode 100644 migrations/1775691486.sh diff --git a/config/autostart/org.fcitx.Fcitx5.desktop b/config/autostart/org.fcitx.Fcitx5.desktop new file mode 100644 index 00000000..e1e3e173 --- /dev/null +++ b/config/autostart/org.fcitx.Fcitx5.desktop @@ -0,0 +1,2 @@ +[Desktop Entry] +Hidden=true diff --git a/install/config/all.sh b/install/config/all.sh index 37554d42..e7c962be 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -15,7 +15,6 @@ run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh run_logged $OMARCHY_INSTALL/config/docker.sh run_logged $OMARCHY_INSTALL/config/mimetypes.sh run_logged $OMARCHY_INSTALL/config/nautilus-python.sh -run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh run_logged $OMARCHY_INSTALL/config/localdb.sh run_logged $OMARCHY_INSTALL/config/walker-elephant.sh run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh diff --git a/install/config/remove-fcitx5-autostart.sh b/install/config/remove-fcitx5-autostart.sh deleted file mode 100644 index 62cc1790..00000000 --- a/install/config/remove-fcitx5-autostart.sh +++ /dev/null @@ -1 +0,0 @@ -sudo rm -f /etc/xdg/autostart/org.fcitx.Fcitx5.desktop diff --git a/migrations/1772120972.sh b/migrations/1772120972.sh deleted file mode 100644 index 7ef79f37..00000000 --- a/migrations/1772120972.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo "Remove Fcitx5 XDG autostart desktop entry" - -source $OMARCHY_PATH/install/config/remove-fcitx5-autostart.sh diff --git a/migrations/1775691486.sh b/migrations/1775691486.sh new file mode 100644 index 00000000..e6fdf909 --- /dev/null +++ b/migrations/1775691486.sh @@ -0,0 +1,6 @@ +echo "Copy Fcitx5 autostart desktop file to ~/.config/autostart" + +mkdir -p ~/.config/autostart/ +cp "$OMARCHY_PATH/config/autostart/org.fcitx.Fcitx5.desktop" ~/.config/autostart/ + +omarchy-restart-xcompose From 1746a86a7b1acecfde4bbecbab4f0587b586a93a Mon Sep 17 00:00:00 2001 From: Spencer Bull Date: Fri, 10 Apr 2026 05:35:41 -0500 Subject: [PATCH 12/47] Enable Dell XPS Mute Mic Key (#5252) * If on XPS, enable XPS mute mic key with LED and fallback to original mic mute flow * fix hardcode of alsa card 0 to resolved id * Extract omarchy-hyprland-monitor-focused * Extract dedicated xps mute script --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-cmd-audio-switch | 2 +- bin/omarchy-cmd-mic-mute | 9 ++++++ bin/omarchy-cmd-mic-mute-xps | 44 ++++++++++++++++++++++++++++ bin/omarchy-hyprland-monitor-focused | 5 ++++ bin/omarchy-launch-screensaver | 3 +- bin/omarchy-swayosd-brightness | 2 +- bin/omarchy-swayosd-kbd-brightness | 2 +- default/hypr/bindings/media.conf | 4 +-- 8 files changed, 64 insertions(+), 7 deletions(-) create mode 100755 bin/omarchy-cmd-mic-mute create mode 100755 bin/omarchy-cmd-mic-mute-xps create mode 100755 bin/omarchy-hyprland-monitor-focused diff --git a/bin/omarchy-cmd-audio-switch b/bin/omarchy-cmd-audio-switch index 1cb51086..de81cc3f 100755 --- a/bin/omarchy-cmd-audio-switch +++ b/bin/omarchy-cmd-audio-switch @@ -2,7 +2,7 @@ # Switch between audio outputs while preserving the mute status. By default mapped to Super + Mute. -focused_monitor="$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" +focused_monitor=$(omarchy-hyprland-monitor-focused) sinks=$(pactl -f json list sinks | jq '[.[] | select((.ports | length == 0) or ([.ports[]? | .availability != "not available"] | any))]') sinks_count=$(echo "$sinks" | jq '. | length') diff --git a/bin/omarchy-cmd-mic-mute b/bin/omarchy-cmd-mic-mute new file mode 100755 index 00000000..7f10fa94 --- /dev/null +++ b/bin/omarchy-cmd-mic-mute @@ -0,0 +1,9 @@ +#!/bin/bash + +# Toggle microphone mute. Dell XPS systems get special handling for the hardware LED. + +if omarchy-hw-match "XPS"; then + omarchy-cmd-mic-mute-xps +else + swayosd-client --monitor "$(omarchy-hyprland-monitor-focused)" --input-volume mute-toggle +fi diff --git a/bin/omarchy-cmd-mic-mute-xps b/bin/omarchy-cmd-mic-mute-xps new file mode 100755 index 00000000..8e7ca135 --- /dev/null +++ b/bin/omarchy-cmd-mic-mute-xps @@ -0,0 +1,44 @@ +#!/bin/bash + +# Toggle microphone mute on Dell XPS systems. Uses wpctl for reliable toggling +# and syncs the ALSA capture switch so the hardware mic mute LED follows state. + +wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle >/dev/null + +if pactl get-source-mute @DEFAULT_SOURCE@ | rg -q 'yes'; then + alsa_value='off,off' + osd_message='Microphone muted' + osd_icon='microphone-sensitivity-muted-symbolic' +else + alsa_value='on,on' + osd_message='Microphone on' + osd_icon='audio-input-microphone-symbolic' +fi + +if [[ -e /sys/class/leds/platform::micmute/brightness ]]; then + default_source=$(pactl get-default-source) + alsa_card=$(pactl -f json list sources | jq -r --arg source "$default_source" ' + .[] | select(.name == $source) | + .properties["alsa.card"] // .properties["api.alsa.card"] // .properties["api.alsa.pcm.card"] // empty + ' | head -1) + + if [[ -n $alsa_card ]]; then + cards=("$alsa_card") + else + mapfile -t cards < <(compgen -G '/proc/asound/card*' | rg -o 'card[0-9]+' | sed 's/card//' | sort -u) + fi + + for card in "${cards[@]}"; do + while IFS= read -r control; do + if [[ $control != *"Jack Microphone"* ]]; then + amixer -c "$card" cset "$control" "$alsa_value" >/dev/null 2>&1 || true + break 2 + fi + done < <(amixer -c "$card" controls 2>/dev/null | rg -o "name='[^']*Microphone Capture Switch'") + done +fi + +swayosd-client \ + --monitor "$(omarchy-hyprland-monitor-focused)" \ + --custom-message "$osd_message" \ + --custom-icon "$osd_icon" diff --git a/bin/omarchy-hyprland-monitor-focused b/bin/omarchy-hyprland-monitor-focused new file mode 100755 index 00000000..2b4b8eea --- /dev/null +++ b/bin/omarchy-hyprland-monitor-focused @@ -0,0 +1,5 @@ +#!/bin/bash + +# Print the name of the currently focused Hyprland monitor. + +hyprctl monitors -j | jq -r '.[] | select(.focused == true).name' diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 03d1159a..7ce8d54e 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -18,7 +18,6 @@ fi # Silently quit Walker on overlay walker -q -focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') terminal=$(xdg-terminal-exec --print-id) for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do @@ -51,4 +50,4 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do esac done -hyprctl dispatch focusmonitor $focused +hyprctl dispatch focusmonitor $(omarchy-hyprland-monitor-focused) diff --git a/bin/omarchy-swayosd-brightness b/bin/omarchy-swayosd-brightness index 1fb492a1..0dbe44d2 100755 --- a/bin/omarchy-swayosd-brightness +++ b/bin/omarchy-swayosd-brightness @@ -9,7 +9,7 @@ progress="$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')" [[ $progress == "0.00" ]] && progress="0.01" swayosd-client \ - --monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \ + --monitor "$(omarchy-hyprland-monitor-focused)" \ --custom-icon display-brightness \ --custom-progress "$progress" \ --custom-progress-text "${percent}%" diff --git a/bin/omarchy-swayosd-kbd-brightness b/bin/omarchy-swayosd-kbd-brightness index 4c0a30bb..bf51d749 100755 --- a/bin/omarchy-swayosd-kbd-brightness +++ b/bin/omarchy-swayosd-kbd-brightness @@ -9,7 +9,7 @@ progress="$(awk -v p="$percent" 'BEGIN{printf "%.2f", p/100}')" [[ $progress == "0.00" ]] && progress="0.01" swayosd-client \ - --monitor "$(hyprctl monitors -j | jq -r '.[]|select(.focused==true).name')" \ + --monitor "$(omarchy-hyprland-monitor-focused)" \ --custom-icon keyboard-brightness \ --custom-progress "$progress" \ --custom-progress-text "${percent}%" diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index 9506ff41..88763037 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -1,11 +1,11 @@ # Only display the OSD on the currently focused monitor -$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" +$osdclient = swayosd-client --monitor "$(omarchy-hyprland-monitor-focused)" # Laptop multimedia keys for volume and LCD brightness (with OSD) bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle -bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle +bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-cmd-mic-mute bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5% bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%- bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up From c9cc4be4f954b3373e9a0c30e2143d4ff3e7a9df Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 10 Apr 2026 06:37:49 -0400 Subject: [PATCH 13/47] Need to grab this before the loop --- bin/omarchy-launch-screensaver | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 7ce8d54e..aab3cb0e 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -18,6 +18,7 @@ fi # Silently quit Walker on overlay walker -q +focused=$(omarchy-hyprland-monitor-focused) terminal=$(xdg-terminal-exec --print-id) for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do @@ -50,4 +51,4 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do esac done -hyprctl dispatch focusmonitor $(omarchy-hyprland-monitor-focused) +hyprctl dispatch focusmonitor $focused From b2b2903e224bbea6bd3a663e181ba634de217419 Mon Sep 17 00:00:00 2001 From: Robert Stringer <62722976+pipetogrep@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:57:22 +0100 Subject: [PATCH 14/47] Skip starship init for dumb bash sessions (#5255) --- default/bash/init | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/bash/init b/default/bash/init index 4c5e6e39..2d363fa7 100644 --- a/default/bash/init +++ b/default/bash/init @@ -2,7 +2,7 @@ if command -v mise &> /dev/null; then eval "$(mise activate bash)" fi -if command -v starship &> /dev/null; then +if [[ $- == *i* ]] && [[ ${TERM:-} != "dumb" ]] && command -v starship &> /dev/null; then eval "$(starship init bash)" fi From 429b99dc507cc7bdcd80a8fd6d344309bb5df66c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Apr 2026 18:01:45 -0400 Subject: [PATCH 15/47] PSR1 is introducing lag/stutters CC @spencerbull --- install/config/hardware/dell/fix-xps-ptl-display.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install/config/hardware/dell/fix-xps-ptl-display.sh b/install/config/hardware/dell/fix-xps-ptl-display.sh index 6bd18c2e..17941e2c 100644 --- a/install/config/hardware/dell/fix-xps-ptl-display.sh +++ b/install/config/hardware/dell/fix-xps-ptl-display.sh @@ -1,21 +1,21 @@ # Fix display issues on Dell XPS 2026+ with LG OLED panel and Intel Panther Lake (Xe3) GPU. -# Power-saving features cause the screen to run at 10hz. +# Power-saving features (PSR and Panel Replay) cause freezes and display glitches. if omarchy-hw-match "XPS" \ && omarchy-hw-intel-ptl \ && test "$(od -An -tx1 -j8 -N2 /sys/class/drm/card*-eDP-*/edid 2>/dev/null | tr -d ' \n')" = "30e4"; then echo "Detected Dell XPS with LG OLED panel on Panther Lake, applying display power-saving fix..." - CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"' + CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0"' sudo mkdir -p /etc/limine-entry-tool.d cat </dev/null -# Fix Dell XPS OLED display issues by disabling Xe PSR2 power-saving feature +# Fix Dell XPS OLED display issues by disabling Xe PSR and Panel Replay power-saving features $CMDLINE EOF # Also append to /etc/default/limine if it exists, since it overrides drop-in configs - if [ -f /etc/default/limine ] && ! grep -q 'xe.enable_panel_replay' /etc/default/limine; then + if [ -f /etc/default/limine ] && ! grep -q 'xe.enable_psr' /etc/default/limine; then echo "$CMDLINE" | sudo tee -a /etc/default/limine >/dev/null fi fi From 4fcc58de2aeed094b2acaeb09197a66055295702 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Apr 2026 18:08:31 -0400 Subject: [PATCH 16/47] Expose omarchy-restart-trackpad Until we have a permanent fix for the haptic trackpad in the XPS. Cc @spencerbull --- bin/omarchy-menu | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 92fdd952..e845681f 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -557,10 +557,11 @@ show_update_config_menu() { } show_update_hardware_menu() { - case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth") in + case $(menu "Restart" " Audio\n󱚾 Wi-Fi\n󰂯 Bluetooth\n󰟸 Trackpad") in *Audio*) present_terminal omarchy-restart-pipewire ;; *Wi-Fi*) present_terminal omarchy-restart-wifi ;; *Bluetooth*) present_terminal omarchy-restart-bluetooth ;; + *Trackpad*) present_terminal omarchy-restart-trackpad ;; *) show_update_menu ;; esac } From 691b11901c8a4e8edb5c3f1c1b1bf1212e83ab1f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Apr 2026 20:09:51 -0400 Subject: [PATCH 17/47] Set device appearance as the default for chromium So we will be switching correctly from light/dark mode depending on the theme. --- install/config/theme.sh | 3 +++ migrations/1775946416.sh | 9 +++++++++ 2 files changed, 12 insertions(+) create mode 100644 migrations/1775946416.sh diff --git a/install/config/theme.sh b/install/config/theme.sh index 8bb3c603..439ec08d 100644 --- a/install/config/theme.sh +++ b/install/config/theme.sh @@ -22,3 +22,6 @@ 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}}}' | sudo tee /usr/lib/chromium/initial_preferences >/dev/null diff --git a/migrations/1775946416.sh b/migrations/1775946416.sh new file mode 100644 index 00000000..8e537976 --- /dev/null +++ b/migrations/1775946416.sh @@ -0,0 +1,9 @@ +echo "Set Chromium appearance mode to device (follow system) by default" + +echo '{"browser":{"theme":{"color_scheme":0}}}' | sudo tee /usr/lib/chromium/initial_preferences >/dev/null + +# Update existing Chromium profiles to use "device" instead of "dark" +PREFS="$HOME/.config/chromium/Default/Preferences" +if [[ -f "$PREFS" ]] && command -v jq &>/dev/null; then + jq '.browser.theme.color_scheme = 0' "$PREFS" > "$PREFS.tmp" && mv "$PREFS.tmp" "$PREFS" +fi From 1732551873aae48a8418595ef9bc3b2cbb756b0c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Apr 2026 20:41:42 -0400 Subject: [PATCH 18/47] Switch from makima to a straight copilot to omarchy menu mapping --- bin/omarchy-menu | 2 -- bin/omarchy-restart-makima | 5 ----- bin/omarchy-setup-makima | 22 ------------------- default/hypr/bindings/utilities.conf | 1 + .../makima/AT Translated Set 2 keyboard.toml | 7 ------ migrations/1775954402.sh | 11 ++++++++++ 6 files changed, 12 insertions(+), 36 deletions(-) delete mode 100755 bin/omarchy-restart-makima delete mode 100755 bin/omarchy-setup-makima delete mode 100644 default/makima/AT Translated Set 2 keyboard.toml create mode 100644 migrations/1775954402.sh diff --git a/bin/omarchy-menu b/bin/omarchy-menu index e845681f..3ee0ea5e 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -222,7 +222,6 @@ show_font_menu() { show_setup_menu() { local options=" Audio\n Wifi\n󰂯 Bluetooth\n󱐋 Power Profile\n System Sleep\n󰍹 Monitors" [[ -f ~/.config/hypr/bindings.conf ]] && options="$options\n Keybindings" - options="$options\n Key Remapping" [[ -f ~/.config/hypr/input.conf ]] && options="$options\n Input" options="$options\n󰱔 DNS\n Security\n Config" @@ -235,7 +234,6 @@ show_setup_menu() { *Monitors*) open_in_editor ~/.config/hypr/monitors.conf ;; *Keybindings*) open_in_editor ~/.config/hypr/bindings.conf ;; *Input*) open_in_editor ~/.config/hypr/input.conf ;; - *Key\ Remapping*) omarchy-setup-makima && open_in_editor "$HOME/.config/makima/AT Translated Set 2 keyboard.toml" && omarchy-restart-makima ;; *DNS*) present_terminal omarchy-setup-dns ;; *Security*) show_setup_security_menu ;; *Config*) show_setup_config_menu ;; diff --git a/bin/omarchy-restart-makima b/bin/omarchy-restart-makima deleted file mode 100755 index aa6ffa39..00000000 --- a/bin/omarchy-restart-makima +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# Restart makima - key remapping service for remapping Copilot key to Omarchy Menu - -sudo systemctl restart makima diff --git a/bin/omarchy-setup-makima b/bin/omarchy-setup-makima deleted file mode 100755 index 707465b4..00000000 --- a/bin/omarchy-setup-makima +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Setup makima - key remapping service for remapping Copilot key to Omarchy Menu - -CONFIG_FILE="$HOME/.config/makima/AT Translated Set 2 keyboard.toml" - -if [[ ! -f $CONFIG_FILE ]]; then - omarchy-pkg-add makima-bin - - mkdir -p "$HOME/.config/makima" - cp "$OMARCHY_PATH/default/makima/AT Translated Set 2 keyboard.toml" "$CONFIG_FILE" - - sudo mkdir -p /etc/systemd/system/makima.service.d - sudo tee /etc/systemd/system/makima.service.d/override.conf >/dev/null </dev/null || true -fi diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 55c293dd..3c3336a1 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -4,6 +4,7 @@ bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu +bindd = SUPER SHIFT, code:201, Omarchy menu (Copilot key), exec, omarchy-menu bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings diff --git a/default/makima/AT Translated Set 2 keyboard.toml b/default/makima/AT Translated Set 2 keyboard.toml deleted file mode 100644 index 895e454f..00000000 --- a/default/makima/AT Translated Set 2 keyboard.toml +++ /dev/null @@ -1,7 +0,0 @@ -# Run omarchy-restart-makima after any changes - -[remap] -KEY_LEFTMETA-KEY_LEFTSHIFT-KEY_F23 = ["KEY_LEFTMETA", "KEY_LEFTALT", "KEY_SPACE"] - -[settings] -GRAB_DEVICE = "true" diff --git a/migrations/1775954402.sh b/migrations/1775954402.sh new file mode 100644 index 00000000..61101d5c --- /dev/null +++ b/migrations/1775954402.sh @@ -0,0 +1,11 @@ +echo "Remove makima key remapping service (Copilot key now handled natively by Hyprland)" + +if systemctl is-enabled makima &>/dev/null; then + sudo systemctl disable --now makima +fi + +sudo rm -rf /etc/systemd/system/makima.service.d +sudo rm -f /etc/udev/rules.d/99-uinput.rules +rm -rf "$HOME/.config/makima" + +omarchy-pkg-drop makima-bin From 8a7c77291e4d988186388a576c075fae2cff5d06 Mon Sep 17 00:00:00 2001 From: Jon Kinney Date: Sun, 12 Apr 2026 20:09:08 -0500 Subject: [PATCH 19/47] Update default repeat_delay to improve holding delete and vim motions In my testing, this is the lowest you can go without causing any issues with double key presses. --- config/hypr/input.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/hypr/input.conf b/config/hypr/input.conf index 5639f2c0..1dd2e075 100644 --- a/config/hypr/input.conf +++ b/config/hypr/input.conf @@ -11,7 +11,7 @@ input { # Change speed of keyboard repeat repeat_rate = 40 - repeat_delay = 600 + repeat_delay = 250 # Start with numlock on by default numlock_by_default = true From 3eee73c0deac546210cb65d92d4be32e8f06639b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Apr 2026 15:59:16 -0700 Subject: [PATCH 20/47] Ensure enable_psr=0 is set for all xps ptl systems --- migrations/1776099290.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 migrations/1776099290.sh diff --git a/migrations/1776099290.sh b/migrations/1776099290.sh new file mode 100644 index 00000000..bd386014 --- /dev/null +++ b/migrations/1776099290.sh @@ -0,0 +1,14 @@ +echo "Add xe.enable_psr=0 to CMDLINE for XPS Panther Lake systems missing it" + +if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl && [ -f /etc/default/limine ]; then + UPDATED=false + + if ! grep -q 'xe.enable_panel_replay' /etc/default/limine; then + echo 'KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"' | sudo tee -a /etc/default/limine >/dev/null + UPDATED=true + fi + + if $UPDATED; then + sudo limine-mkinitcpio + fi +fi From bbe0d34968044309dce346b849e1b73fbe19392d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Apr 2026 16:00:06 -0700 Subject: [PATCH 21/47] Enable correct xe --- migrations/1776099290.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migrations/1776099290.sh b/migrations/1776099290.sh index bd386014..55110301 100644 --- a/migrations/1776099290.sh +++ b/migrations/1776099290.sh @@ -3,8 +3,8 @@ echo "Add xe.enable_psr=0 to CMDLINE for XPS Panther Lake systems missing it" if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl && [ -f /etc/default/limine ]; then UPDATED=false - if ! grep -q 'xe.enable_panel_replay' /etc/default/limine; then - echo 'KERNEL_CMDLINE[default]+=" xe.enable_panel_replay=0"' | sudo tee -a /etc/default/limine >/dev/null + if ! grep -q 'xe.enable_psr' /etc/default/limine; then + echo 'KERNEL_CMDLINE[default]+=" xe.enable_psr=0"' | sudo tee -a /etc/default/limine >/dev/null UPDATED=true fi From a7893c8af46eea024552f8ed1b9c714aebd60dca Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 10:00:49 +0200 Subject: [PATCH 22/47] Catch brave-origin too Closes #5304 Co-authored-by: @Cleptomania --- bin/omarchy-launch-webapp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-launch-webapp b/bin/omarchy-launch-webapp index 607ef6ce..71606efa 100755 --- a/bin/omarchy-launch-webapp +++ b/bin/omarchy-launch-webapp @@ -5,7 +5,7 @@ browser=$(xdg-settings get default-web-browser) case $browser in -google-chrome* | brave-browser* | microsoft-edge* | opera* | vivaldi* | helium*) ;; +google-chrome* | brave* | microsoft-edge* | opera* | vivaldi* | helium*) ;; *) browser="chromium.desktop" ;; esac From 092b16489de1a34b9ab974d832477e829c854165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Victor?= Date: Wed, 15 Apr 2026 05:03:15 -0300 Subject: [PATCH 23/47] Add Logitech MX Keys key bindings (#5301) * Add Logitech MX Keys key bindings * Update config/hypr/bindings.conf Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update config/hypr/bindings.conf Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- config/hypr/bindings.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 62ad87c6..351fbe46 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -32,3 +32,8 @@ bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/c # Overwrite existing bindings, like putting Omarchy Menu on Super + Space # unbind = SUPER, SPACE # bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu + +# Logitech MX Keys +# bind = SUPER SHIFT, S, exec, omarchy-cmd-screenshot # Print Screen Button +# bind = SUPER, H, exec, voxtype record toggle # Dictation Button +# bind = SUPER, PERIOD, exec, omarchy-launch-walker -m symbols # Emoji Button From 0204db05784cabe34bcf0e25d515bbc0b4fbe56c Mon Sep 17 00:00:00 2001 From: Liam Mitchell Date: Wed, 15 Apr 2026 10:07:39 +0200 Subject: [PATCH 24/47] Fix intel video acceleration migration scripts (#5288) --- migrations/1757483378.sh | 2 +- migrations/1772981757.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/migrations/1757483378.sh b/migrations/1757483378.sh index 999e4f06..a0c8d1bb 100644 --- a/migrations/1757483378.sh +++ b/migrations/1757483378.sh @@ -1,4 +1,4 @@ echo "6Ghz Wi-Fi + Intel graphics acceleration for existing installations" bash "$OMARCHY_PATH/install/config/hardware/set-wireless-regdom.sh" -bash "$OMARCHY_PATH/install/config/hardware/intel.sh" +bash "$OMARCHY_PATH/install/config/hardware/intel/video-acceleration.sh" diff --git a/migrations/1772981757.sh b/migrations/1772981757.sh index 145938b6..e19c9301 100644 --- a/migrations/1772981757.sh +++ b/migrations/1772981757.sh @@ -1,5 +1,5 @@ echo "Install Intel GPU hardware acceleration drivers if missing" if lspci | grep -iE 'vga|3d|display' | grep -qi 'intel'; then - source "$OMARCHY_PATH/install/config/hardware/intel.sh" + source "$OMARCHY_PATH/install/config/hardware/intel/video-acceleration.sh" fi From a43915f91da002573c225ef38b8731c725b10640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=BCndel?= Date: Wed, 15 Apr 2026 10:13:37 +0200 Subject: [PATCH 25/47] update btop.conf for v1.4.6 (#5286) --- config/btop/btop.conf | 120 +++++++++++++++++++++++++----------------- 1 file changed, 73 insertions(+), 47 deletions(-) diff --git a/config/btop/btop.conf b/config/btop/btop.conf index c150ea0a..b53509d2 100644 --- a/config/btop/btop.conf +++ b/config/btop/btop.conf @@ -1,18 +1,18 @@ -#? Config file for btop +#? Config file for btop v.1.4.6 #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" color_theme = "current" #* If the theme set background should be shown, set to False if you want terminal background transparency. -theme_background = True +theme_background = true #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. -truecolor = True +truecolor = true #* Set to true to force tty mode regardless if a real tty has been detected or not. #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. -force_tty = False +force_tty = false #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. @@ -22,10 +22,13 @@ presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:defaul #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. -vim_keys = True +vim_keys = true #* Rounded corners on boxes, is ignored if TTY mode is ON. -rounded_corners = True +rounded_corners = true + +#* Use terminal synchronized output sequences to reduce flickering on supported terminals. +terminal_sync = true #* Default symbols to use for graph creation, "braille", "block" or "tty". #* "braille" offers the highest resolution but might not be included in all fonts. @@ -60,37 +63,40 @@ update_ms = 2000 proc_sorting = "cpu lazy" #* Reverse sorting order, True or False. -proc_reversed = False +proc_reversed = false #* Show processes as a tree. -proc_tree = False +proc_tree = false #* Use the cpu graph colors in the process list. -proc_colors = True +proc_colors = true #* Use a darkening gradient in the process list. -proc_gradient = True +proc_gradient = true #* If process cpu usage should be of the core it's running on or usage of the total available cpu power. -proc_per_core = False +proc_per_core = false #* Show process memory as bytes instead of percent. -proc_mem_bytes = True +proc_mem_bytes = true #* Show cpu graph for each process. -proc_cpu_graphs = True +proc_cpu_graphs = true #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) -proc_info_smaps = False +proc_info_smaps = false #* Show proc box on left side of screen instead of right. -proc_left = False +proc_left = false #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). -proc_filter_kernel = False +proc_filter_kernel = false #* In tree-view, always accumulate child process resources in the parent process. -proc_aggregate = False +proc_aggregate = false + +#* Should cpu and memory usage display be preserved for dead processes when paused. +keep_dead_proc_usage = false #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. #* Select from a list of detected attributes from the options menu. @@ -104,25 +110,28 @@ cpu_graph_lower = "Auto" show_gpu_info = "Auto" #* Toggles if the lower CPU graph should be inverted. -cpu_invert_lower = True +cpu_invert_lower = true #* Set to True to completely disable the lower CPU graph. -cpu_single_graph = False +cpu_single_graph = false #* Show cpu box at bottom of screen instead of top. -cpu_bottom = False +cpu_bottom = false #* Shows the system uptime in the CPU box. -show_uptime = True +show_uptime = true + +#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo. +show_cpu_watts = true #* Show cpu temperature. -check_temp = True +check_temp = true #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. cpu_sensor = "Auto" #* Show temperatures for cpu cores also if check_temp is True and sensors has been found. -show_coretemp = True +show_coretemp = true #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. @@ -134,63 +143,66 @@ cpu_core_map = "" temp_scale = "celsius" #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. -base_10_sizes = False +base_10_sizes = false #* Show CPU frequency. -show_cpu_freq = True +show_cpu_freq = true + +#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average". +freq_mode = "first" #* Draw a clock at top of screen, formatting according to strftime, empty string to disable. #* Special formatting: /host = hostname | /user = username | /uptime = system uptime clock_format = "%X" #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. -background_update = True +background_update = true #* Custom cpu model name, empty string to disable. custom_cpu_name = "" #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". -#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user" disks_filter = "" #* Show graphs instead of meters for memory values. -mem_graphs = True +mem_graphs = true #* Show mem box below net box instead of above. -mem_below_net = False +mem_below_net = false #* Count ZFS ARC in cached and available memory. -zfs_arc_cached = True +zfs_arc_cached = true #* If swap memory should be shown in memory box. -show_swap = True +show_swap = true #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. -swap_disk = True +swap_disk = true #* If mem box should be split to also show disks info. -show_disks = True +show_disks = true #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. -only_physical = True +only_physical = true #* Read disks list from /etc/fstab. This also disables only_physical. -use_fstab = True +use_fstab = true #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) -zfs_hide_datasets = False +zfs_hide_datasets = false #* Set to true to show available disk space for privileged users. -disk_free_priv = False +disk_free_priv = false #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. -show_io_stat = True +show_io_stat = true #* Toggles io mode for disks, showing big graphs for disk read/write speeds. -io_mode = False +io_mode = false #* Set to True to show combined read/write io graphs in io mode. -io_graph_combined = False +io_graph_combined = false #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". #* Example: "/mnt/media:100 /:20 /boot:1". @@ -202,29 +214,44 @@ net_download = 100 net_upload = 100 #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. -net_auto = True +net_auto = true #* Sync the auto scaling for download and upload to whichever currently has the highest scale. -net_sync = True +net_sync = true #* Starts with the Network Interface specified here. net_iface = "" +#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes. +base_10_bitrate = "Auto" + #* Show battery stats in top right if battery is present. -show_battery = True +show_battery = true #* Which battery to use if multiple are present. "Auto" for auto detection. selected_battery = "Auto" -#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* Show power stats of battery next to charge indicator. +show_battery_watts = true + +#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. log_level = "WARNING" +#* Automatically save current settings to config file on exit. +save_config_on_exit = true + #* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. -nvml_measure_pcie_speeds = True +nvml_measure_pcie_speeds = true + +#* Measure PCIe throughput on AMD cards, may impact performance on certain cards. +rsmi_measure_pcie_speeds = true #* Horizontally mirror the GPU graph. -gpu_mirror_graph = True +gpu_mirror_graph = true + +#* Set which GPU vendors to show. Available values are "nvidia amd intel" +shown_gpus = "nvidia amd intel" #* Custom gpu0 model name, empty string to disable. custom_gpu_name0 = "" @@ -243,4 +270,3 @@ custom_gpu_name4 = "" #* Custom gpu5 model name, empty string to disable. custom_gpu_name5 = "" - From 18ab3421194e99e7d79588f0e6d5214046ca59ef Mon Sep 17 00:00:00 2001 From: Felipe Gonzalez Date: Wed, 15 Apr 2026 03:14:07 -0500 Subject: [PATCH 26/47] fix: suppress Chromium/Brave stderr noise during theme switch (#5285) Redirect stderr to /dev/null alongside stdout when refreshing browser platform policy, preventing shared_memory_switch errors from cluttering the terminal. --- bin/omarchy-theme-set-browser | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-theme-set-browser b/bin/omarchy-theme-set-browser index 9278e90d..a069c167 100755 --- a/bin/omarchy-theme-set-browser +++ b/bin/omarchy-theme-set-browser @@ -14,11 +14,11 @@ if omarchy-cmd-present chromium || omarchy-cmd-present brave; then if omarchy-cmd-present chromium; then echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/chromium/policies/managed/color.json" >/dev/null - chromium --refresh-platform-policy --no-startup-window >/dev/null + chromium --refresh-platform-policy --no-startup-window &>/dev/null fi if omarchy-cmd-present brave; then echo "{\"BrowserThemeColor\": \"$THEME_HEX_COLOR\", \"BrowserColorScheme\": \"device\"}" | tee "/etc/brave/policies/managed/color.json" >/dev/null - brave --refresh-platform-policy --no-startup-window >/dev/null + brave --refresh-platform-policy --no-startup-window &>/dev/null fi fi From a49b8d255cb20a453a940dab2660a6d27a73fd8b Mon Sep 17 00:00:00 2001 From: Marco <77896841+annoyedmilk@users.noreply.github.com> Date: Wed, 15 Apr 2026 10:28:42 +0200 Subject: [PATCH 27/47] Fix AC power udev rules failing silently at boot (#5275) * Don't use the names here since they break the all-themes setup in omarchy-nvim * Fix AC power udev rules to use systemd-run * Migrate AC power udev rules to systemd-run * Add --collect and stable unit names to systemd-run udev rules * Add unit name, replace, and After ordering to power profile udev rules * Remove invalid --replace flag from systemd-run power profile rules * We don't need --replace becuase it's not needed --------- Co-authored-by: David Heinemeier Hansson --- install/config/wifi-powersave-rules.sh | 4 ++-- install/first-run/powerprofilesctl-rules.sh | 4 ++-- migrations/1775897694.sh | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 migrations/1775897694.sh diff --git a/install/config/wifi-powersave-rules.sh b/install/config/wifi-powersave-rules.sh index 08b8d49b..55739059 100644 --- a/install/config/wifi-powersave-rules.sh +++ b/install/config/wifi-powersave-rules.sh @@ -1,7 +1,7 @@ if omarchy-battery-present; then cat < Date: Wed, 15 Apr 2026 10:36:45 +0200 Subject: [PATCH 28/47] No longer need first-run to set these powerprofilectl rules --- bin/omarchy-cmd-first-run | 1 - install/config/all.sh | 1 + install/{first-run => config}/powerprofilesctl-rules.sh | 0 migrations/1769566732.sh | 2 +- migrations/1775897694.sh | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename install/{first-run => config}/powerprofilesctl-rules.sh (100%) diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-cmd-first-run index a1734cfb..830bef54 100755 --- a/bin/omarchy-cmd-first-run +++ b/bin/omarchy-cmd-first-run @@ -15,7 +15,6 @@ if [[ -f $FIRST_RUN_MODE ]]; then bash "$OMARCHY_PATH/install/first-run/dns-resolver.sh" bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh" bash "$OMARCHY_PATH/install/first-run/elephant.sh" - bash "$OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh" sudo rm -f /etc/sudoers.d/first-run bash "$OMARCHY_PATH/install/first-run/welcome.sh" diff --git a/install/config/all.sh b/install/config/all.sh index e7c962be..6b2f3dfa 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -23,6 +23,7 @@ run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh run_logged $OMARCHY_INSTALL/config/input-group.sh run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh run_logged $OMARCHY_INSTALL/config/kernel-modules-hook.sh +run_logged $OMARCHY_INSTALL/config/powerprofilesctl-rules.sh run_logged $OMARCHY_INSTALL/config/wifi-powersave-rules.sh run_logged $OMARCHY_INSTALL/config/plocate-ac-only.sh diff --git a/install/first-run/powerprofilesctl-rules.sh b/install/config/powerprofilesctl-rules.sh similarity index 100% rename from install/first-run/powerprofilesctl-rules.sh rename to install/config/powerprofilesctl-rules.sh diff --git a/migrations/1769566732.sh b/migrations/1769566732.sh index 1a5256ea..f2df93c0 100644 --- a/migrations/1769566732.sh +++ b/migrations/1769566732.sh @@ -1,3 +1,3 @@ echo "Set power profile based on source switching (AC or Battery)" -source $OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh +source $OMARCHY_PATH/install/config/powerprofilesctl-rules.sh diff --git a/migrations/1775897694.sh b/migrations/1775897694.sh index aeeefc34..a5935a03 100644 --- a/migrations/1775897694.sh +++ b/migrations/1775897694.sh @@ -1,4 +1,4 @@ echo "Fix AC power udev rules to use systemd-run" -source $OMARCHY_PATH/install/config/powerprofilesctl-rules.sh +source $OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh source $OMARCHY_PATH/install/config/wifi-powersave-rules.sh From 9389c1f57ad49de12abeb9c1e8ef7048f08725cf Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 10:39:21 +0200 Subject: [PATCH 29/47] Fix path --- migrations/1775897694.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/1775897694.sh b/migrations/1775897694.sh index a5935a03..aeeefc34 100644 --- a/migrations/1775897694.sh +++ b/migrations/1775897694.sh @@ -1,4 +1,4 @@ echo "Fix AC power udev rules to use systemd-run" -source $OMARCHY_PATH/install/first-run/powerprofilesctl-rules.sh +source $OMARCHY_PATH/install/config/powerprofilesctl-rules.sh source $OMARCHY_PATH/install/config/wifi-powersave-rules.sh From f7dc63ca72ebb361b78ae284ff47bed6b42bb7e5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 02:26:37 -0700 Subject: [PATCH 30/47] Work around the return-from-sleep sluggishness on panther lake This is due to slow ramp after s2idle --- default/systemd/system-sleep/resume-boost | 10 ++++++++++ install/config/all.sh | 1 + install/config/hardware/intel/resume-boost.sh | 8 ++++++++ 3 files changed, 19 insertions(+) create mode 100755 default/systemd/system-sleep/resume-boost create mode 100644 install/config/hardware/intel/resume-boost.sh diff --git a/default/systemd/system-sleep/resume-boost b/default/systemd/system-sleep/resume-boost new file mode 100755 index 00000000..0ce02d94 --- /dev/null +++ b/default/systemd/system-sleep/resume-boost @@ -0,0 +1,10 @@ +#!/bin/bash + +# Temporarily switch to performance power profile on resume +# to avoid sluggishness while the system catches up, then +# drop back to balanced after 10 seconds. + +if [[ $1 == "post" ]]; then + powerprofilesctl set performance + (sleep 10 && powerprofilesctl set balanced) & +fi diff --git a/install/config/all.sh b/install/config/all.sh index 6b2f3dfa..b09332e6 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -43,6 +43,7 @@ run_logged $OMARCHY_INSTALL/config/hardware/intel/thermald.sh run_logged $OMARCHY_INSTALL/config/hardware/intel/ipu7-camera.sh run_logged $OMARCHY_INSTALL/config/hardware/intel/ptl-kernel.sh run_logged $OMARCHY_INSTALL/config/hardware/intel/fix-wifi7-eht.sh +run_logged $OMARCHY_INSTALL/config/hardware/intel/resume-boost.sh run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-haptic-touchpad.sh run_logged $OMARCHY_INSTALL/config/hardware/dell/fix-xps-ptl-display.sh diff --git a/install/config/hardware/intel/resume-boost.sh b/install/config/hardware/intel/resume-boost.sh new file mode 100644 index 00000000..8a1f48cd --- /dev/null +++ b/install/config/hardware/intel/resume-boost.sh @@ -0,0 +1,8 @@ +# Boost CPU performance for 10 seconds after resume on Panther Lake systems. +# The powersave governor with balance_power EPP is slow to ramp frequency +# after long suspends, causing noticeable sluggishness on wake. + +if omarchy-hw-intel-ptl; then + sudo mkdir -p /usr/lib/systemd/system-sleep + sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/resume-boost" /usr/lib/systemd/system-sleep/ +fi From 0017f2eab02ad8ba509f4d54382a54c0afc904ea Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 11:49:02 +0200 Subject: [PATCH 31/47] Make hibernation offset safer --- bin/omarchy-hibernation-setup | 25 ++++++++++++++++++++----- migrations/1776246235.sh | 17 +++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 migrations/1776246235.sh diff --git a/bin/omarchy-hibernation-setup b/bin/omarchy-hibernation-setup index 0ebca84f..482e5470 100755 --- a/bin/omarchy-hibernation-setup +++ b/bin/omarchy-hibernation-setup @@ -14,9 +14,22 @@ if ! command -v limine-mkinitcpio &>/dev/null; then fi MKINITCPIO_CONF="/etc/mkinitcpio.conf.d/omarchy_resume.conf" +SWAP_FILE="/swap/swapfile" +RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf" # Check if hibernation is already configured if [[ -f $MKINITCPIO_CONF ]] && grep -q "^HOOKS+=(resume)$" "$MKINITCPIO_CONF"; then + # Fix empty resume_offset if btrfs map-swapfile failed during initial setup + if [[ -f $RESUME_DROP_IN ]] && grep -q 'resume_offset="$' "$RESUME_DROP_IN" && [[ -f $SWAP_FILE ]]; then + RESUME_OFFSET=$(sudo btrfs inspect-internal map-swapfile -r "$SWAP_FILE" 2>/dev/null) + if [[ -n $RESUME_OFFSET ]]; then + echo "Fixing empty resume_offset ($RESUME_OFFSET)" + sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" "$RESUME_DROP_IN" + sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" /etc/default/limine + sudo limine-mkinitcpio + sudo limine-update + fi + fi echo "Hibernation is already set up" exit 0 fi @@ -29,7 +42,6 @@ if [[ $1 != "--force" ]]; then fi SWAP_SUBVOLUME="/swap" -SWAP_FILE="$SWAP_SUBVOLUME/swapfile" # Create btrfs subvolume for swap if ! sudo btrfs subvolume show "$SWAP_SUBVOLUME" &>/dev/null; then @@ -68,15 +80,18 @@ sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/ # Add resume= kernel parameters so the initramfs resume hook knows where to find the # hibernation image. Without these, resume happens late (after GPU drivers load) and fails. -RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf" if [[ ! -f $RESUME_DROP_IN ]]; then echo "Adding resume kernel parameters" sudo swapon -p 0 "$SWAP_FILE" 2>/dev/null RESUME_DEVICE=$(findmnt -no SOURCE -T "$SWAP_FILE" | sed 's/\[.*\]//') RESUME_OFFSET=$(sudo btrfs inspect-internal map-swapfile -r "$SWAP_FILE") - sudo mkdir -p /etc/limine-entry-tool.d - echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null - sudo tee -a /etc/default/limine < "$RESUME_DROP_IN" >/dev/null + if [[ -n $RESUME_OFFSET ]]; then + sudo mkdir -p /etc/limine-entry-tool.d + echo "KERNEL_CMDLINE[default]+=\" resume=$RESUME_DEVICE resume_offset=$RESUME_OFFSET\"" | sudo tee "$RESUME_DROP_IN" >/dev/null + sudo tee -a /etc/default/limine < "$RESUME_DROP_IN" >/dev/null + else + echo "Warning: Could not determine resume offset for $SWAP_FILE" >&2 + fi fi # Use ACPI alarm for RTC wakeup on s2idle systems (needed for suspend-then-hibernate) diff --git a/migrations/1776246235.sh b/migrations/1776246235.sh new file mode 100644 index 00000000..a58be056 --- /dev/null +++ b/migrations/1776246235.sh @@ -0,0 +1,17 @@ +echo "Fix empty resume_offset in hibernation config" + +RESUME_DROP_IN="/etc/limine-entry-tool.d/resume.conf" +SWAP_FILE="/swap/swapfile" + +if [[ -f $RESUME_DROP_IN ]] && grep -q 'resume_offset="$' "$RESUME_DROP_IN" && [[ -f $SWAP_FILE ]]; then + RESUME_OFFSET=$(sudo btrfs inspect-internal map-swapfile -r "$SWAP_FILE" 2>/dev/null) + if [[ -n $RESUME_OFFSET ]]; then + sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" "$RESUME_DROP_IN" + sudo sed -i "s/resume_offset=\"$/resume_offset=$RESUME_OFFSET\"/" /etc/default/limine + sudo limine-mkinitcpio + sudo limine-update + echo "Fixed: resume_offset=$RESUME_OFFSET" + else + echo "Warning: Could not determine resume offset for $SWAP_FILE" + fi +fi From 3f28cd46d688aba3caf8258dc64d7c118842ca8d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 11:55:18 +0200 Subject: [PATCH 32/47] Use cairo renderer to workaround sluggish GTK4 renderer Closes #5260 --- default/hypr/envs.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/default/hypr/envs.conf b/default/hypr/envs.conf index 85afc775..e0708c73 100644 --- a/default/hypr/envs.conf +++ b/default/hypr/envs.conf @@ -12,6 +12,9 @@ env = ELECTRON_OZONE_PLATFORM_HINT,wayland env = OZONE_PLATFORM,wayland env = XDG_SESSION_TYPE,wayland +# Fix sluggish GTK4 Vulkan renderer +env = GSK_RENDERER,cairo + # Allow better support for screen sharing (Google Meet, Discord, etc) env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland From c34adea2f07bfc3e523e3e30f1417f82b9f73082 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 11:58:45 +0200 Subject: [PATCH 33/47] No longer needed --- install/preflight/first-run-mode.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install/preflight/first-run-mode.sh b/install/preflight/first-run-mode.sh index f56f071b..536058cc 100644 --- a/install/preflight/first-run-mode.sh +++ b/install/preflight/first-run-mode.sh @@ -10,8 +10,6 @@ $USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl $USER ALL=(ALL) NOPASSWD: /usr/bin/ufw $USER ALL=(ALL) NOPASSWD: /usr/bin/ufw-docker $USER ALL=(ALL) NOPASSWD: /usr/bin/gtk-update-icon-cache -$USER ALL=(ALL) NOPASSWD: /usr/bin/tee /etc/udev/rules.d/* -$USER ALL=(ALL) NOPASSWD: /usr/bin/udevadm $USER ALL=(ALL) NOPASSWD: SYMLINK_RESOLVED $USER ALL=(ALL) NOPASSWD: FIRST_RUN_CLEANUP EOF From 30ddfeda4acadf7bad54eaab768072c494406b0b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 12:10:26 +0200 Subject: [PATCH 34/47] Just apply the GSK_RENDERER fix for walker --- bin/omarchy-launch-walker | 2 +- default/hypr/envs.conf | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/bin/omarchy-launch-walker b/bin/omarchy-launch-walker index 8b239f10..cda02c41 100755 --- a/bin/omarchy-launch-walker +++ b/bin/omarchy-launch-walker @@ -9,7 +9,7 @@ fi # Ensure walker service is running if ! pgrep -f "walker --gapplication-service" > /dev/null; then - setsid uwsm-app -- walker --gapplication-service & + setsid uwsm-app -- env GSK_RENDERER=cairo walker --gapplication-service & fi exec walker --width 644 --maxheight 300 --minheight 300 "$@" diff --git a/default/hypr/envs.conf b/default/hypr/envs.conf index e0708c73..85afc775 100644 --- a/default/hypr/envs.conf +++ b/default/hypr/envs.conf @@ -12,9 +12,6 @@ env = ELECTRON_OZONE_PLATFORM_HINT,wayland env = OZONE_PLATFORM,wayland env = XDG_SESSION_TYPE,wayland -# Fix sluggish GTK4 Vulkan renderer -env = GSK_RENDERER,cairo - # Allow better support for screen sharing (Google Meet, Discord, etc) env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland From 9f6df52d8dd379501bff7d5e43854fd2f356ec83 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 12:34:17 +0200 Subject: [PATCH 35/47] Restore previouse power profile after the boost --- default/systemd/system-sleep/resume-boost | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/default/systemd/system-sleep/resume-boost b/default/systemd/system-sleep/resume-boost index 0ce02d94..a1612b3f 100755 --- a/default/systemd/system-sleep/resume-boost +++ b/default/systemd/system-sleep/resume-boost @@ -2,9 +2,14 @@ # Temporarily switch to performance power profile on resume # to avoid sluggishness while the system catches up, then -# drop back to balanced after 10 seconds. +# restore the previous profile after 10 seconds. + +if [[ $1 == "pre" ]]; then + powerprofilesctl get > /tmp/power-profile-before-sleep +fi if [[ $1 == "post" ]]; then + previous=$(cat /tmp/power-profile-before-sleep 2>/dev/null || echo "balanced") powerprofilesctl set performance - (sleep 10 && powerprofilesctl set balanced) & + (sleep 10 && powerprofilesctl set "$previous") & fi From 4a2511ad5d365da9b36342067e344f2880cce13e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 13:31:16 +0200 Subject: [PATCH 36/47] Fix perms --- default/systemd/system-sleep/resume-boost | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 default/systemd/system-sleep/resume-boost diff --git a/default/systemd/system-sleep/resume-boost b/default/systemd/system-sleep/resume-boost old mode 100755 new mode 100644 From f094c3acc0c5889095a062d9bc07a4421ae7e056 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 13:50:36 +0200 Subject: [PATCH 37/47] Move powerprofile setting to userland script --- bin/omarchy-powerprofiles-set | 22 ++++++++++++++++++++++ install/config/powerprofilesctl-rules.sh | 23 +++++------------------ 2 files changed, 27 insertions(+), 18 deletions(-) create mode 100755 bin/omarchy-powerprofiles-set diff --git a/bin/omarchy-powerprofiles-set b/bin/omarchy-powerprofiles-set new file mode 100755 index 00000000..86c3ac0c --- /dev/null +++ b/bin/omarchy-powerprofiles-set @@ -0,0 +1,22 @@ +#!/bin/bash + +# Set the power profile to the requested level, falling back to balanced +# if the requested profile isn't available on this machine. +# +# Usage: omarchy-powerprofiles-set + +mapfile -t profiles < <(powerprofilesctl list | awk '/^\s*[* ]\s*[a-zA-Z0-9\-]+:$/ { gsub(/^[*[:space:]]+|:$/,""); print }') + +case "$1" in + ac) + # Prefer performance, fall back to balanced + if [[ " ${profiles[*]} " == *" performance "* ]]; then + powerprofilesctl set performance + else + powerprofilesctl set balanced + fi + ;; + battery) + powerprofilesctl set balanced + ;; +esac diff --git a/install/config/powerprofilesctl-rules.sh b/install/config/powerprofilesctl-rules.sh index 171f2508..9b5a71a6 100644 --- a/install/config/powerprofilesctl-rules.sh +++ b/install/config/powerprofilesctl-rules.sh @@ -1,22 +1,9 @@ if omarchy-battery-present; then - mapfile -t profiles < <(omarchy-powerprofiles-list) - - if (( ${#profiles[@]} > 1 )); then - - # Default AC profile: - # 3 profiles → performance - # 2 profiles → balanced - ac_profile="${profiles[2]:-${profiles[1]}}" - - # Default Battery profile (balanced) - battery_profile="${profiles[1]}" - - cat </dev/null + sudo udevadm trigger --subsystem-match=power_supply 2>/dev/null fi From 521c94bfcab20dbda4cedab7c0070d5c0e8b297a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 14:35:32 +0200 Subject: [PATCH 38/47] Add display toggle but protect against disabling the only active display --- bin/omarchy-hyprland-monitor-internal-toggle | 6 ++++++ default/hypr/bindings/utilities.conf | 1 + 2 files changed, 7 insertions(+) diff --git a/bin/omarchy-hyprland-monitor-internal-toggle b/bin/omarchy-hyprland-monitor-internal-toggle index 325f7589..d4f3127a 100755 --- a/bin/omarchy-hyprland-monitor-internal-toggle +++ b/bin/omarchy-hyprland-monitor-internal-toggle @@ -17,6 +17,12 @@ if [[ $DISABLED == "true" ]]; then hyprctl keyword monitor "$INTERNAL,preferred,auto,auto" notify-send -u low "󰍹 Internal display on" else + ACTIVE_COUNT=$(hyprctl monitors -j | jq 'length') + if [[ $ACTIVE_COUNT -le 1 ]]; then + notify-send -u low "󰍹 Can't disable the only active display" + exit 1 + fi + hyprctl keyword monitor "$INTERNAL,disable" notify-send -u low "󰍹 Internal display off" fi diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 3c3336a1..14da1fd2 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -28,6 +28,7 @@ bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore # Toggles bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight +bindd = SUPER CTRL, Delete, Toggle laptop display, exec, omarchy-hyprland-monitor-internal-toggle # Control Apple Display brightness bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000 From bebed70a7c1307c2f4ee70a927707f7cfeae5296 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 14:42:44 +0200 Subject: [PATCH 39/47] Ensure cursor is on the new screen --- bin/omarchy-hyprland-monitor-internal-toggle | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/omarchy-hyprland-monitor-internal-toggle b/bin/omarchy-hyprland-monitor-internal-toggle index d4f3127a..6e06d81b 100755 --- a/bin/omarchy-hyprland-monitor-internal-toggle +++ b/bin/omarchy-hyprland-monitor-internal-toggle @@ -15,6 +15,7 @@ DISABLED=$(hyprctl monitors all -j | jq -r --arg m "$INTERNAL" '.[] | select(.na if [[ $DISABLED == "true" ]]; then hyprctl keyword monitor "$INTERNAL,preferred,auto,auto" + hyprctl dispatch movecursor 0 0 notify-send -u low "󰍹 Internal display on" else ACTIVE_COUNT=$(hyprctl monitors -j | jq 'length') From 753885a6591b889db05a024106fd861690c0c88c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 15:48:35 +0200 Subject: [PATCH 40/47] Broaden the CPU boost after sleep fix to all Intel machines --- install/config/hardware/intel/resume-boost.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/config/hardware/intel/resume-boost.sh b/install/config/hardware/intel/resume-boost.sh index 8a1f48cd..3d177cfd 100644 --- a/install/config/hardware/intel/resume-boost.sh +++ b/install/config/hardware/intel/resume-boost.sh @@ -1,8 +1,8 @@ -# Boost CPU performance for 10 seconds after resume on Panther Lake systems. +# Boost CPU performance for 10 seconds after resume on Intel systems. # The powersave governor with balance_power EPP is slow to ramp frequency # after long suspends, causing noticeable sluggishness on wake. -if omarchy-hw-intel-ptl; then +if omarchy-hw-intel; then sudo mkdir -p /usr/lib/systemd/system-sleep sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/resume-boost" /usr/lib/systemd/system-sleep/ fi From bf802df8bd0843c95e19ea96012fb0c4d6de1247 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 15:55:47 +0200 Subject: [PATCH 41/47] Present copilot key->omarchy menu better --- bin/omarchy-menu-keybindings | 8 ++++++-- default/hypr/bindings/utilities.conf | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index dd6f97b2..34486206 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -46,8 +46,12 @@ parse_keycodes() { while IFS= read -r line; do if [[ $line =~ code:([0-9]+) ]]; then code="${BASH_REMATCH[1]}" - symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE") - echo "${line/code:${code}/$symbol}" + if [[ $code == "201" ]]; then + echo "${line/SUPER SHIFT,code:201/,COPILOT KEY}" + else + symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE") + echo "${line/code:${code}/$symbol}" + fi elif [[ $line =~ mouse:([0-9]+) ]]; then code="${BASH_REMATCH[1]}" diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 14da1fd2..7de79d6b 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -4,7 +4,7 @@ bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu -bindd = SUPER SHIFT, code:201, Omarchy menu (Copilot key), exec, omarchy-menu +bindd = SUPER SHIFT, code:201, Omarchy menu, exec, omarchy-menu bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings From 7bfd848c930cc34399c50c39a9c8570d7c6b5df8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 16:17:14 +0200 Subject: [PATCH 42/47] Only apply enable_psr=0 to xps oled machines --- bin/omarchy-hw-dell-xps-oled | 7 +++++++ install/config/hardware/dell/fix-xps-ptl-display.sh | 5 +---- migrations/1776099290.sh | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) create mode 100755 bin/omarchy-hw-dell-xps-oled diff --git a/bin/omarchy-hw-dell-xps-oled b/bin/omarchy-hw-dell-xps-oled new file mode 100755 index 00000000..80141b8a --- /dev/null +++ b/bin/omarchy-hw-dell-xps-oled @@ -0,0 +1,7 @@ +#!/bin/bash + +# Match Dell XPS systems with LG OLED panel on Intel Panther Lake (Xe3) GPU. + +omarchy-hw-match "XPS" \ + && omarchy-hw-intel-ptl \ + && test "$(od -An -tx1 -j8 -N2 /sys/class/drm/card*-eDP-*/edid 2>/dev/null | tr -d ' \n')" = "30e4" diff --git a/install/config/hardware/dell/fix-xps-ptl-display.sh b/install/config/hardware/dell/fix-xps-ptl-display.sh index 17941e2c..91433afd 100644 --- a/install/config/hardware/dell/fix-xps-ptl-display.sh +++ b/install/config/hardware/dell/fix-xps-ptl-display.sh @@ -1,9 +1,6 @@ # Fix display issues on Dell XPS 2026+ with LG OLED panel and Intel Panther Lake (Xe3) GPU. # Power-saving features (PSR and Panel Replay) cause freezes and display glitches. -if omarchy-hw-match "XPS" \ - && omarchy-hw-intel-ptl \ - && test "$(od -An -tx1 -j8 -N2 /sys/class/drm/card*-eDP-*/edid 2>/dev/null | tr -d ' \n')" = "30e4"; then - +if omarchy-hw-dell-xps-oled; then echo "Detected Dell XPS with LG OLED panel on Panther Lake, applying display power-saving fix..." CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0"' diff --git a/migrations/1776099290.sh b/migrations/1776099290.sh index 55110301..87ce5d1c 100644 --- a/migrations/1776099290.sh +++ b/migrations/1776099290.sh @@ -1,6 +1,6 @@ echo "Add xe.enable_psr=0 to CMDLINE for XPS Panther Lake systems missing it" -if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl && [ -f /etc/default/limine ]; then +if omarchy-hw-dell-xps-oled && [ -f /etc/default/limine ]; then UPDATED=false if ! grep -q 'xe.enable_psr' /etc/default/limine; then From ce29e45ccd083be07ed0a8f949a4b76bc80adc87 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 16:19:49 +0200 Subject: [PATCH 43/47] Use /run/omarchy instead of just /tmp --- default/systemd/system-sleep/resume-boost | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/default/systemd/system-sleep/resume-boost b/default/systemd/system-sleep/resume-boost index a1612b3f..b0240404 100644 --- a/default/systemd/system-sleep/resume-boost +++ b/default/systemd/system-sleep/resume-boost @@ -5,11 +5,12 @@ # restore the previous profile after 10 seconds. if [[ $1 == "pre" ]]; then - powerprofilesctl get > /tmp/power-profile-before-sleep + mkdir -p /run/omarchy + powerprofilesctl get > /run/omarchy/power-profile-before-sleep fi if [[ $1 == "post" ]]; then - previous=$(cat /tmp/power-profile-before-sleep 2>/dev/null || echo "balanced") + previous=$(cat /run/omarchy/power-profile-before-sleep 2>/dev/null || echo "balanced") powerprofilesctl set performance (sleep 10 && powerprofilesctl set "$previous") & fi From a76757335a3b4364cb4fd37edf33c1096e7c78ff Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 15 Apr 2026 18:14:07 +0200 Subject: [PATCH 44/47] Ensure we set performance profile on boot when on AC --- bin/omarchy-ac-present | 9 +++++++++ bin/omarchy-powerprofiles-init | 11 +++++++++++ default/hypr/autostart.conf | 1 + 3 files changed, 21 insertions(+) create mode 100755 bin/omarchy-ac-present create mode 100755 bin/omarchy-powerprofiles-init diff --git a/bin/omarchy-ac-present b/bin/omarchy-ac-present new file mode 100755 index 00000000..a2f632a9 --- /dev/null +++ b/bin/omarchy-ac-present @@ -0,0 +1,9 @@ +#!/bin/bash + +# Returns true if AC power is connected. + +for ac in /sys/class/power_supply/AC* /sys/class/power_supply/ADP*; do + [[ -r $ac/online && $(cat "$ac/online") == "1" ]] && exit 0 +done + +exit 1 diff --git a/bin/omarchy-powerprofiles-init b/bin/omarchy-powerprofiles-init new file mode 100755 index 00000000..5a94d05b --- /dev/null +++ b/bin/omarchy-powerprofiles-init @@ -0,0 +1,11 @@ +#!/bin/bash + +# Set the correct power profile on boot based on current AC/battery state. +# The udev rules only fire on state *changes*, so without this, booting +# on AC leaves you in the default balanced mode. + +if omarchy-battery-present && ! omarchy-ac-present; then + omarchy-powerprofiles-set battery +else + omarchy-powerprofiles-set ac +fi diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index 40522822..b9d1b491 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -6,6 +6,7 @@ exec-once = uwsm-app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm-app -- swayosd-server exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = omarchy-cmd-first-run +exec-once = omarchy-powerprofiles-init # Slow app launch fix -- set systemd vars exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1) From 90bf106a70c7980a4367c4291a39446ac043c7d2 Mon Sep 17 00:00:00 2001 From: Spencer Bull Date: Thu, 16 Apr 2026 05:10:52 -0500 Subject: [PATCH 45/47] Disable PSR1 on XPS IPS and OLED. XPS IPS uses PSR2 (#5315) * Disable PSR1 on XPS IPS and OLED. IPS uses PSR2 * Improve conditional flow * Simplify the migration logic * We don't actually need this We are using += everywhere --------- Co-authored-by: David Heinemeier Hansson --- .../hardware/dell/fix-xps-ptl-display.sh | 24 ++++++++++--------- migrations/1776099290.sh | 12 +++------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/install/config/hardware/dell/fix-xps-ptl-display.sh b/install/config/hardware/dell/fix-xps-ptl-display.sh index 91433afd..3c66e47e 100644 --- a/install/config/hardware/dell/fix-xps-ptl-display.sh +++ b/install/config/hardware/dell/fix-xps-ptl-display.sh @@ -1,18 +1,20 @@ -# Fix display issues on Dell XPS 2026+ with LG OLED panel and Intel Panther Lake (Xe3) GPU. -# Power-saving features (PSR and Panel Replay) cause freezes and display glitches. -if omarchy-hw-dell-xps-oled; then - echo "Detected Dell XPS with LG OLED panel on Panther Lake, applying display power-saving fix..." +# Fix display issues on Dell XPS Panther Lake (Xe3) systems. +# Xe PSR causes freezes and display glitches on both OLED and IPS panels. +# LG OLED panels also need Panel Replay disabled. +if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl; then + echo "Detected Dell XPS on Panther Lake, applying display power-saving fixes..." - CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0"' + if omarchy-hw-dell-xps-oled; then + CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0 xe.enable_panel_replay=0"' + COMMENT='Disable Xe PSR and Panel Replay on Dell XPS Panther Lake OLED systems' + else + CMDLINE='KERNEL_CMDLINE[default]+=" xe.enable_psr=0"' + COMMENT='Disable Xe PSR on Dell XPS Panther Lake systems' + fi sudo mkdir -p /etc/limine-entry-tool.d cat </dev/null -# Fix Dell XPS OLED display issues by disabling Xe PSR and Panel Replay power-saving features +# $COMMENT $CMDLINE EOF - - # Also append to /etc/default/limine if it exists, since it overrides drop-in configs - if [ -f /etc/default/limine ] && ! grep -q 'xe.enable_psr' /etc/default/limine; then - echo "$CMDLINE" | sudo tee -a /etc/default/limine >/dev/null - fi fi diff --git a/migrations/1776099290.sh b/migrations/1776099290.sh index 87ce5d1c..1d060533 100644 --- a/migrations/1776099290.sh +++ b/migrations/1776099290.sh @@ -1,14 +1,8 @@ -echo "Add xe.enable_psr=0 to CMDLINE for XPS Panther Lake systems missing it" +echo "Ensure xe.enable_psr=0 is set in CMDLINE for XPS Panther Lake systems" -if omarchy-hw-dell-xps-oled && [ -f /etc/default/limine ]; then - UPDATED=false - - if ! grep -q 'xe.enable_psr' /etc/default/limine; then +if omarchy-hw-match "XPS" && omarchy-hw-intel-ptl && [[ -f /etc/default/limine ]]; then + if ! grep -Fq 'xe.enable_psr=0' /etc/default/limine; then echo 'KERNEL_CMDLINE[default]+=" xe.enable_psr=0"' | sudo tee -a /etc/default/limine >/dev/null - UPDATED=true - fi - - if $UPDATED; then sudo limine-mkinitcpio fi fi From a4c544b8f66027735d544e6730b27d6bf03bc8e9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 16 Apr 2026 15:34:20 +0200 Subject: [PATCH 46/47] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 1545d966..d5c0c991 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.5.0 +3.5.1 From 8f441acbef103cab78fe594f54a389608296511e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 16 Apr 2026 15:35:50 +0200 Subject: [PATCH 47/47] Use more resilient restore --- default/systemd/system-sleep/resume-boost | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/systemd/system-sleep/resume-boost b/default/systemd/system-sleep/resume-boost index b0240404..318519e8 100644 --- a/default/systemd/system-sleep/resume-boost +++ b/default/systemd/system-sleep/resume-boost @@ -12,5 +12,5 @@ fi if [[ $1 == "post" ]]; then previous=$(cat /run/omarchy/power-profile-before-sleep 2>/dev/null || echo "balanced") powerprofilesctl set performance - (sleep 10 && powerprofilesctl set "$previous") & + systemd-run --on-active=10 --timer-property=AccuracySec=1 powerprofilesctl set "$previous" fi