From 8b896b60a9306f04221d00316e214554236c8b0d Mon Sep 17 00:00:00 2001 From: ZorudaRinku Date: Fri, 17 Oct 2025 19:30:29 -0600 Subject: [PATCH 01/49] Clarify error message when no web apps have been selected in the WebApp Remove menu --- bin/omarchy-webapp-remove | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-webapp-remove b/bin/omarchy-webapp-remove index 833e8989..77f19aba 100755 --- a/bin/omarchy-webapp-remove +++ b/bin/omarchy-webapp-remove @@ -30,7 +30,7 @@ else fi if [[ ${#APP_NAMES[@]} -eq 0 ]]; then - echo "You must provide web app names." + echo "You must select at least one web app to remove." exit 1 fi From de2b32d77f8e5234d09a68310ecf2c5a18187351 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 24 Oct 2025 06:06:34 -0700 Subject: [PATCH 02/49] Sort keybindings on SUPER + K Easier to learn when presented in order --- bin/omarchy-menu-keybindings | 38 ++++++++++++++++++++++++++++ default/hypr/bindings/clipboard.conf | 8 +++--- default/hypr/bindings/tiling-v2.conf | 24 ++++++++---------- default/hypr/bindings/tiling.conf | 8 +++--- default/hypr/bindings/utilities.conf | 8 +++--- 5 files changed, 61 insertions(+), 25 deletions(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index 4547a6dc..aabb064b 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -147,6 +147,43 @@ parse_bindings() { }' } +prioritize_entries() { + awk ' + { + line = $0 + prio = 50 + if (match(line, /Terminal/)) prio = 0 + if (match(line, /Browser/) && !match(line, /Browser[[:space:]]*\(/)) prio = 1 + if (match(line, /File manager/)) prio = 2 + if (match(line, /Launch apps/)) prio = 3 + if (match(line, /Omarchy menu/)) prio = 4 + if (match(line, /System menu/)) prio = 5 + if (match(line, /Theme menu/)) prio = 6 + if (match(line, /Full screen/)) prio = 7 + if (match(line, /Close window/)) prio = 8 + if (match(line, /Toggle window floating/)) prio = 9 + if (match(line, /Toggle window split/)) prio = 10 + if (match(line, /Universal/)) prio = 11 + if (match(line, /Clipboard/)) prio = 12 + if (match(line, /Emoji picker/)) prio = 13 + if (match(line, /Screenshot/)) prio = 14 + if (match(line, /Screenrecording/)) prio = 15 + if (match(line, /Switch to workspace/)) prio = 16 + if (match(line, /Move window to workspace/)) prio = 17 + if (match(line, /Swap window/)) prio = 18 + if (match(line, /Move window focus/)) prio = 19 + if (match(line, /notification/)) prio = 20 + if (match(line, /group/)) prio = 97 + if (match(line, /Apple Display/)) prio = 98 + if (match(line, /XF86/)) prio = 99 + + # print "priorityline" + printf "%d\t%s\n", prio, line + }' | + sort -k1,1n -k2,2 | + cut -f2- +} + monitor_height=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | .height') menu_height=$((monitor_height * 40 / 100)) @@ -156,4 +193,5 @@ dynamic_bindings | sort -u | parse_keycodes | parse_bindings | + prioritize_entries | walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height" diff --git a/default/hypr/bindings/clipboard.conf b/default/hypr/bindings/clipboard.conf index 2a79989a..ffaede7a 100644 --- a/default/hypr/bindings/clipboard.conf +++ b/default/hypr/bindings/clipboard.conf @@ -1,5 +1,5 @@ # Copy / Paste -bindd = SUPER, C, Copy, sendshortcut, CTRL, Insert, -bindd = SUPER, V, Paste, sendshortcut, SHIFT, Insert, -bindd = SUPER, X, Cut, sendshortcut, CTRL, X, -bindd = SUPER CTRL, V, Clipboard, exec, omarchy-launch-walker -m clipboard +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 CTRL, V, Clipboard manager, exec, omarchy-launch-walker -m clipboard diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 2e5e15ba..5a49a4d5 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -1,22 +1,22 @@ # Close windows -bindd = SUPER, W, Close active window, killactive, -bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all +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 split, togglesplit, # dwindle +bindd = SUPER, J, Toggle window split, togglesplit, # dwindle bindd = SUPER, P, Pseudo window, pseudo, # dwindle -bindd = SUPER, T, Toggle floating, togglefloating, -bindd = SUPER, F, Force full screen, fullscreen, 0 +bindd = SUPER, T, Toggle window floating/tiling, togglefloating, +bindd = SUPER, F, Full screen, fullscreen, 0 bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2 bindd = SUPER ALT, F, Full width, fullscreen, 1 # Move focus with SUPER + arrow keys -bindd = SUPER, LEFT, Move focus left, movefocus, l -bindd = SUPER, RIGHT, Move focus right, movefocus, r -bindd = SUPER, UP, Move focus up, movefocus, u -bindd = SUPER, DOWN, Move focus down, movefocus, d +bindd = SUPER, LEFT, Move window focus left, movefocus, l +bindd = SUPER, RIGHT, Move window focus right, movefocus, r +bindd = SUPER, UP, Move window focus up, movefocus, u +bindd = SUPER, DOWN, Move window focus down, movefocus, d -# Switch workspaces with SUPER + [0-9] +# Switch workspaces with SUPER + [1-9] bindd = SUPER, code:10, Switch to workspace 1, workspace, 1 bindd = SUPER, code:11, Switch to workspace 2, workspace, 2 bindd = SUPER, code:12, Switch to workspace 3, workspace, 3 @@ -26,9 +26,8 @@ bindd = SUPER, code:15, Switch to workspace 6, workspace, 6 bindd = SUPER, code:16, Switch to workspace 7, workspace, 7 bindd = SUPER, code:17, Switch to workspace 8, workspace, 8 bindd = SUPER, code:18, Switch to workspace 9, workspace, 9 -bindd = SUPER, code:19, Switch to workspace 10, workspace, 10 -# Move active window to a workspace with SUPER + SHIFT + [0-9] +# Move active window to a workspace with SUPER + SHIFT + [1-9] bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2 bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3 @@ -38,7 +37,6 @@ bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6 bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7 bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 -bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10 # TAB between workspaces bindd = SUPER, TAB, Next workspace, workspace, e+1 diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 2007b3b0..b1dc65cc 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -2,13 +2,13 @@ # Do not make changes here, but bring them to tiling-v2.conf instead. # Close windows -bindd = SUPER, W, Close active window, killactive, -bindd = CTRL ALT, DELETE, Close all Windows, exec, omarchy-hyprland-window-close-all +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 split, togglesplit, # dwindle +bindd = SUPER, J, Toggle window split, togglesplit, # dwindle bindd = SUPER, P, Pseudo window, pseudo, # dwindle -bindd = SUPER SHIFT, V, Toggle floating, togglefloating, +bindd = SUPER SHIFT, V, Toggle window floating/tiling, togglefloating, bindd = SHIFT, F11, Force full screen, fullscreen, 0 bindd = ALT, F11, Full width, fullscreen, 1 diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index b7b533e4..39085eec 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -2,7 +2,7 @@ bindd = SUPER, SPACE, Launch apps, exec, omarchy-launch-walker bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu -bindd = SUPER, ESCAPE, Power menu, exec, omarchy-menu system +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 bindd = , XF86Calculator, Calculator, exec, gnome-calculator @@ -10,7 +10,7 @@ bindd = , XF86Calculator, Calculator, exec, gnome-calculator # Aesthetics bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar bindd = SUPER CTRL, SPACE, Next background in theme, exec, omarchy-theme-bg-next -bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, omarchy-menu theme +bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle bindd = SUPER SHIFT, BACKSPACE, Toggle workspace gaps, exec, omarchy-hyprland-workspace-toggle-gaps @@ -31,8 +31,8 @@ bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-cmd-apple-display-b bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-display-brightness +60000 # Captures -bindd = , PRINT, Screenshot with Editing, exec, omarchy-cmd-screenshot -bindd = SHIFT, PRINT, Screenshot to Clipboard, exec, omarchy-cmd-screenshot smart clipboard +bindd = , PRINT, Screenshot with editing, exec, omarchy-cmd-screenshot +bindd = SHIFT, PRINT, Screenshot to clipboard, exec, omarchy-cmd-screenshot smart clipboard bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a From eac7ea8a4972da71e07c225173e5d66bbeaccc6f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 24 Oct 2025 06:26:46 -0700 Subject: [PATCH 03/49] Few more tweaks to the keybindings --- bin/omarchy-menu-keybindings | 38 ++++++++++++++++++++++------ default/hypr/bindings/utilities.conf | 2 +- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index aabb064b..b22dddfb 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -49,6 +49,17 @@ parse_keycodes() { code="${BASH_REMATCH[1]}" symbol=$(lookup_keycode_cached "$code" "$XKB_KEYMAP_CACHE") echo "${line/code:${code}/$symbol}" + elif [[ "$line" =~ mouse:([0-9]+) ]]; then + code="${BASH_REMATCH[1]}" + + case "$code" in + 272) symbol="LEFT MOUSE BUTTON" ;; + 273) symbol="RIGHT MOUSE BUTTON" ;; + 274) symbol="MIDDLE MOUSE BUTTON" ;; + *) symbol="mouse:${code}" ;; + esac + + echo "${line/mouse:${code}/$symbol}" else echo "$line" fi @@ -166,14 +177,25 @@ prioritize_entries() { if (match(line, /Universal/)) prio = 11 if (match(line, /Clipboard/)) prio = 12 if (match(line, /Emoji picker/)) prio = 13 - if (match(line, /Screenshot/)) prio = 14 - if (match(line, /Screenrecording/)) prio = 15 - if (match(line, /Switch to workspace/)) prio = 16 - if (match(line, /Move window to workspace/)) prio = 17 - if (match(line, /Swap window/)) prio = 18 - if (match(line, /Move window focus/)) prio = 19 - if (match(line, /notification/)) prio = 20 - if (match(line, /group/)) prio = 97 + if (match(line, /Color picker/)) prio = 14 + if (match(line, /Screenshot/)) prio = 15 + if (match(line, /Screenrecording/)) prio = 16 + if (match(line, /Switch to workspace/)) prio = 17 + if (match(line, /Move window to workspace/)) prio = 18 + if (match(line, /Swap window/)) prio = 19 + if (match(line, /Move window focus/)) prio = 20 + if (match(line, /Move window$/)) prio = 21 + if (match(line, /Resize window/)) prio = 22 + if (match(line, /Expand window/)) prio = 23 + if (match(line, /Shrink window/)) prio = 24 + if (match(line, /notification/)) prio = 25 + if (match(line, /Toggle window transparency/)) prio = 26 + if (match(line, /Toggle workspace gaps/)) prio = 27 + if (match(line, /Toggle nightlight/)) prio = 28 + if (match(line, /group/)) prio = 94 + if (match(line, /Scroll active workspace/)) prio = 95 + if (match(line, /Cycle to/)) prio = 96 + if (match(line, /Reveal active/)) prio = 97 if (match(line, /Apple Display/)) prio = 98 if (match(line, /XF86/)) prio = 99 diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 39085eec..0d414bd0 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -34,7 +34,7 @@ bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-cmd-apple-d bindd = , PRINT, Screenshot with editing, exec, omarchy-cmd-screenshot bindd = SHIFT, PRINT, Screenshot to clipboard, exec, omarchy-cmd-screenshot smart clipboard bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord -bindd = SUPER, PRINT, Color picking, exec, pkill hyprpicker || hyprpicker -a +bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a # File sharing bindd = SUPER CTRL, S, Share, exec, omarchy-menu share From 795bfdd969b201c2ec3e1e297dc98df7ba7e51fa Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 24 Oct 2025 06:30:47 -0700 Subject: [PATCH 04/49] Include all workspace movements together --- bin/omarchy-menu-keybindings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index b22dddfb..225e528e 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -180,7 +180,7 @@ prioritize_entries() { if (match(line, /Color picker/)) prio = 14 if (match(line, /Screenshot/)) prio = 15 if (match(line, /Screenrecording/)) prio = 16 - if (match(line, /Switch to workspace/)) prio = 17 + if (match(line, /(Switch|Next|Former|Previous).*workspace/)) prio = 17 if (match(line, /Move window to workspace/)) prio = 18 if (match(line, /Swap window/)) prio = 19 if (match(line, /Move window focus/)) prio = 20 From 69c2195c1083a8539387e3de20d909ce4f56935e Mon Sep 17 00:00:00 2001 From: Rishabh Sarang <73608084+Rishabh-Sarang@users.noreply.github.com> Date: Fri, 24 Oct 2025 19:05:30 +0530 Subject: [PATCH 05/49] fix(hyprland): match Brave portal dialogs in floating-window rule (#2788) * fix(hyprland): match Brave portal dialogs in floating-window rule Brave on Wayland uses xdg-desktop-portal-gtk for permission and file dialogs. These windows use website-based titles (e.g. "chatgpt.com wants to open") instead of "Open File" or "Save File", so they were not matched by the floating-window rule. This commit expands the title regex to include those patterns, ensuring Brave dialogs float properly. * Shrink scope --------- Co-authored-by: David Heinemeier Hansson --- default/hypr/apps/system.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index fbddc65c..65f9d3ea 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -4,7 +4,7 @@ windowrule = center, tag:floating-window windowrule = size 800 600, tag:floating-window windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float) -windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files) +windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to open.*|Choose application.*) windowrule = float, class:org.gnome.Calculator # Fullscreen screensaver From 6f0958aa6764b72448a339729f8e1b72d95533a6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 24 Oct 2025 07:13:01 -0700 Subject: [PATCH 06/49] Suggest entirely fullscreen view option --- config/hypr/looknfeel.conf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf index 39022b89..62e26344 100644 --- a/config/hypr/looknfeel.conf +++ b/config/hypr/looknfeel.conf @@ -2,9 +2,10 @@ # https://wiki.hyprland.org/Configuring/Variables/#general general { - # No gaps between windows + # No gaps between windows or borders # gaps_in = 0 # gaps_out = 0 + # border_size = 0 # Use master layout instead of dwindle # layout = master From 37518c222c9dee87fb51d91dbe3598fb9cc4b443 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 24 Oct 2025 07:16:36 -0700 Subject: [PATCH 07/49] Control border size instead so it works if default is 0 --- bin/omarchy-hyprland-workspace-toggle-gaps | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-hyprland-workspace-toggle-gaps b/bin/omarchy-hyprland-workspace-toggle-gaps index 4304758a..f7882305 100755 --- a/bin/omarchy-hyprland-workspace-toggle-gaps +++ b/bin/omarchy-hyprland-workspace-toggle-gaps @@ -4,7 +4,7 @@ workspace_id=$(hyprctl activeworkspace -j | jq -r .id) gaps=$(hyprctl workspacerules -j | jq -r ".[] | select(.workspaceString==\"$workspace_id\") | .gapsOut[0] // 0") if [[ $gaps == "0" ]]; then - hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, border:true" + hyprctl keyword "workspace $workspace_id, gapsout:10, gapsin:5, bordersize:2" else \ - hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, border:false" + hyprctl keyword "workspace $workspace_id, gapsout:0, gapsin:0, bordersize:0" fi From 9a90afb6e88e9b47aad9b79e0c499fee58714412 Mon Sep 17 00:00:00 2001 From: Nikhil Jain Date: Sat, 25 Oct 2025 01:25:14 +0530 Subject: [PATCH 08/49] New window replaces the current fullscreen or maximized window (#2821) * New window replaces the current fullscreen or maximized window Currently if we are in fullscreen or full-width mode and either start a new application OR create a new window of an existing application. Like an incognito window Then those new windows/apps start in the background. There is no indication that something new has been created. IMHO, if I am opening an application then I want to switch to it. I cannot think of any common use case for having new applications open in the background. This change will cause new application to replace current application as the fullscreen / fullwidth window Please see docs: https://wiki.hypr.land/Configuring/Variables/#misc Option: new_window_takes_over_fullscreen Desc: if there is a fullscreen or maximized window, decide whether a new tiled window opened should replace it, stay behind or disable the fullscreen/maximized state. 0 - behind, 1 - takes over, 2 - unfullscreen/unmaxize [0/1/2] Type: int Default: 0 * fix the setting name --- default/hypr/looknfeel.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index 823a1121..44bfbd39 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -120,6 +120,7 @@ misc { disable_splash_rendering = true focus_on_activate = true anr_missed_pings = 3 + new_window_takes_over_fullscreen = 1 } # https://wiki.hypr.land/Configuring/Variables/#cursor From 7b0289596235a7a7964c568e3c5ab2b54de519d7 Mon Sep 17 00:00:00 2001 From: Brennan Coslett Date: Sat, 25 Oct 2025 01:18:23 -0500 Subject: [PATCH 09/49] Surface: enable built-in keyboard at LUKS (#2621) Derives the list of required modules for the installer from Chris McLeod's manual installation steps. His instructions say to use the surface-linux kernel however the default kernel has the right set of modules already (as noted by the fact that the right modules are loaded for the keyboard to work during the install and after the LUKS unlock screen). I only have a Surface Laptop 3 to test this on but based on the guide where Chris is using a newer laptop and the only difference is the pinctrl module which I attempt to autodetect I think it should "just" work for others but definitely "use at your own risk". --- install/config/all.sh | 1 + .../config/hardware/fix-surface-keyboard.sh | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 install/config/hardware/fix-surface-keyboard.sh diff --git a/install/config/all.sh b/install/config/all.sh index 2304d8e9..5c19829c 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -30,3 +30,4 @@ run_logged $OMARCHY_INSTALL/config/hardware/fix-bcm43xx.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-spi-keyboard.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-suspend-nvme.sh run_logged $OMARCHY_INSTALL/config/hardware/fix-apple-t2.sh +run_logged $OMARCHY_INSTALL/config/hardware/fix-surface-keyboard.sh diff --git a/install/config/hardware/fix-surface-keyboard.sh b/install/config/hardware/fix-surface-keyboard.sh new file mode 100644 index 00000000..d68fe5ae --- /dev/null +++ b/install/config/hardware/fix-surface-keyboard.sh @@ -0,0 +1,23 @@ +# Detect Surface devices which require additional modules for the keyboard to work. +# Module list derived from Chris McLeod's manual install instructions +# https://chrismcleod.dev/blog/installing-arch-linux-with-secure-boot-on-a-microsoft-surface-laptop-studio/ +product_name="$(cat /sys/class/dmi/id/product_name 2>/dev/null)" +if [[ "$product_name" =~ Surface ]]; then + echo "Detected Surface Device" + + # Modules already exist in the rootfs for the default kernel. + if [[ "$product_name" != "Surface Laptop 3" ]]; then + echo "Untested Surface Device: $product_name, additional modules may be required for your device." + fi + + echo "Attempting to autodetect required pinctrl module" + pinctrl_module=$(lsmod | grep pinctrl_ | cut -f 1 -d" ") + if [[ -z "$pinctrl_module" ]]; then + echo "Failed to autodetect pinctrl module." + else + echo "Detected pinctrl module: $pinctrl_module" + fi + + echo "MODULES=(${pinctrl_module} surface_aggregator surface_aggregator_registry surface_aggregator_hub surface_hid_core surface_hid surface_kbd intel_lpss_pci 8250_dw)" | sudo tee /etc/mkinitcpio.conf.d/surface_device_modules.conf >/dev/null + +fi From 6fce5e28c9f98599b50b7def150737ea0d970649 Mon Sep 17 00:00:00 2001 From: Rishabh Sarang <73608084+Rishabh-Sarang@users.noreply.github.com> Date: Sat, 25 Oct 2025 16:46:16 +0530 Subject: [PATCH 10/49] fix(portal): match additional 'Choose Export Directory' dialogs (#2839) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some applications (e.g. Aether) use xdg-desktop-portal-gtk to open folder chooser dialogs titled "Choose Export Directory" or similar. These were not matched by the previous floating-window regex, causing them to tile instead of float. This change expands the title regex to include "Choose …" patterns, ensuring these dialogs float and center properly in Hyprland --- default/hypr/apps/system.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 65f9d3ea..d1df3d31 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -4,7 +4,7 @@ windowrule = center, tag:floating-window windowrule = size 800 600, tag:floating-window windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float) -windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to open.*|Choose application.*) +windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to open.*|[C|c]hoose.*) windowrule = float, class:org.gnome.Calculator # Fullscreen screensaver From b92beef2948920e6e106be2314fe31ce3ce5ca39 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 25 Oct 2025 14:25:06 +0200 Subject: [PATCH 11/49] Ensure Wayland IME is turned on when starting Typora from hotkey too --- config/hypr/bindings.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index d63a8ce8..1f60098a 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -12,7 +12,7 @@ bindd = SUPER SHIFT, T, Activity, exec, $terminal -e btop bindd = SUPER SHIFT, D, Docker, exec, $terminal -e lazydocker bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus signal "uwsm-app -- signal-desktop" bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus "^obsidian$" "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime" -bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora +bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- 1password # If your web app url contains #, type it as ## to prevent hyprland treating it as a comment From 9b798c3c0f7674041e4e28b81f7fbd33e37f9dc5 Mon Sep 17 00:00:00 2001 From: Manuel Date: Sat, 25 Oct 2025 21:38:13 +0200 Subject: [PATCH 12/49] Add the keybinding for the copy url extension in the SUPER+K Menu (#2801) * init * go with a hardcoded list * revert manifest modification --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-menu-keybindings | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index 225e528e..c9c785f2 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -112,6 +112,11 @@ dynamic_bindings() { -e 's/^77,/SUPER SHIFT CTRL ALT,/' } +# Hardcoded bindings, like the copy-url extension and such +static_bindings() { + echo "SHIFT ALT,L,Copy URL from Web App,extension,copy-url" +} + # Parse and format keybindings # # `awk` does the heavy lifting: @@ -211,9 +216,13 @@ menu_height=$((monitor_height * 40 / 100)) build_keymap_cache -dynamic_bindings | +{ + dynamic_bindings + static_bindings +} | sort -u | parse_keycodes | parse_bindings | prioritize_entries | walker --dmenu -p 'Keybindings' --width 800 --height "$menu_height" + From 249318b39897147c1cd53e47047e0ce93acf433a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 25 Oct 2025 21:46:31 +0200 Subject: [PATCH 13/49] Ensure that elephant is started before walker Because if not, we get the dreaded "Waiting for elephant" message. CC: @abenz1267 --- bin/omarchy-restart-walker | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/omarchy-restart-walker b/bin/omarchy-restart-walker index 4abcb88e..1b5f4ea1 100755 --- a/bin/omarchy-restart-walker +++ b/bin/omarchy-restart-walker @@ -17,5 +17,6 @@ if [[ $EUID -eq 0 ]]; then " else setsid uwsm-app -- elephant & + wait 2 setsid uwsm-app -- walker --gapplication-service & fi From 1d294069106b2043eb6d87faa5d7b10f8785f8b0 Mon Sep 17 00:00:00 2001 From: Andrej Benz Date: Sat, 25 Oct 2025 21:47:23 +0200 Subject: [PATCH 14/49] fix: cleanup default walker config values (#2560) --- config/walker/config.toml | 104 -------------------------------------- 1 file changed, 104 deletions(-) diff --git a/config/walker/config.toml b/config/walker/config.toml index 85a86a12..240c95e0 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -1,28 +1,12 @@ force_keyboard_focus = true # forces keyboard forcus to stay in Walker -close_when_open = true # close walker when invoking while already opened selection_wrap = true # wrap list if at bottom or top -click_to_close = true # closes walker if clicking outside of the main content area -global_argument_delimiter = "#" # query: firefox#https://benz.dev => part after delimiter will be ignored when querying. this should be the same as in the elephant config -exact_search_prefix = "'" # disable fuzzy searching theme = "omarchy-default" # theme to use -disable_mouse = false # disable mouse (on input and list only) additional_theme_location = "~/.local/share/omarchy/default/walker/themes/" -[shell] -anchor_top = true -anchor_bottom = true -anchor_left = true -anchor_right = true - [placeholders] "default" = { input = " Search...", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other" [keybinds] -close = ["Escape"] -next = ["Down"] -previous = ["Up"] -toggle_exact = ["ctrl e"] -resume_last_query = ["ctrl r"] quick_activate = [] [providers] @@ -31,11 +15,6 @@ default = [ "menus", "websearch", ] # providers to be queried by default -empty = ["desktopapplications"] # providers to be queried when query is empty -max_results = 50 # global max results - -[providers.sets] # define your own defaults/empty sets of providers -[providers.max_results_provider] # define max results per provider in here [[providers.prefixes]] prefix = "/" @@ -60,86 +39,3 @@ provider = "websearch" [[providers.prefixes]] prefix = "$" provider = "clipboard" - -[providers.actions] # This will be MERGED/OVEWRITTEN with what the user specifies -dmenu = [{ action = "select", default = true, bind = "Return" }] - -providerlist = [ - { action = "activate", default = true, bind = "Return", after = "ClearReload" }, -] - -bluetooth = [ - { action = "find", global = true, bind = "ctrl f", after = "AsyncClearReload" }, - { action = "trust", bind = "ctrl t", after = "AsyncReload" }, - { action = "untrust", bind = "ctrl t", after = "AsyncReload" }, - { action = "pair", bind = "Return", after = "AsyncReload" }, - { action = "remove", bind = "ctrl d", after = "AsyncReload" }, - { action = "connect", bind = "Return", after = "AsyncReload" }, - { action = "disconnect", bind = "Return", after = "AsyncReload" }, -] - -archlinuxpkgs = [ - { action = "install", bind = "Return", default = true }, - { action = "remove", bind = "Return" }, -] - -calc = [ - { action = "copy", default = true, bind = "Return" }, - { action = "delete", bind = "ctrl d", after = "AsyncReload" }, - { action = "save", bind = "ctrl s", after = "AsyncClearReload" }, -] - -websearch = [ - { action = "search", default = true, bind = "Return" }, - { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" }, -] - -desktopapplications = [ - { action = "start", default = true, bind = "Return" }, - { action = "start:keep", label = "open+next", bind = "shift Return", after = "KeepOpen" }, - { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "AsyncReload" }, - { action = "pin", bind = "ctrl p", after = "AsyncReload" }, - { action = "unpin", bind = "ctrl p", after = "AsyncReload" }, - { action = "pinup", bind = "ctrl n", after = "AsyncReload" }, - { action = "pindown", bind = "ctrl m", after = "AsyncReload" }, -] - -files = [ - { action = "open", default = true, bind = "Return" }, - { action = "opendir", label = "open dir", bind = "ctrl Return" }, - { action = "copypath", label = "copy path", bind = "ctrl shift c" }, - { action = "copyfile", label = "copy file", bind = "ctrl c" }, -] - -todo = [ - { action = "save", default = true, bind = "Return", after = "ClearReload" }, - { action = "delete", bind = "ctrl d", after = "ClearReload" }, - { action = "active", bind = "Return", after = "ClearReload" }, - { action = "inactive", bind = "Return", after = "ClearReload" }, - { action = "done", bind = "ctrl f", after = "ClearReload" }, - { action = "clear", bind = "ctrl x", after = "ClearReload", global = true }, -] - -runner = [ - { action = "run", default = true, bind = "Return" }, - { action = "runterminal", label = "run in terminal", bind = "shift Return" }, - { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" }, -] - -symbols = [ - { action = "run_cmd", label = "select", default = true, bind = "Return" }, - { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" }, -] - -unicode = [ - { action = "run_cmd", label = "select", default = true, bind = "Return" }, - { action = "erase_history", label = "clear hist", bind = "ctrl h", after = "Reload" }, -] - -clipboard = [ - { action = "copy", default = true, bind = "Return" }, - { action = "remove", bind = "ctrl d", after = "ClearReload" }, - { action = "remove_all", global = true, label = "clear", bind = "ctrl shift d", after = "ClearReload" }, - { action = "toggle_images", global = true, label = "toggle images", bind = "ctrl i", after = "ClearReload" }, - { action = "edit", bind = "ctrl o" }, -] From 7a7881b1765c03480aed9bb461ddbc1884efea2f Mon Sep 17 00:00:00 2001 From: Rishabh Sarang <73608084+Rishabh-Sarang@users.noreply.github.com> Date: Mon, 27 Oct 2025 01:15:59 +0530 Subject: [PATCH 15/49] Update windowrule for xdg-desktop-portal-gtk class (#2876) --- default/hypr/apps/system.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index d1df3d31..bca80dda 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -4,7 +4,7 @@ windowrule = center, tag:floating-window windowrule = size 800 600, tag:floating-window windowrule = tag +floating-window, class:(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float) -windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to open.*|[C|c]hoose.*) +windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*) windowrule = float, class:org.gnome.Calculator # Fullscreen screensaver From 75eb059779150e7dc25c26182dc4a267199520ec Mon Sep 17 00:00:00 2001 From: neimadTL Date: Mon, 27 Oct 2025 03:47:50 -0400 Subject: [PATCH 16/49] Remove after install usb installer message (#2888) Since in almost all cases, the EFI entries will get positioned above the USB, this notice is not needed. --- install/post-install/finished.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install/post-install/finished.sh b/install/post-install/finished.sh index b0b41615..5b524af0 100644 --- a/install/post-install/finished.sh +++ b/install/post-install/finished.sh @@ -22,8 +22,6 @@ fi if sudo test -f /etc/sudoers.d/99-omarchy-installer; then sudo rm -f /etc/sudoers.d/99-omarchy-installer &>/dev/null - echo - echo_in_style "Remember to remove USB installer!" fi # Exit gracefully if user chooses not to reboot From 9b37d8549fa759a3ee402bac3e6a5da9634f459d Mon Sep 17 00:00:00 2001 From: Wiehann Date: Mon, 27 Oct 2025 09:55:38 +0200 Subject: [PATCH 17/49] Fix cd command if zoxide is missing (#2609) * Fix cd command if zoxide is missing * Make use of omarchy-cmd-present --- default/bash/aliases | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/default/bash/aliases b/default/bash/aliases index 53254cbb..c87eb8bb 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -4,16 +4,20 @@ alias lsa='ls -a' alias lt='eza --tree --level=2 --long --icons --git' alias lta='lt -a' alias ff="fzf --preview 'bat --style=numbers --color=always {}'" -alias cd="zd" -zd() { - if [ $# -eq 0 ]; then - builtin cd ~ && return - elif [ -d "$1" ]; then - builtin cd "$1" - else - z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found" - fi -} + +if omarchy-cmd-present z; then + alias cd="zd" + zd() { + if [ $# -eq 0 ]; then + builtin cd ~ && return + elif [ -d "$1" ]; then + builtin cd "$1" + else + z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found" + fi + } +fi + open() { xdg-open "$@" >/dev/null 2>&1 & } From cc5c842f9fab143f34314a045d55008cff0e4628 Mon Sep 17 00:00:00 2001 From: Wiehann Date: Mon, 27 Oct 2025 09:56:27 +0200 Subject: [PATCH 18/49] Fix ls when not using eza (#2607) * Fix ls when not using eza * Make use of omarchy-cmd-present --- default/bash/aliases | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/default/bash/aliases b/default/bash/aliases index c87eb8bb..86abd4a0 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -1,8 +1,11 @@ # File system -alias ls='eza -lh --group-directories-first --icons=auto' -alias lsa='ls -a' -alias lt='eza --tree --level=2 --long --icons --git' -alias lta='lt -a' +if omarchy-cmd-present eza; then + alias ls='eza -lh --group-directories-first --icons=auto' + alias lsa='ls -a' + alias lt='eza --tree --level=2 --long --icons --git' + alias lta='lt -a' +fi + alias ff="fzf --preview 'bat --style=numbers --color=always {}'" if omarchy-cmd-present z; then From 79267da5f211b751a336d90cb7340ce1848aa3af Mon Sep 17 00:00:00 2001 From: Fredrik Storm Date: Mon, 27 Oct 2025 09:00:35 +0100 Subject: [PATCH 19/49] Add bindings for scratchpad support (#2669) * Add bindings for scratchpad support This is great for hiding windows temporarily and bringing them up when needed in an overlay, I'm using it to hide away my webcam control in meetings. ;) * Change shortcut to move window to scratchpad --------- Co-authored-by: David Heinemeier Hansson --- default/hypr/bindings/tiling-v2.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 5a49a4d5..805b4b46 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -38,6 +38,10 @@ bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7 bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8 bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9 +# Control scratchpad +bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad +bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad + # TAB between workspaces bindd = SUPER, TAB, Next workspace, workspace, e+1 bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1 From e0f9beda7a6a5c121059c065857f5a7b7ecbaa89 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 09:02:54 +0100 Subject: [PATCH 20/49] Reposition scratchpad keybindings in cheatsheet --- bin/omarchy-menu-keybindings | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index c9c785f2..39a9e0b6 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -193,10 +193,11 @@ prioritize_entries() { if (match(line, /Resize window/)) prio = 22 if (match(line, /Expand window/)) prio = 23 if (match(line, /Shrink window/)) prio = 24 - if (match(line, /notification/)) prio = 25 - if (match(line, /Toggle window transparency/)) prio = 26 - if (match(line, /Toggle workspace gaps/)) prio = 27 - if (match(line, /Toggle nightlight/)) prio = 28 + if (match(line, /scratchpad/)) prio = 25 + if (match(line, /notification/)) prio = 26 + if (match(line, /Toggle window transparency/)) prio = 27 + if (match(line, /Toggle workspace gaps/)) prio = 28 + if (match(line, /Toggle nightlight/)) prio = 29 if (match(line, /group/)) prio = 94 if (match(line, /Scroll active workspace/)) prio = 95 if (match(line, /Cycle to/)) prio = 96 From e4f2cc217562beb0620f362af5616ced16d2b254 Mon Sep 17 00:00:00 2001 From: Zacharias Knudsen Date: Mon, 27 Oct 2025 09:42:04 +0100 Subject: [PATCH 21/49] Use better git defaults (#1601) --- config/git/config | 28 ++++++++++++++++++++++++++++ install/config/git.sh | 12 ------------ 2 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 config/git/config diff --git a/config/git/config b/config/git/config new file mode 100644 index 00000000..0f8e9797 --- /dev/null +++ b/config/git/config @@ -0,0 +1,28 @@ +# See https://git-scm.com/docs/git-config + +[alias] + co = checkout + br = branch + ci = commit + st = status +[init] + defaultBranch = master +[pull] + rebase = true # Rebase (instead of merge) on pull +[push] + autoSetupRemote = true # Automatically set upstream branch on push +[diff] + algorithm = histogram # Clearer diffs on moved/edited lines + colorMoved = plain # Highlight moved blocks in diffs + mnemonicPrefix = true # More intuitive refs in diff output +[commit] + verbose = true # Include diff comment in commit message template +[column] + ui = auto # Output in columns when possible +[branch] + sort = -committerdate # Sort branches by most recent commit first +[tag] + sort = -version:refname # Sort version numbers as you would expect +[rerere] + enabled = true # Record and reuse conflict resolutions + autoupdate = true # Apply stored conflict resolutions automatically diff --git a/install/config/git.sh b/install/config/git.sh index 39f77ed8..22ad70f6 100644 --- a/install/config/git.sh +++ b/install/config/git.sh @@ -1,15 +1,3 @@ -# Ensure git settings live under ~/.config -mkdir -p ~/.config/git -touch ~/.config/git/config - -# Set common git aliases -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.st status -git config --global pull.rebase true -git config --global init.defaultBranch master - # Set identification from install inputs if [[ -n "${OMARCHY_USER_NAME//[[:space:]]/}" ]]; then git config --global user.name "$OMARCHY_USER_NAME" From bba2ade78ff1b4545ff5f82380aa962aab6cd387 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 09:55:54 +0100 Subject: [PATCH 22/49] Ensure node is installed for use by treesitter in neovim cc @ryanrhughes --- install/packaging/nvim.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install/packaging/nvim.sh b/install/packaging/nvim.sh index e7680c51..b60079e5 100644 --- a/install/packaging/nvim.sh +++ b/install/packaging/nvim.sh @@ -1 +1,5 @@ +# Node is needed for neovim treesitter +mise use -g node@latest + +# Includes lazyvim and the themes omarchy-nvim-setup From d128833e7bd413d05cd7393364f3dbc619bf1ece Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 14:51:52 +0100 Subject: [PATCH 23/49] Already in mise-work --- install/packaging/nvim.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install/packaging/nvim.sh b/install/packaging/nvim.sh index b60079e5..e045d19e 100644 --- a/install/packaging/nvim.sh +++ b/install/packaging/nvim.sh @@ -1,5 +1,2 @@ -# Node is needed for neovim treesitter -mise use -g node@latest - # Includes lazyvim and the themes omarchy-nvim-setup From e0e71a34fe11c632d209fd4e2eb3688f61ab2de5 Mon Sep 17 00:00:00 2001 From: ctarx Date: Mon, 27 Oct 2025 13:55:14 +0000 Subject: [PATCH 24/49] imv: add default Ctrl+P binding to print current image via CUPS (#2872) * imv: add default Ctrl+P binding to print current image via CUPS * Add imv config migration with backup --------- Co-authored-by: David Heinemeier Hansson --- config/imv/config | 2 ++ migrations/1761569743.sh | 9 +++++++++ 2 files changed, 11 insertions(+) create mode 100644 config/imv/config create mode 100644 migrations/1761569743.sh diff --git a/config/imv/config b/config/imv/config new file mode 100644 index 00000000..f54c29af --- /dev/null +++ b/config/imv/config @@ -0,0 +1,2 @@ +[binds] + = exec lp $imv_current_file diff --git a/migrations/1761569743.sh b/migrations/1761569743.sh new file mode 100644 index 00000000..f45e7bfd --- /dev/null +++ b/migrations/1761569743.sh @@ -0,0 +1,9 @@ +echo "Add default Ctrl+P binding for imv; backup existing config if present" + +if [ -f ~/.config/imv/config ]; then + cp ~/.config/imv/config ~/.config/imv/config.bak.$(date +%s) +else + mkdir -p ~/.config/imv +fi + +cp ~/.local/share/omarchy/config/imv/config ~/.config/imv/config From 06389d04225ef686df17d8775c79eb4658e8ecc9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 15:36:06 +0100 Subject: [PATCH 25/49] Bump checking for new version from 1 to 6 hours Lessen the stampede going forward --- config/waybar/config.jsonc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 54f74d63..ed064953 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -50,7 +50,7 @@ "on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update", "tooltip-format": "Omarchy update available", "signal": 7, - "interval": 3600 + "interval": 21600 }, "cpu": { From 1060a54c1a23419e466d7833e0914855db43e376 Mon Sep 17 00:00:00 2001 From: ctarx Date: Mon, 27 Oct 2025 14:43:48 +0000 Subject: [PATCH 26/49] Remove default SSH allow rule from UFW (#2887) * UFW: limit LocalSend (53317) to LAN and remove default SSH (22) rule * Revert LocalSend change and drop SSH allow rule --- install/first-run/firewall.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/install/first-run/firewall.sh b/install/first-run/firewall.sh index a38f5a56..cc187dc2 100644 --- a/install/first-run/firewall.sh +++ b/install/first-run/firewall.sh @@ -6,9 +6,6 @@ sudo ufw default allow outgoing sudo ufw allow 53317/udp sudo ufw allow 53317/tcp -# Allow SSH in -sudo ufw allow 22/tcp - # Allow Docker containers to use DNS on host sudo ufw allow in proto udp from 172.16.0.0/12 to 172.17.0.1 port 53 comment 'allow-docker-dns' From 9d9f362c7a41d5d07291d30b294a9d332dcc4173 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 17:32:15 +0100 Subject: [PATCH 27/49] Just use the basics in case there is a problem with path --- default/bash/aliases | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default/bash/aliases b/default/bash/aliases index 86abd4a0..eabd0c62 100644 --- a/default/bash/aliases +++ b/default/bash/aliases @@ -1,5 +1,5 @@ # File system -if omarchy-cmd-present eza; then +if command -v eza &> /dev/null; then alias ls='eza -lh --group-directories-first --icons=auto' alias lsa='ls -a' alias lt='eza --tree --level=2 --long --icons --git' @@ -8,7 +8,7 @@ fi alias ff="fzf --preview 'bat --style=numbers --color=always {}'" -if omarchy-cmd-present z; then +if command -v zoxide &> /dev/null; then alias cd="zd" zd() { if [ $# -eq 0 ]; then From 556e4749424b2bd696701ed262aa85d7c1e0acaa Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 12:46:52 -0400 Subject: [PATCH 28/49] Add setting systemd vars to prevent slow app launches --- default/hypr/autostart.conf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index 43cd3000..8588ac6f 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -8,3 +8,7 @@ exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = omarchy-cmd-first-run exec-once = uwsm-app -- elephant exec-once = uwsm-app -- walker --gapplication-service + +# Slow app launch fix -- set systemd vars +exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1) +exec-once = dbus-update-activation-environment --systemd --all From d8f97b8d028373c34c0a2d2325a2cb142bc094e0 Mon Sep 17 00:00:00 2001 From: Alex Six Date: Mon, 27 Oct 2025 12:50:37 -0400 Subject: [PATCH 29/49] Fix auto-generated everforest obsidian theme readability issues (#2752) * Fix auto-generated everforest obsidian theme * Update `--text-muted` and `--text-faint` to be readable against background color * Add contrast detection and color correction logic * Remove dedicated Obsidian CSS file * Add dedicated text color variables to obsidian theme generation * Replace closest color logic with generated color for code bg in Obsidian --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-theme-set-obsidian | 93 ++++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 28 deletions(-) diff --git a/bin/omarchy-theme-set-obsidian b/bin/omarchy-theme-set-obsidian index 5bb1b7b8..4ff70d4c 100755 --- a/bin/omarchy-theme-set-obsidian +++ b/bin/omarchy-theme-set-obsidian @@ -87,6 +87,35 @@ calculate_brightness() { echo $(((r * 299 + g * 587 + b * 114) / 1000)) } +# Calculate approximate contrast ratio between two colors +# Returns ratio scaled by 100 (e.g., 450 = 4.5:1 ratio) +# (this is due to bash not supporting decimal math) +calculate_contrast_ratio() { + local hex1="$1" hex2="$2" + local br1=$(calculate_brightness "$hex1") # 0-255 range + local br2=$(calculate_brightness "$hex2") # 0-255 range + + # Ensure br1 is the lighter color (higher brightness) + if [ $br1 -lt $br2 ]; then + local temp=$br1 + br1=$br2 + br2=$temp + fi + + # Approximate contrast ratio scaled by 100 + # Add offset to avoid division by zero and approximate WCAG +0.05 behavior + echo $(((br1 + 13) * 100 / (br2 + 13))) +} + +# Check if two colors meet minimum contrast threshold +# Usage: meets_contrast_threshold +# Both ratio and threshold should be scaled by 100 (e.g., 300 = 3:1) +meets_contrast_threshold() { + local ratio="$1" # Ratio scaled by 100 (from calculate_contrast_ratio) + local threshold="$2" # Threshold scaled by 100 (300=3:1, 450=4.5:1, 700=7:1) + [ $ratio -ge $threshold ] +} + # Calculate color distance (euclidean in RGB space) color_distance() { local hex1="$1" @@ -229,38 +258,30 @@ extract_theme_data() { fi done - # Sort by distance and get the closest color for code background - local -a closest_to_bg - readarray -t closest_to_bg < <(printf '%s\n' "${bg_distances[@]}" | sort -n | head -1 | cut -d: -f2) - # All background variations use the same as primary background local bg_primary_alt="$bg_color" local bg_secondary="$bg_color" local bg_secondary_alt="$bg_color" - # Code block background uses the closest different color - local code_bg="${closest_to_bg[0]}" - - # If no different color available, create a subtle variant for code blocks - if [ -z "$code_bg" ]; then - read -r r g b <<<"$(hex_to_rgb "$bg_color")" - if [ $bg_brightness -gt 127 ]; then - r=$((r - 10)) - g=$((g - 10)) - b=$((b - 10)) - else - r=$((r + 15)) - g=$((g + 15)) - b=$((b + 15)) - fi - [ $r -lt 0 ] && r=0 - [ $r -gt 255 ] && r=255 - [ $g -lt 0 ] && g=0 - [ $g -gt 255 ] && g=255 - [ $b -lt 0 ] && b=0 - [ $b -gt 255 ] && b=255 - code_bg=$(printf "#%02x%02x%02x" "$r" "$g" "$b") + # Generate code background color that will contrast with foreground text + read -r r g b <<<"$(hex_to_rgb "$bg_color")" + if [ $bg_brightness -gt 127 ]; then + r=$((r - 10)) + g=$((g - 10)) + b=$((b - 10)) + else + r=$((r + 15)) + g=$((g + 15)) + b=$((b + 15)) fi + [ $r -lt 0 ] && r=0 + [ $r -gt 255 ] && r=255 + [ $g -lt 0 ] && g=0 + [ $g -gt 255 ] && g=255 + [ $b -lt 0 ] && b=0 + [ $b -gt 255 ] && b=255 + code_bg=$(printf "#%02x%02x%02x" "$r" "$g" "$b") + # Find closest color to foreground for code block text local code_fg="" @@ -345,6 +366,22 @@ extract_theme_data() { border_color=$(printf "#%02x%02x%02x" "$r" "$g" "$b") fi + # Set text colors for muted/faint based on contrast + local text_muted_color="$border_color" + local text_faint_color="$border_color" + + # Validate border color contrast against background + + # Represents a 3:1 WCAG contrast ratio + local ideal_contrast_ratio=300 + + local border_contrast=$(calculate_contrast_ratio "$border_color" "$bg_color") + if ! meets_contrast_threshold "$border_contrast" "$ideal_contrast_ratio"; then + # Override text colors for readability, keep border color for visibility + text_muted_color="$fg_color" + text_faint_color="$fg_color" + fi + # Get unique colors array (without bg/fg) sorted by frequency local -a unique_colors readarray -t unique_colors < <(echo "$filtered_data" | sort_colors_by_frequency) @@ -409,8 +446,8 @@ extract_theme_data() { --text-mark: ${color_slots[7]}; --interactive-accent: ${color_slots[8]}; --blockquote-border: ${color_slots[9]}; - --text-muted: $border_color; /* Use border color for muted text */ - --text-faint: $border_color; /* Use border color for faint text */ + --text-muted: $text_muted_color; /* Use text-specific color for muted text */ + --text-faint: $text_faint_color; /* Use text-specific color for faint text */ /* Additional mappings */ --text-accent: var(--interactive-accent); From 048fdea87aa1b6b12041a3418740c2fd998533a2 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 27 Oct 2025 17:57:52 +0100 Subject: [PATCH 30/49] Ensure nvim always opens nvim not $EDITOR Closes #2900 --- applications/nvim.desktop | 2 +- migrations/1761583837.sh | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 migrations/1761583837.sh diff --git a/applications/nvim.desktop b/applications/nvim.desktop index 23fab41f..c842694e 100644 --- a/applications/nvim.desktop +++ b/applications/nvim.desktop @@ -2,7 +2,7 @@ Name=Neovim GenericName=Text Editor Comment=Edit text files -Exec=omarchy-launch-editor %F +Exec=$TERMINAL -e nvim %F Terminal=false Type=Application Keywords=Text;editor; diff --git a/migrations/1761583837.sh b/migrations/1761583837.sh new file mode 100644 index 00000000..a77b038c --- /dev/null +++ b/migrations/1761583837.sh @@ -0,0 +1,3 @@ +echo "Ensure nvim started from app launcher always starts nvim not $EDITOR" + +cp $OMARCHY_PATH/applications/nvim.desktop ~/.local/share/applications/ From a39ecf41bc0ba8093a1212f9deed7c294c215771 Mon Sep 17 00:00:00 2001 From: Anton Lindholm Date: Mon, 27 Oct 2025 19:03:52 +0200 Subject: [PATCH 31/49] config/uwsm/env: remove extra trailing / in path (#2907) --- config/uwsm/env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/uwsm/env b/config/uwsm/env index 065fcdac..b988bc29 100644 --- a/config/uwsm/env +++ b/config/uwsm/env @@ -2,7 +2,7 @@ # Ensure Omarchy bins are in the path export OMARCHY_PATH=$HOME/.local/share/omarchy -export PATH=$OMARCHY_PATH/bin/:$PATH +export PATH=$OMARCHY_PATH/bin:$PATH # Set default terminal and editor source ~/.config/uwsm/default From 4bd29207c622a3726194928007096f77fd9eb4cf Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 13:29:05 -0400 Subject: [PATCH 32/49] Add migration for news alerts box --- migrations/1761585764.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 migrations/1761585764.sh diff --git a/migrations/1761585764.sh b/migrations/1761585764.sh new file mode 100644 index 00000000..b65436a8 --- /dev/null +++ b/migrations/1761585764.sh @@ -0,0 +1,12 @@ +echo "Disable Nvim news alerts box" + +cat < Date: Mon, 27 Oct 2025 14:20:46 -0400 Subject: [PATCH 33/49] Update install method for openai-codex --- bin/omarchy-menu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 6b989ca9..fff38b50 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -287,10 +287,10 @@ show_install_ai_menu() { echo ollama ) - case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex [AUR]\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in + case $(menu "Install" "󱚤 Claude Code\n󱚤 Cursor CLI [AUR]\n󱚤 Gemini [AUR]\n󱚤 OpenAI Codex\n󱚤 LM Studio\n󱚤 Ollama\n󱚤 Crush\n󱚤 opencode") in *Claude*) install "Claude Code" "claude-code" ;; *Cursor*) aur_install "Cursor CLI" "cursor-cli" ;; - *OpenAI*) aur_install "OpenAI Codex" "openai-codex-bin" ;; + *OpenAI*) install "OpenAI Codex" "openai-codex-bin" ;; *Gemini*) aur_install "Gemini" "gemini-cli" ;; *Studio*) install "LM Studio" "lmstudio" ;; *Ollama*) install "Ollama" $ollama_pkg ;; From 4bb626bc4e8390123ab935390088d9b5a8a0529c Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 17:50:08 -0400 Subject: [PATCH 34/49] Add omarchy-keyring for existing installs --- migrations/1761599218.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 migrations/1761599218.sh diff --git a/migrations/1761599218.sh b/migrations/1761599218.sh new file mode 100644 index 00000000..32b3b2f1 --- /dev/null +++ b/migrations/1761599218.sh @@ -0,0 +1,8 @@ +echo "Installing omarchy-keyring to ensure package signature verification" + +if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then + sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org + sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571 + omarchy-pkg-add omarchy-keyring + sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 +fi From b75e70fb9b5a561c5880afe87f3c7ffdb1f2dc01 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 18:12:35 -0400 Subject: [PATCH 35/49] Add an update confirmation Will prevent some users from accidentally clicking the update icon only to terminate and wind up in a broken state. --- bin/omarchy-update | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bin/omarchy-update b/bin/omarchy-update index 0152af0c..8bfd3c9e 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -4,6 +4,21 @@ set -e 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 +gum style --border rounded --border-foreground 6 --padding "1 2" --margin "1 0" \ + "Ready to update Omarchy?" \ + "" \ + "• You cannot stop the update once you start!" \ + "• Make sure you're not on battery power or have sufficient charge" + +if ! gum confirm --default=false \ + --prompt.foreground=6 \ + --selected.foreground=0 --selected.background=2 \ + --unselected.foreground=0 --unselected.background=7 \ + "Continue with update?"; then + echo "Update cancelled" + exit 0 +fi + omarchy-snapshot create || [ $? -eq 127 ] omarchy-update-git omarchy-update-perform From d9a077d5b638d5ffe4a45acba5341ab7458aafc0 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 19:02:56 -0400 Subject: [PATCH 36/49] Style gum confirm using ANSI colors so they match --- default/hypr/looknfeel.conf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index 44bfbd39..791e6ebd 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -127,3 +127,10 @@ misc { cursor { hide_on_key_press = true } + +# Style Gum confirm to match terminal theme +env = GUM_CONFIRM_PROMPT_FOREGROUND,6 # Cyan +env = GUM_CONFIRM_SELECTED_FOREGROUND,0 # Black +env = GUM_CONFIRM_SELECTED_BACKGROUND,2 # Green +env = GUM_CONFIRM_UNSELECTED_FOREGROUND,0 # Black +env = GUM_CONFIRM_UNSELECTED_BACKGROUND,8 # Dark grey From ef0a9464a212d3b5d9a343ff2a05f2ddaf20eb7d Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 19:05:01 -0400 Subject: [PATCH 37/49] Back to default colors here --- bin/omarchy-update | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bin/omarchy-update b/bin/omarchy-update index 8bfd3c9e..32f825b1 100755 --- a/bin/omarchy-update +++ b/bin/omarchy-update @@ -4,17 +4,13 @@ set -e 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 -gum style --border rounded --border-foreground 6 --padding "1 2" --margin "1 0" \ +gum style --border normal --border-foreground 6 --padding "1 2" --margin "1 0" \ "Ready to update Omarchy?" \ "" \ "• You cannot stop the update once you start!" \ "• Make sure you're not on battery power or have sufficient charge" -if ! gum confirm --default=false \ - --prompt.foreground=6 \ - --selected.foreground=0 --selected.background=2 \ - --unselected.foreground=0 --unselected.background=7 \ - "Continue with update?"; then +if ! gum confirm --default=false "Continue with update?"; then echo "Update cancelled" exit 0 fi From ba348a6a15724f65d980539381e7e6e540adb871 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Mon, 27 Oct 2025 23:48:58 -0400 Subject: [PATCH 38/49] Remove nvim.desktop in favor of symlink Moving to symlink fixes the following issues: - App removes from launchers if you uninstall Nvim - Nvim launches in the correct terminal without invalid desktop entry Symlink setup moved to omarchy-nvim-setup (Ref: https://github.com/omacom-io/omarchy-pkgs/commit/bb7a0f4c1f78d428bbe53bc3af2c91a9c8a5de3b) --- applications/nvim.desktop | 12 ------------ migrations/1759782459.sh | 3 --- migrations/1761583837.sh | 6 +++++- 3 files changed, 5 insertions(+), 16 deletions(-) delete mode 100644 applications/nvim.desktop delete mode 100644 migrations/1759782459.sh diff --git a/applications/nvim.desktop b/applications/nvim.desktop deleted file mode 100644 index c842694e..00000000 --- a/applications/nvim.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=Neovim -GenericName=Text Editor -Comment=Edit text files -Exec=$TERMINAL -e nvim %F -Terminal=false -Type=Application -Keywords=Text;editor; -Icon=nvim -Categories=Utility;TextEditor; -StartupNotify=false -MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; diff --git a/migrations/1759782459.sh b/migrations/1759782459.sh deleted file mode 100644 index 015fd8e0..00000000 --- a/migrations/1759782459.sh +++ /dev/null @@ -1,3 +0,0 @@ -echo "Fix opening in nvim from files manager" - -cp -f $OMARCHY_PATH/applications/nvim.desktop ~/.local/share/applications/nvim.desktop diff --git a/migrations/1761583837.sh b/migrations/1761583837.sh index a77b038c..0e32981d 100644 --- a/migrations/1761583837.sh +++ b/migrations/1761583837.sh @@ -1,3 +1,7 @@ echo "Ensure nvim started from app launcher always starts nvim not $EDITOR" -cp $OMARCHY_PATH/applications/nvim.desktop ~/.local/share/applications/ +if [ -f /usr/share/applications/nvim.desktop ]; then + rm ~/.local/share/applications/nvim.desktop + ln -s /usr/share/applications/nvim.desktop ~/.local/share/applications/nvim.desktop + update-desktop-database ~/.local/share/applications +fi From f3c816fe858a299c4236be634f5cbd35d05bb707 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Tue, 28 Oct 2025 01:08:05 -0400 Subject: [PATCH 39/49] Set version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index ff365e06..0aec50e6 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.1.3 +3.1.4 From d5a8f1b06ba83b9e8117f1a17c090a1d2ad9c628 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Tue, 28 Oct 2025 01:43:25 -0400 Subject: [PATCH 40/49] Move update-keyring to the beginning --- migrations/1761599218.sh => bin/omarchy-update-keyring | 6 +++++- bin/omarchy-update-perform | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) rename migrations/1761599218.sh => bin/omarchy-update-keyring (82%) mode change 100644 => 100755 diff --git a/migrations/1761599218.sh b/bin/omarchy-update-keyring old mode 100644 new mode 100755 similarity index 82% rename from migrations/1761599218.sh rename to bin/omarchy-update-keyring index 32b3b2f1..5e6d2849 --- a/migrations/1761599218.sh +++ b/bin/omarchy-update-keyring @@ -1,8 +1,12 @@ -echo "Installing omarchy-keyring to ensure package signature verification" +#!/bin/bash +# Ensure we have the omarchy-keyring and it's populated if omarchy-pkg-missing omarchy-keyring || ! sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 &>/dev/null; then sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571 + + sudo pacman -Sy omarchy-pkg-add omarchy-keyring + sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 fi diff --git a/bin/omarchy-update-perform b/bin/omarchy-update-perform index 9e68a67b..477987f9 100755 --- a/bin/omarchy-update-perform +++ b/bin/omarchy-update-perform @@ -2,6 +2,7 @@ set -e +omarchy-update-keyring omarchy-update-available-reset omarchy-update-system-pkgs omarchy-migrate From 0e5c22ac380660ad682e25204f12fbd5a3054863 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Tue, 28 Oct 2025 02:33:06 -0400 Subject: [PATCH 41/49] Add the keyring for manual installs --- install/preflight/pacman.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/install/preflight/pacman.sh b/install/preflight/pacman.sh index 1d9a2f2f..b4e03ef7 100644 --- a/install/preflight/pacman.sh +++ b/install/preflight/pacman.sh @@ -6,6 +6,13 @@ if [[ -n ${OMARCHY_ONLINE_INSTALL:-} ]]; then sudo cp -f ~/.local/share/omarchy/default/pacman/pacman.conf /etc/pacman.conf sudo cp -f ~/.local/share/omarchy/default/pacman/mirrorlist /etc/pacman.d/mirrorlist + sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org + sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571 + + sudo pacman -Sy + sudo pacman -S --noconfirm --needed omarchy-keyring + + # Refresh all repos sudo pacman -Syu --noconfirm fi From d493e0536a94bcb319a83de8953cceb7d7979481 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Oct 2025 08:30:54 +0100 Subject: [PATCH 42/49] Make it update-time instead of reset-time and use before doing an update --- bin/omarchy-menu | 2 +- bin/omarchy-update-perform | 1 + bin/{omarchy-reset-time => omarchy-update-time} | 0 3 files changed, 2 insertions(+), 1 deletion(-) rename bin/{omarchy-reset-time => omarchy-update-time} (100%) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index fff38b50..10337685 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -395,7 +395,7 @@ show_update_menu() { *Hardware*) show_update_hardware_menu ;; *Firmware*) present_terminal omarchy-update-firmware ;; *Timezone*) present_terminal omarchy-tz-select ;; - *Time*) present_terminal omarchy-reset-time ;; + *Time*) present_terminal omarchy-update-time ;; *Password*) show_update_password_menu ;; *) show_main_menu ;; esac diff --git a/bin/omarchy-update-perform b/bin/omarchy-update-perform index 477987f9..f2b7ddc0 100755 --- a/bin/omarchy-update-perform +++ b/bin/omarchy-update-perform @@ -2,6 +2,7 @@ set -e +omarchy-update-time omarchy-update-keyring omarchy-update-available-reset omarchy-update-system-pkgs diff --git a/bin/omarchy-reset-time b/bin/omarchy-update-time similarity index 100% rename from bin/omarchy-reset-time rename to bin/omarchy-update-time From d64a178635da97a1c6434b4b0d58d037ed121b76 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Oct 2025 08:34:22 +0100 Subject: [PATCH 43/49] No need to ask --- migrations/1761585764.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/migrations/1761585764.sh b/migrations/1761585764.sh index b65436a8..996b391a 100644 --- a/migrations/1761585764.sh +++ b/migrations/1761585764.sh @@ -7,6 +7,4 @@ This will add a config file to disable it: EOF -if gum confirm "Disable nvim news alert?"; then - cp /usr/share/omarchy-nvim/config/lua/plugins/disable-news-alert.lua ~/.config/nvim/lua/plugins/disable-news-alert.lua -fi +cp /usr/share/omarchy-nvim/config/lua/plugins/disable-news-alert.lua ~/.config/nvim/lua/plugins/disable-news-alert.lua From 45d4b41749b4573e6be38a862b4239628c98ab14 Mon Sep 17 00:00:00 2001 From: Jordan Kicklighter Date: Tue, 28 Oct 2025 03:37:11 -0400 Subject: [PATCH 44/49] Include all shell-integration-features options together (#2915) Ghostty will only use the last `shell-integration-features` line found in the config, so multiple options need to be presented as a comma-separated list. Including them on separate lines meant that only the `ssh-env` option was getting set, causing the `no-cursor` option to be ignored. This prevented the cursor from going into the `block` style. --- config/ghostty/config | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/ghostty/config b/config/ghostty/config index f714edb3..49d2edca 100644 --- a/config/ghostty/config +++ b/config/ghostty/config @@ -17,11 +17,11 @@ gtk-toolbar-style = flat # Cursor styling cursor-style = "block" cursor-style-blink = false -shell-integration-features = no-cursor + +# Cursor styling + SSH session terminfo +# (all shell integration options must be passed together) +shell-integration-features = no-cursor,ssh-env # Keyboard bindings keybind = shift+insert=paste_from_clipboard keybind = control+insert=copy_to_clipboard - -# SSH session terminfo -shell-integration-features = ssh-env From 62cdece33a757d1860c8c5b843f413dd35c52f06 Mon Sep 17 00:00:00 2001 From: AdamMusa Date: Tue, 28 Oct 2025 03:38:09 -0400 Subject: [PATCH 45/49] Allow interaction with first Android Studio dialog ("Send usage statistics") by adjusting JetBrains window rules (#2899) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(jetbrains.conf): allow focus for Android Studio’s first dialog by unsetting nofocus rules for empty-title windows * Refactor window rules for JetBrains apps Updated window rules for JetBrains applications to allow focus and interaction with dialogs. --------- Co-authored-by: David Heinemeier Hansson --- default/hypr/apps/jetbrains.conf | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/default/hypr/apps/jetbrains.conf b/default/hypr/apps/jetbrains.conf index 661b0a4c..f9273df1 100644 --- a/default/hypr/apps/jetbrains.conf +++ b/default/hypr/apps/jetbrains.conf @@ -1,6 +1,9 @@ -# Fixing popup size issue -windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$,floating:1 +# JetBrains windows default size +windowrule = size 50% 50%, class:(.*jetbrains.*)$, title:^$ -# Fix tab dragging (always have a single space character as their title) +# Fix tab dragging (tab titles are just one space) windowrule = noinitialfocus, class:^(.*jetbrains.*)$, title:^\\s$ -windowrule = nofocus, class:^(.*jetbrains.*)$, title:^\\s$ + +# Allow dialogs (like "Send usage statistics") to be focusable and clickable +windowrule = unset,nofocus,class:^(.*jetbrains.*)$,title:^$ +windowrule = unset,noinitialfocus,class:^(.*jetbrains.*)$,title:^$ From c17e4f57ffe0839e02b593da7a7ad646a72d37ba Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Oct 2025 08:59:37 +0100 Subject: [PATCH 46/49] No need for this either --- migrations/1761585764.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/migrations/1761585764.sh b/migrations/1761585764.sh index 996b391a..bafbfe27 100644 --- a/migrations/1761585764.sh +++ b/migrations/1761585764.sh @@ -1,10 +1,3 @@ echo "Disable Nvim news alerts box" -cat < Date: Tue, 28 Oct 2025 11:30:27 +0100 Subject: [PATCH 47/49] Turn off fcitx5 clipboard hotkeys that are interferring with other apps Co-authored-by: @cairin Ref: #2795 --- config/fcitx5/conf/clipboard.conf | 2 ++ migrations/1761638377.sh | 4 ++++ 2 files changed, 6 insertions(+) create mode 100644 config/fcitx5/conf/clipboard.conf create mode 100644 migrations/1761638377.sh diff --git a/config/fcitx5/conf/clipboard.conf b/config/fcitx5/conf/clipboard.conf new file mode 100644 index 00000000..7cb7f0c6 --- /dev/null +++ b/config/fcitx5/conf/clipboard.conf @@ -0,0 +1,2 @@ +[Addon] +Enabled=False diff --git a/migrations/1761638377.sh b/migrations/1761638377.sh new file mode 100644 index 00000000..7b3623c2 --- /dev/null +++ b/migrations/1761638377.sh @@ -0,0 +1,4 @@ +echo "Turn off fcitx5 clipboard that is interferring with other applications" + +mkdir -p ~/.config/fcitx5/conf +cp $OMARCHY_PATH/config/fcitx5/conf/clipboard.conf ~/.config/fcitx5/conf/ From 928910773cd1208ba24c91bb5a5bfb1ec0da86bb Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Oct 2025 15:38:50 +0100 Subject: [PATCH 48/49] Make sure to restart fxitc5 after making config changes --- migrations/1761638377.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migrations/1761638377.sh b/migrations/1761638377.sh index 7b3623c2..05a1fb16 100644 --- a/migrations/1761638377.sh +++ b/migrations/1761638377.sh @@ -2,3 +2,5 @@ echo "Turn off fcitx5 clipboard that is interferring with other applications" mkdir -p ~/.config/fcitx5/conf cp $OMARCHY_PATH/config/fcitx5/conf/clipboard.conf ~/.config/fcitx5/conf/ + +omarchy-restart-xcompose From 6243c8225102eaa944c7f9e43ad1a8afe5532144 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 28 Oct 2025 16:06:12 +0100 Subject: [PATCH 49/49] Turn off the trigger keys instead --- config/fcitx5/conf/clipboard.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/fcitx5/conf/clipboard.conf b/config/fcitx5/conf/clipboard.conf index 7cb7f0c6..8aef5a8f 100644 --- a/config/fcitx5/conf/clipboard.conf +++ b/config/fcitx5/conf/clipboard.conf @@ -1,2 +1,2 @@ -[Addon] -Enabled=False +TriggerKey= +PastePrimaryKey=