From 08f2d860319ef1256077674413bc02f11d165a00 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Jul 2026 12:40:59 -0700 Subject: [PATCH 1/5] 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 2/5] 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 From fe30a07db20f52e85241420a7673f17be92931d8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 13 Jul 2026 17:47:59 -0700 Subject: [PATCH 3/5] Remove the dropped packages preventing installation --- bin/omarchy-install-gaming-retroarch | 4 ++-- bin/omarchy-remove-gaming-retroarch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/omarchy-install-gaming-retroarch b/bin/omarchy-install-gaming-retroarch index 3ebfea77..36076c43 100755 --- a/bin/omarchy-install-gaming-retroarch +++ b/bin/omarchy-install-gaming-retroarch @@ -10,12 +10,12 @@ omarchy-pkg-add \ retroarch-assets-glui retroarch-assets-ozone retroarch-assets-xmb \ libretro-beetle-pce libretro-beetle-pce-fast libretro-beetle-psx libretro-beetle-psx-hw libretro-beetle-supergrafx \ libretro-blastem \ - libretro-bsnes libretro-bsnes-hd libretro-bsnes2014 \ + libretro-bsnes libretro-bsnes-hd \ libretro-core-info \ libretro-desmume libretro-dolphin libretro-flycast \ libretro-gambatte libretro-genesis-plus-gx \ libretro-kronos \ - libretro-mame libretro-mame2016 libretro-melonds libretro-mesen libretro-mesen-s libretro-mgba libretro-mupen64plus-next \ + libretro-mame libretro-melonds libretro-mesen libretro-mesen-s libretro-mgba libretro-mupen64plus-next \ libretro-nestopia \ libretro-overlays \ libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \ diff --git a/bin/omarchy-remove-gaming-retroarch b/bin/omarchy-remove-gaming-retroarch index 82e0a8dc..2eb2037b 100755 --- a/bin/omarchy-remove-gaming-retroarch +++ b/bin/omarchy-remove-gaming-retroarch @@ -10,12 +10,12 @@ omarchy-pkg-drop \ retroarch-assets-glui retroarch-assets-ozone retroarch-assets-xmb \ libretro-beetle-pce libretro-beetle-pce-fast libretro-beetle-psx libretro-beetle-psx-hw libretro-beetle-supergrafx \ libretro-blastem \ - libretro-bsnes libretro-bsnes-hd libretro-bsnes2014 \ + libretro-bsnes libretro-bsnes-hd \ libretro-core-info \ libretro-desmume libretro-dolphin libretro-flycast \ libretro-gambatte libretro-genesis-plus-gx \ libretro-kronos \ - libretro-mame libretro-mame2016 libretro-melonds libretro-mesen libretro-mesen-s libretro-mgba libretro-mupen64plus-next \ + libretro-mame libretro-melonds libretro-mesen libretro-mesen-s libretro-mgba libretro-mupen64plus-next \ libretro-nestopia \ libretro-overlays \ libretro-parallel-n64 libretro-picodrive libretro-play libretro-ppsspp \ From 94305c9284e29b42e1472c2b50cfdae5ee30d46b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 19 Jul 2026 21:59:10 -0700 Subject: [PATCH 4/5] Fix Neovim theme symlink pointing at the Omarchy 4 theme location (#6318) * Address upgrade migration review feedback * Only promote firmware during kernel transitions * Remove the dropped packages preventing installation * Fix Neovim theme symlink pointing at the Omarchy 4 theme location omarchy-nvim briefly created ~/.config/nvim/lua/plugins/theme.lua linked to ~/.local/state/omarchy/current, which doesn't exist on Omarchy 3.x, so fresh installs errored on nvim startup with "Failed to load plugins.theme" (#6309). Retarget the link to ~/.config/omarchy/current unless the user has already customized it. Co-Authored-By: Claude Fable 5 --------- Co-authored-by: Claude Fable 5 --- migrations/1784518937.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 migrations/1784518937.sh diff --git a/migrations/1784518937.sh b/migrations/1784518937.sh new file mode 100644 index 00000000..f92cc78e --- /dev/null +++ b/migrations/1784518937.sh @@ -0,0 +1,10 @@ +echo "Point the Neovim theme symlink at the Omarchy 3.x theme location" + +# omarchy-nvim briefly created ~/.config/nvim/lua/plugins/theme.lua linked to +# the Omarchy 4 theme location, which doesn't exist on Omarchy 3.x, so Neovim +# failed to load plugins.theme on startup (#6309). Retarget the link to the +# 3.x location, but leave any customized link alone. +theme_link="$HOME/.config/nvim/lua/plugins/theme.lua" +if [[ -L $theme_link && $(readlink "$theme_link") == *.local/state/omarchy/current/theme/neovim.lua ]]; then + ln -snf "../../../../.config/omarchy/current/theme/neovim.lua" "$theme_link" +fi From bc4eb93f59400e71f06fa00e00597b68fa34ad53 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 20 Jul 2026 09:21:21 -0700 Subject: [PATCH 5/5] Package name is now neovim --- install/omarchy-base.packages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages index acdddc47..cbf83365 100644 --- a/install/omarchy-base.packages +++ b/install/omarchy-base.packages @@ -89,7 +89,7 @@ noto-fonts noto-fonts-cjk noto-fonts-emoji nss-mdns -nvim +neovim obs-studio obsidian omarchy-nvim