From 703581cee2e9ade5a8c52b863eb719ee951435df Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Fri, 22 May 2026 12:04:45 -0400 Subject: [PATCH 01/22] Fix logs uploading --- bin/omarchy-debug | 6 ++---- bin/omarchy-upload-log | 36 ++++++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/bin/omarchy-debug b/bin/omarchy-debug index 830caa1b..c163e171 100755 --- a/bin/omarchy-debug +++ b/bin/omarchy-debug @@ -74,15 +74,13 @@ ACTION=$(gum choose "${OPTIONS[@]}") case "$ACTION" in "Upload log") - echo "Uploading debug log to 0x0.st..." - URL=$(curl -sF "file=@$LOG_FILE" -Fexpires=24 https://0x0.st) + echo "Uploading debug log to logs.omarchy.org..." + URL=$(curl -sf -F "file=@$LOG_FILE" https://logs.omarchy.org/) if (( $? == 0 )) && [[ -n $URL ]]; then echo "✓ Log uploaded successfully!" echo "Share this URL:" echo "" echo " $URL" - echo "" - echo "This link will expire in 24 hours." else echo "Error: Failed to upload log file" exit 1 diff --git a/bin/omarchy-upload-log b/bin/omarchy-upload-log index 7d06ac3b..c4aa8cf4 100755 --- a/bin/omarchy-upload-log +++ b/bin/omarchy-upload-log @@ -1,6 +1,6 @@ #!/bin/bash -# omarchy:summary=Upload logs to 0x0.st +# omarchy:summary=Upload logs to logs.omarchy.org # omarchy:args= # omarchy:hidden=true @@ -28,7 +28,7 @@ else echo "=========================================" echo "SYSTEM INFORMATION" echo "=========================================" - echo "Hostname: $(hostname)" + echo "Hostname: $(uname -n)" echo "Kernel: $(uname -r)" echo "Date: $(date)" echo "" @@ -41,19 +41,33 @@ fi case "$LOG_TYPE" in install) + # In the live ISO before reboot, the target system is mounted at /mnt so the + # omarchy install log lives at /mnt/var/log/omarchy-install.log. On the + # installed system it's at /var/log/omarchy-install.log. Prefer whichever + # exists, with /mnt taking precedence (only present in the ISO context, and + # there it's the right one). ARCHINSTALL_LOG="/var/log/archinstall/install.log" - OMARCHY_LOG="/var/log/omarchy-install.log" + if [[ -s /mnt/var/log/omarchy-install.log ]]; then + OMARCHY_LOG="/mnt/var/log/omarchy-install.log" + else + OMARCHY_LOG="/var/log/omarchy-install.log" + fi - # Combine system info with logs cat "$SYSTEM_INFO" >"$TEMP_LOG" - cat $ARCHINSTALL_LOG $OMARCHY_LOG >>"$TEMP_LOG" 2>/dev/null + [[ -s $ARCHINSTALL_LOG ]] && cat "$ARCHINSTALL_LOG" >>"$TEMP_LOG" + if [[ -s $OMARCHY_LOG ]]; then + printf '\n========================================\nOMARCHY INSTALL LOG (%s)\n========================================\n\n' "$OMARCHY_LOG" >>"$TEMP_LOG" + cat "$OMARCHY_LOG" >>"$TEMP_LOG" + else + echo "Warning: omarchy install log not found (looked at /mnt/var/log/ and /var/log/)" >&2 + fi if [[ ! -s $TEMP_LOG ]]; then echo "Error: No install logs found" exit 1 fi - echo "Uploading installation log to 0x0.st..." + echo "Uploading installation log to logs.omarchy.org..." ;; this-boot) @@ -66,7 +80,7 @@ this-boot) exit 1 fi - echo "Uploading current boot logs to 0x0.st..." + echo "Uploading current boot logs to logs.omarchy.org..." ;; last-boot) @@ -79,7 +93,7 @@ last-boot) exit 1 fi - echo "Uploading previous boot logs to 0x0.st..." + echo "Uploading previous boot logs to logs.omarchy.org..." ;; installed|system-info) @@ -98,7 +112,7 @@ installed|system-info) exit 1 fi - echo "Uploading system information to 0x0.st..." + echo "Uploading system information to logs.omarchy.org..." ;; *) @@ -113,15 +127,13 @@ esac echo "" -URL=$(curl -sF "file=@$TEMP_LOG" -Fexpires=24 https://0x0.st) +URL=$(curl -sf -F "file=@$TEMP_LOG" https://logs.omarchy.org/) if (( $? == 0 )) && [[ -n $URL ]]; then echo "✓ Log uploaded successfully!" echo "Share this URL:" echo "" echo " $URL" - echo "" - echo "This link will expire in 24 hours." else echo "Error: Failed to upload log file" exit 1 From b4939c8ccb78cdcf350d255d03d9030ac786672b Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Sat, 23 May 2026 02:04:14 -0400 Subject: [PATCH 02/22] Fail hard if we don't get the right branch --- boot.sh | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/boot.sh b/boot.sh index e17c7af2..e01a52fc 100755 --- a/boot.sh +++ b/boot.sh @@ -1,5 +1,7 @@ #!/bin/bash +set -e + # Set install mode to online since boot.sh is used for curl installations export OMARCHY_ONLINE_INSTALL=true @@ -38,13 +40,9 @@ sudo pacman -Syu --noconfirm --needed git OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}" echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git" -rm -rf ~/.local/share/omarchy/ -git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null - echo -e "\e[32mUsing branch: $OMARCHY_REF\e[0m" -cd ~/.local/share/omarchy -git fetch origin "${OMARCHY_REF}" && git checkout "${OMARCHY_REF}" -cd - +rm -rf ~/.local/share/omarchy/ +git clone --branch "$OMARCHY_REF" "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null echo -e "\nInstallation starting..." source ~/.local/share/omarchy/install.sh From ea25179b7ca9bd24d78ca3ecac9238b8ee9297ac Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 23 May 2026 20:05:46 +0200 Subject: [PATCH 03/22] Fix HL 0.55 compatible unified clipboard hotkeys --- config/elephant/symbols.toml | 2 +- default/hypr/bindings/clipboard.conf | 6 +++--- migrations/1779516254.sh | 11 +++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 migrations/1779516254.sh diff --git a/config/elephant/symbols.toml b/config/elephant/symbols.toml index 3144c152..fc7926ff 100644 --- a/config/elephant/symbols.toml +++ b/config/elephant/symbols.toml @@ -1 +1 @@ -command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT, Insert,"' +command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT,Insert,activewindow"' diff --git a/default/hypr/bindings/clipboard.conf b/default/hypr/bindings/clipboard.conf index ffaede7a..214d2586 100644 --- a/default/hypr/bindings/clipboard.conf +++ b/default/hypr/bindings/clipboard.conf @@ -1,5 +1,5 @@ # Copy / Paste -bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, -bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert, -bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X, +bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert, activewindow +bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert, activewindow +bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X, activewindow bindd = SUPER CTRL, V, Clipboard manager, exec, omarchy-launch-walker -m clipboard diff --git a/migrations/1779516254.sh b/migrations/1779516254.sh new file mode 100644 index 00000000..3fef7150 --- /dev/null +++ b/migrations/1779516254.sh @@ -0,0 +1,11 @@ +echo "Update elephant symbols paste shortcut for Hyprland 0.55" + +symbols_config=~/.config/elephant/symbols.toml + +if [[ -f $symbols_config ]]; then + sed -i 's/hyprctl dispatch sendshortcut "SHIFT, Insert,"/hyprctl dispatch sendshortcut "SHIFT,Insert,activewindow"/' "$symbols_config" +else + omarchy-refresh-config elephant/symbols.toml +fi + +omarchy-restart-walker From f9e41548c1ab777d5fdb90702a75e2d210d30459 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Sat, 23 May 2026 18:27:38 -0400 Subject: [PATCH 04/22] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index f2807196..a08ffae0 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.8.1 +3.8.2 From 9a5e80f2be6e6201358735da026fc83aa55e9d89 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 25 May 2026 14:50:56 +0200 Subject: [PATCH 05/22] Fix compatibility of old tiling.conf with HL 0.55+ Closes #5973 --- default/hypr/bindings/tiling.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index b1dc65cc..62ad1cde 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -6,7 +6,7 @@ bindd = SUPER, W, Close window, killactive, bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all # Control tiling -bindd = SUPER, J, Toggle window split, togglesplit, # dwindle +bindd = SUPER, J, Toggle window split, layoutmsg, togglesplit bindd = SUPER, P, Pseudo window, pseudo, # dwindle bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating, bindd = SHIFT, F11, Force full screen, fullscreen, 0 From ae7365f937e7caf57783e4631de1e47f293f8804 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 27 May 2026 21:20:39 +0200 Subject: [PATCH 06/22] Fix repeated fingerprint setup --- bin/omarchy-setup-security-fingerprint | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bin/omarchy-setup-security-fingerprint b/bin/omarchy-setup-security-fingerprint index f704348e..08588be0 100755 --- a/bin/omarchy-setup-security-fingerprint +++ b/bin/omarchy-setup-security-fingerprint @@ -53,12 +53,12 @@ echo -e "\e[32mSetting up fingerprint scanner for authentication.\n\e[0m" # Install required packages echo "Installing required packages..." +installed_libfprint=$(pacman -Qq libfprint 2>/dev/null || true) + # libfprint-git provides+conflicts libfprint; pacman -S --noconfirm -# defaults the conflict prompt to N and aborts. Pre-remove libfprint -# with -Rdd so the install goes silent. -Rdd (not omarchy-pkg-drop's -# -Rns) is required because fprintd requires libfprint; the dep is -# re-satisfied immediately by libfprint-git's provides=libfprint. -if omarchy-pkg-present libfprint; then +# defaults the conflict prompt to N and aborts. Pre-remove the exact +# libfprint package, but not an installed provider like libfprint-git. +if [[ $installed_libfprint == "libfprint" ]]; then sudo pacman -Rdd --noconfirm libfprint fi From ca19e2deadf1277e2974a992957297febe5a79aa Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 21:55:43 -0700 Subject: [PATCH 07/22] Add easier tmux pane controls --- config/alacritty/alacritty.toml | 5 ++++- config/foot/foot.ini | 6 ++++++ config/ghostty/config | 4 ++++ config/kitty/kitty.conf | 4 ++++ config/tmux/tmux.conf | 5 +++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml index dcf34042..d1d90fb2 100644 --- a/config/alacritty/alacritty.toml +++ b/config/alacritty/alacritty.toml @@ -21,5 +21,8 @@ decorations = "None" bindings = [ { key = "Insert", mods = "Shift", action = "Paste" }, { key = "Insert", mods = "Control", action = "Copy" }, -{ key = "Return", mods = "Shift", chars = "\u001B\r" } +# Send Shift+Return as CSI-u so TUIs can distinguish it from Return without treating it as Alt+Return. +{ key = "Return", mods = "Shift", chars = "\u001B[13;2u" }, +# Legacy encoding sends Alt+Shift+Return the same as Alt+Return; send CSI-u so tmux can match M-S-Enter. +{ key = "Return", mods = "Alt|Shift", chars = "\u001B[13;4u" } ] diff --git a/config/foot/foot.ini b/config/foot/foot.ini index 9cbd91ec..ffb0cef1 100644 --- a/config/foot/foot.ini +++ b/config/foot/foot.ini @@ -17,3 +17,9 @@ blink=no clipboard-copy=Control+Insert primary-paste=none clipboard-paste=Shift+Insert + +[text-bindings] +# Send Shift+Return as CSI-u so TUIs can distinguish it from Return. +\x1b[13;2u=Shift+Return +# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter. +\x1b[13;4u=Mod1+Shift+Return diff --git a/config/ghostty/config b/config/ghostty/config index d53f5c32..b121557b 100644 --- a/config/ghostty/config +++ b/config/ghostty/config @@ -25,6 +25,10 @@ shell-integration-features = no-cursor,ssh-env # Keyboard bindings keybind = shift+insert=paste_from_clipboard keybind = control+insert=copy_to_clipboard +# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter. +keybind = shift+enter=csi:13;2u +# Legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter. +keybind = alt+shift+enter=csi:13;4u keybind = super+control+shift+alt+arrow_down=resize_split:down,100 keybind = super+control+shift+alt+arrow_up=resize_split:up,100 keybind = super+control+shift+alt+arrow_left=resize_split:left,100 diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index 7d550d78..48710ba6 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -13,6 +13,10 @@ confirm_os_window_close 0 # Keybindings map ctrl+insert copy_to_clipboard map shift+insert paste_from_clipboard +# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter. +map shift+enter send_text all \e[13;2u +# Kitty legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter. +map alt+shift+enter send_text all \e[13;4u # Allow remote access allow_remote_control yes diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index de772031..b5446eac 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -12,6 +12,10 @@ bind -T copy-mode-vi v send -X begin-selection bind -T copy-mode-vi y send -X copy-selection-and-cancel # Pane Controls +bind -n M-Enter split-window -v -c "#{pane_current_path}" +bind -n M-S-Enter split-window -h -c "#{pane_current_path}" +bind -n M-Escape kill-pane + bind h split-window -v -c "#{pane_current_path}" bind v split-window -h -c "#{pane_current_path}" bind x kill-pane @@ -72,6 +76,7 @@ setw -g aggressive-resize on set -g detach-on-destroy off set -g extended-keys on set -g extended-keys-format csi-u +set -g terminal-features[3] "xterm-kitty:extkeys" set -sg escape-time 10 # Status bar From ab92126ccec13c62a0cc9ceea39b3f2396c8a73a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 21:56:09 -0700 Subject: [PATCH 08/22] Use titles for better remote server identification with hyprland groups --- config/tmux/tmux.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index b5446eac..26f598de 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -87,6 +87,8 @@ set -g status-right-length 50 set -g window-status-separator "" set -gw automatic-rename on set -gw automatic-rename-format '#{b:pane_current_path}' +set -g set-titles on +set -g set-titles-string '#h:#W' # Theme set -g status-style "bg=default,fg=default" From dc804616eed9a9c29e3af3e2e6a1974ac216c061 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:14:44 -0700 Subject: [PATCH 09/22] Make sure Intel wildcat machines get sof-firmware for working audio --- bin/omarchy-hw-intel-wcl | 5 +++++ install/config/hardware/intel/sof-firmware.sh | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) create mode 100755 bin/omarchy-hw-intel-wcl diff --git a/bin/omarchy-hw-intel-wcl b/bin/omarchy-hw-intel-wcl new file mode 100755 index 00000000..ffacbb7b --- /dev/null +++ b/bin/omarchy-hw-intel-wcl @@ -0,0 +1,5 @@ +#!/bin/bash + +# omarchy:summary=Detect whether the computer has an Intel Wildcat Lake GPU. + +lspci | grep -iE 'vga|3d|display' | grep -qi 'wildcat lake' diff --git a/install/config/hardware/intel/sof-firmware.sh b/install/config/hardware/intel/sof-firmware.sh index 36b0be95..73ceab24 100644 --- a/install/config/hardware/intel/sof-firmware.sh +++ b/install/config/hardware/intel/sof-firmware.sh @@ -1,8 +1,9 @@ -# Install Sound Open Firmware for the audio DSP on non-XPS Intel Panther -# Lake systems. XPS PTL stays on linux-ptl, which hard-deps sof-firmware. -# Mainline `linux` only optdeps it, so without this the DSP fails to boot -# and only auto_null shows up in PipeWire. +# Install Sound Open Firmware for the audio DSP on Intel Panther Lake and +# Wildcat Lake systems (the latter includes the XPS13 2026). Mainline +# `linux` only optdeps sof-firmware, so without it the DSP fails to boot +# and only auto_null shows up in PipeWire. Idempotent on XPS PTL machines +# that already pull it in via linux-ptl. -if omarchy-hw-intel-ptl && ! omarchy-hw-match "XPS"; then +if omarchy-hw-intel-ptl || omarchy-hw-intel-wcl; then omarchy-pkg-add sof-firmware fi From 22a484db9c2a4e8bb187a3b1a0748ae66e115481 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:21:22 -0700 Subject: [PATCH 10/22] Add migration for easier tmux pane controls Updates existing users' terminal and tmux configs to match ca19e2de: Alt+Enter/Alt+Shift+Enter splits and Alt+Escape kill in tmux, plus CSI-u Shift+Enter encodings across alacritty, foot, ghostty, and kitty. Co-Authored-By: Claude Opus 4.8 (1M context) --- migrations/1783833508.sh | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 migrations/1783833508.sh diff --git a/migrations/1783833508.sh b/migrations/1783833508.sh new file mode 100644 index 00000000..bd274e9c --- /dev/null +++ b/migrations/1783833508.sh @@ -0,0 +1,46 @@ +echo "Add easier tmux pane controls with Alt+Enter splits and CSI-u Shift+Enter across terminals" + +# tmux: add M-Enter/M-S-Enter/M-Escape pane bindings and enable extkeys for kitty terminal +tmux_config="$HOME/.config/tmux/tmux.conf" +if [[ -f $tmux_config ]]; then + if ! grep -q "M-S-Enter" "$tmux_config"; then + sed -i '/^# Pane Controls$/a\bind -n M-Enter split-window -v -c "#{pane_current_path}"\nbind -n M-S-Enter split-window -h -c "#{pane_current_path}"\nbind -n M-Escape kill-pane\n' "$tmux_config" + fi + + if ! grep -q "terminal-features" "$tmux_config"; then + sed -i '/^set -g extended-keys-format csi-u$/a\set -g terminal-features[3] "xterm-kitty:extkeys"' "$tmux_config" + fi + + omarchy-restart-tmux +fi + +# alacritty: replace the old Shift+Return binding with CSI-u encodings +alacritty_config="$HOME/.config/alacritty/alacritty.toml" +if [[ -f $alacritty_config ]] && ! grep -q '13;2u' "$alacritty_config"; then + sed -i -E 's|^([[:space:]]*).*chars = "\\u001B\\r".*|\1# Send Shift+Return as CSI-u so TUIs can distinguish it from Return without treating it as Alt+Return.\n\1{ key = "Return", mods = "Shift", chars = "\\u001B[13;2u" },\n\1# Legacy encoding sends Alt+Shift+Return the same as Alt+Return; send CSI-u so tmux can match M-S-Enter.\n\1{ key = "Return", mods = "Alt\|Shift", chars = "\\u001B[13;4u" }|' "$alacritty_config" +fi + +# foot: append CSI-u text bindings for Shift+Return and Alt+Shift+Return +foot_config="$HOME/.config/foot/foot.ini" +if [[ -f $foot_config ]] && ! grep -q '13;2u' "$foot_config"; then + cat >>"$foot_config" <<'EOF' + +[text-bindings] +# Send Shift+Return as CSI-u so TUIs can distinguish it from Return. +\x1b[13;2u=Shift+Return +# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter. +\x1b[13;4u=Mod1+Shift+Return +EOF +fi + +# ghostty: add CSI-u keybinds for Shift+Enter and Alt+Shift+Enter +ghostty_config="$HOME/.config/ghostty/config" +if [[ -f $ghostty_config ]] && ! grep -q 'csi:13;2u' "$ghostty_config"; then + sed -i '/^keybind = control+insert=copy_to_clipboard$/a\# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.\nkeybind = shift+enter=csi:13;2u\n# Legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.\nkeybind = alt+shift+enter=csi:13;4u' "$ghostty_config" +fi + +# kitty: add CSI-u key mappings for Shift+Enter and Alt+Shift+Enter +kitty_config="$HOME/.config/kitty/kitty.conf" +if [[ -f $kitty_config ]] && ! grep -q '13;2u' "$kitty_config"; then + sed -i '/^map shift+insert paste_from_clipboard$/a\# Send Shift+Enter as CSI-u so TUIs can distinguish it from Enter.\nmap shift+enter send_text all \\e[13;2u\n# Kitty legacy encoding sends Alt+Shift+Enter the same as Alt+Enter; send CSI-u so tmux can match M-S-Enter.\nmap alt+shift+enter send_text all \\e[13;4u' "$kitty_config" +fi From e0810547862016db4cfe12b15ab8b1153b6d76bc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:25:08 -0700 Subject: [PATCH 11/22] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index a08ffae0..269aa9c8 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.8.2 +3.8.3 From ffa81021136281384a373f79b778139883e6e1dc Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:30:39 -0700 Subject: [PATCH 12/22] Widen sof-firmware install to all Intel SOF audio platforms Adapts basecamp/omarchy#6200. The sof-audio-pci-intel-* driver family (Arrow Lake, Meteor Lake, Tiger Lake, Alder Lake, and more) needs sof-firmware to boot the DSP, but mainline linux only optdeps it, so fresh installs came up with no audio (Dummy Output only). Replace the Panther/Wildcat Lake GPU checks with omarchy-hw-intel-sof, which detects any Intel PCI audio controller. Drop the XPS exclusion since omarchy-pkg-add is idempotent and the check is harmless there. Remove the now-orphaned omarchy-hw-intel-wcl detector and backfill existing installs via migration. Co-Authored-By: Claude Opus 4.8 (1M context) --- bin/omarchy-hw-intel-sof | 7 +++++++ bin/omarchy-hw-intel-wcl | 5 ----- install/config/hardware/intel/sof-firmware.sh | 15 +++++++++------ migrations/1783834201.sh | 13 +++++++++++++ 4 files changed, 29 insertions(+), 11 deletions(-) create mode 100755 bin/omarchy-hw-intel-sof delete mode 100755 bin/omarchy-hw-intel-wcl create mode 100644 migrations/1783834201.sh diff --git a/bin/omarchy-hw-intel-sof b/bin/omarchy-hw-intel-sof new file mode 100755 index 00000000..387ca38b --- /dev/null +++ b/bin/omarchy-hw-intel-sof @@ -0,0 +1,7 @@ +#!/bin/bash + +# omarchy:summary=Detect whether the computer has an Intel SOF-capable audio DSP. +# Matches Intel audio controllers (PCI class Multimedia audio or Audio device) +# present on Skylake-and-later platforms that use sof-audio-pci-intel-* drivers. + +lspci | grep -qiE '(Multimedia audio controller|Audio device).*Intel' diff --git a/bin/omarchy-hw-intel-wcl b/bin/omarchy-hw-intel-wcl deleted file mode 100755 index ffacbb7b..00000000 --- a/bin/omarchy-hw-intel-wcl +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -# omarchy:summary=Detect whether the computer has an Intel Wildcat Lake GPU. - -lspci | grep -iE 'vga|3d|display' | grep -qi 'wildcat lake' diff --git a/install/config/hardware/intel/sof-firmware.sh b/install/config/hardware/intel/sof-firmware.sh index 73ceab24..e0d70f2e 100644 --- a/install/config/hardware/intel/sof-firmware.sh +++ b/install/config/hardware/intel/sof-firmware.sh @@ -1,9 +1,12 @@ -# Install Sound Open Firmware for the audio DSP on Intel Panther Lake and -# Wildcat Lake systems (the latter includes the XPS13 2026). Mainline -# `linux` only optdeps sof-firmware, so without it the DSP fails to boot -# and only auto_null shows up in PipeWire. Idempotent on XPS PTL machines -# that already pull it in via linux-ptl. +# Install Sound Open Firmware for the audio DSP on Intel systems that need it. +# The sof-audio-pci-intel-* driver family requires sof-firmware to initialise +# the DSP; without it the DSP fails to boot and PipeWire exposes only a Dummy +# Output sink. This affects Arrow Lake, Meteor Lake, Tiger Lake, Alder Lake, +# Wildcat Lake, Panther Lake, and similar platforms. +# +# omarchy-pkg-add is idempotent, so systems that already pull sof-firmware in +# via linux-ptl (Panther Lake XPS) are unaffected. -if omarchy-hw-intel-ptl || omarchy-hw-intel-wcl; then +if omarchy-hw-intel-sof; then omarchy-pkg-add sof-firmware fi diff --git a/migrations/1783834201.sh b/migrations/1783834201.sh new file mode 100644 index 00000000..77d4ca21 --- /dev/null +++ b/migrations/1783834201.sh @@ -0,0 +1,13 @@ +echo "Install sof-firmware for all Intel SOF audio DSP platforms (Arrow Lake, Meteor Lake, etc.)" + +# Intel SOF platforms beyond Panther Lake and Wildcat Lake (Arrow Lake, Meteor +# Lake, Tiger Lake, Alder Lake) were not covered by the original sof-firmware +# install guard. Without sof-firmware the DSP fails to boot and PipeWire exposes +# only a Dummy Output. Install it now for all qualifying Intel systems. +# +# omarchy-pkg-add is idempotent — systems that already have the package are +# unaffected. + +if omarchy-hw-intel-sof; then + omarchy-pkg-add sof-firmware +fi From 54410563bb2c3ee6cafb435a19dda66c7cbe26a0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:34:00 -0700 Subject: [PATCH 13/22] Add cy alias for codex --- default/bash/aliases | 1 + 1 file changed, 1 insertion(+) diff --git a/default/bash/aliases b/default/bash/aliases index 656d145f..df42d923 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -45,6 +45,7 @@ alias ....='cd ../../..' # Tools alias c='opencode' alias cx='printf "\033[2J\033[3J\033[H" && claude --permission-mode bypassPermissions' +alias cy='codex -s danger-full-access -a never' alias d='docker' alias r='rails' alias t='tmux attach || tmux new -s Work' From 5bba34d4d3ea501fcfff9cd49888d8ff55d08ab7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 11 Jul 2026 22:34:11 -0700 Subject: [PATCH 14/22] Add mup alias for updating mise without the release age guard --- default/bash/aliases | 1 + 1 file changed, 1 insertion(+) diff --git a/default/bash/aliases b/default/bash/aliases index df42d923..8bbfa5f5 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -52,6 +52,7 @@ alias t='tmux attach || tmux new -s Work' alias ic='tdl c' alias ix='tdl cx' alias icx='tdl c cx' +alias mup='MISE_MINIMUM_RELEASE_AGE=0 mise up' n() { if [ "$#" -eq 0 ]; then command nvim . ; else command nvim "$@"; fi; } # Git From efcd78058056cedee32e900039bd76948da618a0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 12 Jul 2026 07:38:10 -0700 Subject: [PATCH 15/22] Append the terminal feature instead of just ovewrwritting the 3 --- config/tmux/tmux.conf | 2 +- migrations/1783833508.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index 26f598de..470040a3 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -76,7 +76,7 @@ setw -g aggressive-resize on set -g detach-on-destroy off set -g extended-keys on set -g extended-keys-format csi-u -set -g terminal-features[3] "xterm-kitty:extkeys" +set -ag terminal-features "xterm-kitty:extkeys" set -sg escape-time 10 # Status bar diff --git a/migrations/1783833508.sh b/migrations/1783833508.sh index bd274e9c..1fc988fd 100644 --- a/migrations/1783833508.sh +++ b/migrations/1783833508.sh @@ -7,8 +7,8 @@ if [[ -f $tmux_config ]]; then sed -i '/^# Pane Controls$/a\bind -n M-Enter split-window -v -c "#{pane_current_path}"\nbind -n M-S-Enter split-window -h -c "#{pane_current_path}"\nbind -n M-Escape kill-pane\n' "$tmux_config" fi - if ! grep -q "terminal-features" "$tmux_config"; then - sed -i '/^set -g extended-keys-format csi-u$/a\set -g terminal-features[3] "xterm-kitty:extkeys"' "$tmux_config" + if ! grep -q "xterm-kitty:extkeys" "$tmux_config"; then + sed -i '/^set -g extended-keys-format csi-u$/a\set -ag terminal-features "xterm-kitty:extkeys"' "$tmux_config" fi omarchy-restart-tmux From da46ad859aa8ae4dd4bc6880c4f65432827b603b Mon Sep 17 00:00:00 2001 From: Sai Sridhar Date: Sun, 12 Jul 2026 07:49:12 -0700 Subject: [PATCH 16/22] Backfill Mesa Vulkan drivers for systems installed before vulkan.sh Systems installed before vulkan.sh (2026-02-20) never received their Mesa Vulkan ICD. Add a migration replaying vulkan.sh's GPU vendor detection and idempotent omarchy-pkg-add calls to backfill Intel/AMD/Asahi drivers. Closes #6199. Reported in #6089. Co-Authored-By: Claude Opus 4.8 (1M context) --- migrations/1783625095.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 migrations/1783625095.sh diff --git a/migrations/1783625095.sh b/migrations/1783625095.sh new file mode 100644 index 00000000..d3c4cd91 --- /dev/null +++ b/migrations/1783625095.sh @@ -0,0 +1,19 @@ +echo "Backfill Mesa Vulkan drivers for systems installed before vulkan.sh was added" + +declare -A VULKAN_DRIVERS=( + [Intel]=vulkan-intel + [AMD]=vulkan-radeon + [Apple]=vulkan-asahi +) + +PACKAGES=() + +for vendor in "${!VULKAN_DRIVERS[@]}"; do + if lspci | grep -iE "(VGA|Display).*$vendor" > /dev/null; then + PACKAGES+=("${VULKAN_DRIVERS[$vendor]}") + fi +done + +if (( ${#PACKAGES[@]} > 0 )); then + omarchy-pkg-add "${PACKAGES[@]}" +fi From e891e5c22fee407c8ce8c6562d09a7c49109e978 Mon Sep 17 00:00:00 2001 From: Zeus-Deus Date: Sun, 12 Jul 2026 08:00:13 -0700 Subject: [PATCH 17/22] Bundle vconsole.conf in the initramfs so Plymouth uses the right keymap at the LUKS prompt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plymouth 26 reads the keyboard layout from /etc/vconsole.conf, but the keymap hook only bakes in the compiled keymap.bin, not the config file, so the LUKS prompt falls back to US QWERTY. Add FILES+=(/etc/vconsole.conf) to omarchy_hooks.conf so the initramfs carries it. New installs pick it up via limine-snapper.sh; existing installs get it through a migration that rebuilds the UKI. Additive — keymap.bin is unchanged, so no extra lockout risk. Closes #6183. Related to #6151 and #6072. Co-Authored-By: Claude Opus 4.8 (1M context) --- install/login/limine-snapper.sh | 1 + migrations/1783355853.sh | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 migrations/1783355853.sh diff --git a/install/login/limine-snapper.sh b/install/login/limine-snapper.sh index ce9fffbb..935f746e 100644 --- a/install/login/limine-snapper.sh +++ b/install/login/limine-snapper.sh @@ -1,6 +1,7 @@ if command -v limine &>/dev/null; then 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) +FILES+=(/etc/vconsole.conf) EOF sudo tee /etc/mkinitcpio.conf.d/thunderbolt_module.conf </dev/null MODULES+=(thunderbolt) diff --git a/migrations/1783355853.sh b/migrations/1783355853.sh new file mode 100644 index 00000000..6c44856f --- /dev/null +++ b/migrations/1783355853.sh @@ -0,0 +1,11 @@ +echo "Bundle the console keymap into the initramfs so Plymouth uses the right keyboard layout at the LUKS prompt" + +HOOKS_CONF="/etc/mkinitcpio.conf.d/omarchy_hooks.conf" + +if [[ -f $HOOKS_CONF ]] && ! grep -q '/etc/vconsole.conf' "$HOOKS_CONF"; then + echo "FILES+=(/etc/vconsole.conf)" | sudo tee -a "$HOOKS_CONF" >/dev/null + + if omarchy-cmd-present limine-mkinitcpio; then + sudo limine-mkinitcpio + fi +fi From 749a8c04666291f3f60ff65a7d71080ac2ec7e5b Mon Sep 17 00:00:00 2001 From: Diego Date: Sun, 12 Jul 2026 08:15:48 -0700 Subject: [PATCH 18/22] Drop fixed unit name from power-profile udev rule to prevent wakeup failures On USB-C-only laptops, multiple power_supply udev events fire at once on resume, and each tries to create the same --unit=omarchy-power-profile transient unit, so all but the first fail with "unit already loaded" and log an error on every wakeup. Drop the fixed unit name so each event gets an auto-generated one; powerprofilesctl set is idempotent, so concurrent runs are harmless, and --collect still garbage-collects each unit on exit. Closes #6091. Co-Authored-By: Claude Opus 4.8 (1M context) --- install/config/powerprofilesctl-rules.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/config/powerprofilesctl-rules.sh b/install/config/powerprofilesctl-rules.sh index 0715a1c6..e099f5d3 100644 --- a/install/config/powerprofilesctl-rules.sh +++ b/install/config/powerprofilesctl-rules.sh @@ -1,7 +1,7 @@ if omarchy-battery-present; then cat < Date: Sun, 12 Jul 2026 17:05:02 -0700 Subject: [PATCH 19/22] Nudge XPS 13 text scaling down just ever so slightly --- bin/omarchy-first-run | 1 + install/first-run/text-scaling.sh | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 install/first-run/text-scaling.sh diff --git a/bin/omarchy-first-run b/bin/omarchy-first-run index 023d1a65..659ec319 100755 --- a/bin/omarchy-first-run +++ b/bin/omarchy-first-run @@ -18,6 +18,7 @@ if [[ -f $FIRST_RUN_MODE ]]; then bash "$OMARCHY_PATH/install/first-run/gnome-theme.sh" bash "$OMARCHY_PATH/install/first-run/swayosd.sh" bash "$OMARCHY_PATH/install/first-run/gtk-primary-paste.sh" + bash "$OMARCHY_PATH/install/first-run/text-scaling.sh" bash "$OMARCHY_PATH/install/first-run/elephant.sh" omarchy-hook-install post-update "$OMARCHY_PATH/install/first-run/install-voxtype.hook" sudo rm -f /etc/sudoers.d/first-run diff --git a/install/first-run/text-scaling.sh b/install/first-run/text-scaling.sh new file mode 100644 index 00000000..e9342525 --- /dev/null +++ b/install/first-run/text-scaling.sh @@ -0,0 +1,5 @@ +# Nudge text down slightly on the Dell XPS 13 (DX13260, 2026), whose 2560x1600 +# panel renders the default scaling a touch large. +if omarchy-hw-match "DX13260"; then + gsettings set org.gnome.desktop.interface text-scaling-factor 0.95 +fi From 9791b2279c2ba2c9769c375f5d20e056c14c87a9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 12 Jul 2026 19:32:20 -0700 Subject: [PATCH 20/22] Make package removal ignore providers --- bin/omarchy-pkg-drop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-pkg-drop b/bin/omarchy-pkg-drop index 0cbbfca6..7e5dd4b2 100755 --- a/bin/omarchy-pkg-drop +++ b/bin/omarchy-pkg-drop @@ -6,7 +6,7 @@ installed=() for pkg in "$@"; do - if pacman -Q "$pkg" &>/dev/null; then + if pacman -Qq | grep -Fxq "$pkg"; then installed+=("$pkg") fi done From 08f2d860319ef1256077674413bc02f11d165a00 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Jul 2026 12:40:59 -0700 Subject: [PATCH 21/22] Address upgrade migration review feedback --- install/config/hardware/intel/sof-firmware.sh | 5 ++- migrations/1783833508.sh | 43 +++++++++++++------ migrations/1783834201.sh | 13 ++++-- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/install/config/hardware/intel/sof-firmware.sh b/install/config/hardware/intel/sof-firmware.sh index e0d70f2e..3fd07222 100644 --- a/install/config/hardware/intel/sof-firmware.sh +++ b/install/config/hardware/intel/sof-firmware.sh @@ -4,9 +4,10 @@ # Output sink. This affects Arrow Lake, Meteor Lake, Tiger Lake, Alder Lake, # Wildcat Lake, Panther Lake, and similar platforms. # -# omarchy-pkg-add is idempotent, so systems that already pull sof-firmware in -# via linux-ptl (Panther Lake XPS) are unaffected. +# Mark the package explicit so the orphan sweep cannot remove firmware that was +# originally installed as a linux-ptl dependency. if omarchy-hw-intel-sof; then omarchy-pkg-add sof-firmware + sudo pacman -D --asexplicit sof-firmware >/dev/null fi diff --git a/migrations/1783833508.sh b/migrations/1783833508.sh index 1fc988fd..7572dcfe 100644 --- a/migrations/1783833508.sh +++ b/migrations/1783833508.sh @@ -1,16 +1,32 @@ echo "Add easier tmux pane controls with Alt+Enter splits and CSI-u Shift+Enter across terminals" -# tmux: add M-Enter/M-S-Enter/M-Escape pane bindings and enable extkeys for kitty terminal +# tmux: add pane bindings, enable kitty extkeys, and set informative terminal titles tmux_config="$HOME/.config/tmux/tmux.conf" if [[ -f $tmux_config ]]; then - if ! grep -q "M-S-Enter" "$tmux_config"; then - sed -i '/^# Pane Controls$/a\bind -n M-Enter split-window -v -c "#{pane_current_path}"\nbind -n M-S-Enter split-window -h -c "#{pane_current_path}"\nbind -n M-Escape kill-pane\n' "$tmux_config" + if ! grep -Fq 'bind -n M-Escape kill-pane' "$tmux_config"; then + sed -i '/^# Pane Controls$/a\bind -n M-Escape kill-pane' "$tmux_config" + fi + + if ! grep -Fq 'bind -n M-S-Enter split-window' "$tmux_config"; then + sed -i '/^# Pane Controls$/a\bind -n M-S-Enter split-window -h -c "#{pane_current_path}"' "$tmux_config" + fi + + if ! grep -Fq 'bind -n M-Enter split-window' "$tmux_config"; then + sed -i '/^# Pane Controls$/a\bind -n M-Enter split-window -v -c "#{pane_current_path}"' "$tmux_config" fi if ! grep -q "xterm-kitty:extkeys" "$tmux_config"; then sed -i '/^set -g extended-keys-format csi-u$/a\set -ag terminal-features "xterm-kitty:extkeys"' "$tmux_config" fi + if ! grep -Fq 'set -g set-titles on' "$tmux_config"; then + sed -i "/^set -gw automatic-rename-format/a\\set -g set-titles on" "$tmux_config" + fi + + if ! grep -Fq 'set -g set-titles-string' "$tmux_config"; then + sed -i "/^set -g set-titles on$/a\\set -g set-titles-string '#h:#W'" "$tmux_config" + fi + omarchy-restart-tmux fi @@ -20,17 +36,20 @@ if [[ -f $alacritty_config ]] && ! grep -q '13;2u' "$alacritty_config"; then sed -i -E 's|^([[:space:]]*).*chars = "\\u001B\\r".*|\1# Send Shift+Return as CSI-u so TUIs can distinguish it from Return without treating it as Alt+Return.\n\1{ key = "Return", mods = "Shift", chars = "\\u001B[13;2u" },\n\1# Legacy encoding sends Alt+Shift+Return the same as Alt+Return; send CSI-u so tmux can match M-S-Enter.\n\1{ key = "Return", mods = "Alt\|Shift", chars = "\\u001B[13;4u" }|' "$alacritty_config" fi -# foot: append CSI-u text bindings for Shift+Return and Alt+Shift+Return +# foot: add CSI-u text bindings for Shift+Return and Alt+Shift+Return foot_config="$HOME/.config/foot/foot.ini" -if [[ -f $foot_config ]] && ! grep -q '13;2u' "$foot_config"; then - cat >>"$foot_config" <<'EOF' +if [[ -f $foot_config ]]; then + if ! grep -q '^\[text-bindings\]$' "$foot_config"; then + sed -i '$a\\\n[text-bindings]' "$foot_config" + fi -[text-bindings] -# Send Shift+Return as CSI-u so TUIs can distinguish it from Return. -\x1b[13;2u=Shift+Return -# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter. -\x1b[13;4u=Mod1+Shift+Return -EOF + if ! grep -Fq '\x1b[13;4u=Mod1+Shift+Return' "$foot_config"; then + sed -i '/^\[text-bindings\]$/a\# Send Alt+Shift+Return as CSI-u so tmux can match M-S-Enter.\n\\x1b[13;4u=Mod1+Shift+Return' "$foot_config" + fi + + if ! grep -Fq '\x1b[13;2u=Shift+Return' "$foot_config"; then + sed -i '/^\[text-bindings\]$/a\# Send Shift+Return as CSI-u so TUIs can distinguish it from Return.\n\\x1b[13;2u=Shift+Return' "$foot_config" + fi fi # ghostty: add CSI-u keybinds for Shift+Enter and Alt+Shift+Enter diff --git a/migrations/1783834201.sh b/migrations/1783834201.sh index 77d4ca21..f764aadd 100644 --- a/migrations/1783834201.sh +++ b/migrations/1783834201.sh @@ -5,9 +5,16 @@ echo "Install sof-firmware for all Intel SOF audio DSP platforms (Arrow Lake, Me # install guard. Without sof-firmware the DSP fails to boot and PipeWire exposes # only a Dummy Output. Install it now for all qualifying Intel systems. # -# omarchy-pkg-add is idempotent — systems that already have the package are -# unaffected. - if omarchy-hw-intel-sof; then + firmware_missing=false + if omarchy-pkg-missing sof-firmware; then + firmware_missing=true + fi + omarchy-pkg-add sof-firmware + sudo pacman -D --asexplicit sof-firmware >/dev/null + + if [[ $firmware_missing == "true" ]]; then + omarchy-state set reboot-required + fi fi From 96fb7df4773be86559baf4b6849d3d2c5158e30e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Jul 2026 12:49:16 -0700 Subject: [PATCH 22/22] Only promote firmware during kernel transitions --- install/config/hardware/intel/sof-firmware.sh | 4 ---- migrations/1783834201.sh | 13 ++----------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/install/config/hardware/intel/sof-firmware.sh b/install/config/hardware/intel/sof-firmware.sh index 3fd07222..6d9b1294 100644 --- a/install/config/hardware/intel/sof-firmware.sh +++ b/install/config/hardware/intel/sof-firmware.sh @@ -3,11 +3,7 @@ # the DSP; without it the DSP fails to boot and PipeWire exposes only a Dummy # Output sink. This affects Arrow Lake, Meteor Lake, Tiger Lake, Alder Lake, # Wildcat Lake, Panther Lake, and similar platforms. -# -# Mark the package explicit so the orphan sweep cannot remove firmware that was -# originally installed as a linux-ptl dependency. if omarchy-hw-intel-sof; then omarchy-pkg-add sof-firmware - sudo pacman -D --asexplicit sof-firmware >/dev/null fi diff --git a/migrations/1783834201.sh b/migrations/1783834201.sh index f764aadd..a0aac722 100644 --- a/migrations/1783834201.sh +++ b/migrations/1783834201.sh @@ -4,17 +4,8 @@ echo "Install sof-firmware for all Intel SOF audio DSP platforms (Arrow Lake, Me # Lake, Tiger Lake, Alder Lake) were not covered by the original sof-firmware # install guard. Without sof-firmware the DSP fails to boot and PipeWire exposes # only a Dummy Output. Install it now for all qualifying Intel systems. -# -if omarchy-hw-intel-sof; then - firmware_missing=false - if omarchy-pkg-missing sof-firmware; then - firmware_missing=true - fi +if omarchy-hw-intel-sof && omarchy-pkg-missing sof-firmware; then omarchy-pkg-add sof-firmware - sudo pacman -D --asexplicit sof-firmware >/dev/null - - if [[ $firmware_missing == "true" ]]; then - omarchy-state set reboot-required - fi + omarchy-state set reboot-required fi