From e84795e4d74669217070816eed27d2d657b512eb Mon Sep 17 00:00:00 2001 From: Luca Pattocchio Date: Thu, 26 Feb 2026 16:36:32 +0100 Subject: [PATCH 01/35] Remove example alias for claude command --- default/bashrc | 1 - 1 file changed, 1 deletion(-) diff --git a/default/bashrc b/default/bashrc index 77e8d27b..eaf13c66 100644 --- a/default/bashrc +++ b/default/bashrc @@ -9,4 +9,3 @@ source ~/.local/share/omarchy/default/bash/rc # # Make an alias for invoking commands you use constantly # alias p='python' -# alias cx="claude --permission-mode=plan --allow-dangerously-skip-permissions" From 744d6c3349c35213108fafd90ad7143b7396070c Mon Sep 17 00:00:00 2001 From: Pierre Olivier Martel Date: Thu, 26 Feb 2026 11:05:17 -0500 Subject: [PATCH 02/35] Remove Fcitx5 XDG autostart desktop entry --- install/config/all.sh | 1 + install/config/remove-fcitx5-autostart.sh | 1 + migrations/1772120972.sh | 3 +++ 3 files changed, 5 insertions(+) create mode 100644 install/config/remove-fcitx5-autostart.sh create mode 100644 migrations/1772120972.sh diff --git a/install/config/all.sh b/install/config/all.sh index b80e4ca5..52458a72 100644 --- a/install/config/all.sh +++ b/install/config/all.sh @@ -14,6 +14,7 @@ run_logged $OMARCHY_INSTALL/config/mise-work.sh run_logged $OMARCHY_INSTALL/config/fix-powerprofilesctl-shebang.sh run_logged $OMARCHY_INSTALL/config/docker.sh run_logged $OMARCHY_INSTALL/config/mimetypes.sh +run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh run_logged $OMARCHY_INSTALL/config/localdb.sh run_logged $OMARCHY_INSTALL/config/walker-elephant.sh run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh diff --git a/install/config/remove-fcitx5-autostart.sh b/install/config/remove-fcitx5-autostart.sh new file mode 100644 index 00000000..62cc1790 --- /dev/null +++ b/install/config/remove-fcitx5-autostart.sh @@ -0,0 +1 @@ +sudo rm -f /etc/xdg/autostart/org.fcitx.Fcitx5.desktop diff --git a/migrations/1772120972.sh b/migrations/1772120972.sh new file mode 100644 index 00000000..7ef79f37 --- /dev/null +++ b/migrations/1772120972.sh @@ -0,0 +1,3 @@ +echo "Remove Fcitx5 XDG autostart desktop entry" + +source $OMARCHY_PATH/install/config/remove-fcitx5-autostart.sh From 6757b7068a2fad4e337f7248eea8dd64fe2eca26 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 26 Feb 2026 22:40:57 +0100 Subject: [PATCH 03/35] Ensure OMARCHY_PATH + bin PATH are set for SSH access Closes #4757 --- default/bash/envs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/default/bash/envs b/default/bash/envs index 932ad3ec..ff08817a 100644 --- a/default/bash/envs +++ b/default/bash/envs @@ -1,3 +1,7 @@ # Editor used by CLI export SUDO_EDITOR="$EDITOR" export BAT_THEME=ansi + +# Duplicated from .config/uwsm/env so SSH works too +export OMARCHY_PATH=$HOME/.local/share/omarchy +export PATH=$OMARCHY_PATH/bin:$PATH From 10b8a6a514c4d3075a87903f4f0ab96983eaa223 Mon Sep 17 00:00:00 2001 From: Gareth du Plooy Date: Thu, 26 Feb 2026 23:18:26 -0600 Subject: [PATCH 04/35] Fix jq reference to value in omarchy-launch-or-focus --- bin/omarchy-launch-or-focus | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-launch-or-focus b/bin/omarchy-launch-or-focus index 1654c844..85ab3d6c 100755 --- a/bin/omarchy-launch-or-focus +++ b/bin/omarchy-launch-or-focus @@ -10,7 +10,7 @@ fi WINDOW_PATTERN="$1" LAUNCH_COMMAND="${2:-"uwsm-app -- $WINDOW_PATTERN"}" -WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1) +WINDOW_ADDRESS=$(hyprctl clients -j | jq -r --arg p "$WINDOW_PATTERN" '.[]|select((.class|test("\\b" + $p + "\\b";"i")) or (.title|test("\\b" + $p + "\\b";"i")))|.address' | head -n1) if [[ -n $WINDOW_ADDRESS ]]; then hyprctl dispatch focuswindow "address:$WINDOW_ADDRESS" From 46770774b58b2e8d7b2c6c0df0d8e5a5f15904d9 Mon Sep 17 00:00:00 2001 From: Christoph Kindler Date: Fri, 27 Feb 2026 08:51:59 +0100 Subject: [PATCH 05/35] Unmute ALSA capture switch in ASUS ROG mic fix The Realtek ALC285 defaults to capture switch off. With api.alsa.soft-mixer enabled, PipeWire no longer manages the hardware mixer, so the switch stays off and the internal mic records silence. Adding `unmute` to the amixer set command ensures the hardware capture path is enabled. Co-Authored-By: Claude Opus 4.6 --- install/config/hardware/fix-asus-rog-mic.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/config/hardware/fix-asus-rog-mic.sh b/install/config/hardware/fix-asus-rog-mic.sh index c50a63f1..d97849c2 100644 --- a/install/config/hardware/fix-asus-rog-mic.sh +++ b/install/config/hardware/fix-asus-rog-mic.sh @@ -7,7 +7,7 @@ if omarchy-hw-asus-rog; then if grep -q "ALC285" "$card" 2>/dev/null; then cardnum=$(echo "$card" | grep -oP 'card\K\d+') amixer -c "$cardnum" set 'Internal Mic Boost' 0 >/dev/null 2>&1 || true - amixer -c "$cardnum" set 'Capture' 70% >/dev/null 2>&1 || true + amixer -c "$cardnum" set 'Capture' 70% unmute >/dev/null 2>&1 || true sudo alsactl store "$cardnum" 2>/dev/null || true break fi From b97ea790904de4aba8e34116b1b9e33bf169cff9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 27 Feb 2026 09:32:31 +0100 Subject: [PATCH 06/35] Include .local/bin in path by default --- default/bash/envs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/bash/envs b/default/bash/envs index ff08817a..ea8510e6 100644 --- a/default/bash/envs +++ b/default/bash/envs @@ -4,4 +4,4 @@ export BAT_THEME=ansi # Duplicated from .config/uwsm/env so SSH works too export OMARCHY_PATH=$HOME/.local/share/omarchy -export PATH=$OMARCHY_PATH/bin:$PATH +export PATH=$OMARCHY_PATH/bin:$PATH:$HOME/.local/bin From 302d041d8ecea1acf08b196a74da75fa49ab736e Mon Sep 17 00:00:00 2001 From: "Alex P. Gates" Date: Fri, 27 Feb 2026 10:13:12 -0600 Subject: [PATCH 07/35] Update bash rc source order --- default/bash/rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/bash/rc b/default/bash/rc index 487bdd40..3042e427 100644 --- a/default/bash/rc +++ b/default/bash/rc @@ -1,6 +1,6 @@ +source ~/.local/share/omarchy/default/bash/envs source ~/.local/share/omarchy/default/bash/shell source ~/.local/share/omarchy/default/bash/aliases source ~/.local/share/omarchy/default/bash/functions source ~/.local/share/omarchy/default/bash/init -source ~/.local/share/omarchy/default/bash/envs [[ $- == *i* ]] && bind -f ~/.local/share/omarchy/default/bash/inputrc From 8ac7cd9e23cc719d7d9b1f1b40dffaf8163dc46f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 27 Feb 2026 17:44:44 +0100 Subject: [PATCH 08/35] Stop erasing output without a newline Closes #4783 References #4269 --- default/bash/init | 3 --- 1 file changed, 3 deletions(-) diff --git a/default/bash/init b/default/bash/init index 6ae94284..1c40f6c1 100644 --- a/default/bash/init +++ b/default/bash/init @@ -3,9 +3,6 @@ if command -v mise &> /dev/null; then fi if command -v starship &> /dev/null; then - # clear stale readline state before rendering prompt (prevents artifacts in prompt after abnormal exits like SIGQUIT) - __sanitize_prompt() { printf '\r\033[K'; } - PROMPT_COMMAND="__sanitize_prompt${PROMPT_COMMAND:+;$PROMPT_COMMAND}" eval "$(starship init bash)" fi From 34f0d64d77cd8d7248ce9648824169ebd534b5af Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 27 Feb 2026 17:50:23 +0100 Subject: [PATCH 09/35] Try with alt+arrows for windows/sessions navigation for a while --- config/tmux/tmux.conf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index 5aa42094..56f0ac87 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -41,6 +41,9 @@ bind -n M-7 select-window -t 7 bind -n M-8 select-window -t 8 bind -n M-9 select-window -t 9 +bind -n M-Left select-window -t -1 +bind -n M-Right select-window -t +1 + # Session controls bind R command-prompt -I "#S" "rename-session -- '%%'" bind C new-session -c "#{pane_current_path}" @@ -48,6 +51,9 @@ bind K kill-session bind P switch-client -p bind N switch-client -n +bind -n M-Up switch-client -p +bind -n M-Down switch-client -n + # General set -g default-terminal "tmux-256color" set -ag terminal-overrides ",*:RGB" From d7b0ab1a2368f2a080fad359ec3031adb14e2ec9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 27 Feb 2026 18:02:40 +0100 Subject: [PATCH 10/35] Ensure password field doesn't overlow on SDDM login screen Closes #4774 --- default/sddm/omarchy/Main.qml | 1 + migrations/1772211023.sh | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 migrations/1772211023.sh diff --git a/default/sddm/omarchy/Main.qml b/default/sddm/omarchy/Main.qml index 93ecfb08..d074913e 100644 --- a/default/sddm/omarchy/Main.qml +++ b/default/sddm/omarchy/Main.qml @@ -60,6 +60,7 @@ Rectangle { color: "#000000" border.color: "#ffffff" border.width: 1 + clip: true TextInput { id: password diff --git a/migrations/1772211023.sh b/migrations/1772211023.sh new file mode 100644 index 00000000..9b2c15fb --- /dev/null +++ b/migrations/1772211023.sh @@ -0,0 +1,3 @@ +echo "Ensure password field doesn't overlow on SDDM login screen" + +omarchy-refresh-sddm From 191cbb165c03df6b9743ea8d30a29321c1137544 Mon Sep 17 00:00:00 2001 From: Andrej Maxhem Date: Fri, 27 Feb 2026 20:28:17 +0100 Subject: [PATCH 11/35] Update outdated keybind description for opening the background selection menu --- default/hypr/bindings/utilities.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6cd1e21d..02d0e972 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -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-menu background +bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 From 30c6d431f717d75e5dcceee7304cd4a2be8424f9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 10:04:18 +0100 Subject: [PATCH 12/35] Match existing naming styles --- ...orkspace-toggle-gaps => omarchy-hyprland-window-gaps-toggle} | 0 default/hypr/bindings/utilities.conf | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename bin/{omarchy-hyprland-workspace-toggle-gaps => omarchy-hyprland-window-gaps-toggle} (100%) diff --git a/bin/omarchy-hyprland-workspace-toggle-gaps b/bin/omarchy-hyprland-window-gaps-toggle similarity index 100% rename from bin/omarchy-hyprland-workspace-toggle-gaps rename to bin/omarchy-hyprland-window-gaps-toggle diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 02d0e972..15fd1645 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -13,7 +13,7 @@ bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 +bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss From 103cb728e6c66fd54f441eb045769b932ef7573b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 10:04:43 +0100 Subject: [PATCH 13/35] Add Super + Ctrl + O to access toggle menu and add more toggles --- bin/omarchy-menu | 9 +++++++-- default/hypr/bindings/utilities.conf | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 8fe6fa4a..7887e9b0 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -161,12 +161,16 @@ show_share_menu() { } show_toggle_menu() { - case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar") in + case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in + *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; *Bar*) omarchy-toggle-waybar ;; - *) show_trigger_menu ;; + *Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;; + *Gaps*) omarchy-hyprland-window-gaps-toggle ;; + *Scaling*) omarchy-hyprland-monitor-scaling-toggle ;; + *) back_to show_trigger_menu ;; esac } @@ -593,6 +597,7 @@ go_to_menu() { *apps*) walker -p "Launch…" ;; *learn*) show_learn_menu ;; *trigger*) show_trigger_menu ;; + *toggle*) show_toggle_menu ;; *share*) show_share_menu ;; *background*) show_background_menu ;; *capture*) show_capture_menu ;; diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 15fd1645..6aad47d1 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -2,6 +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 CTRL, C, Capture menu, exec, omarchy-menu capture +bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system From b746958823dc69da24fd73a63df4ba02f4cc0e60 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 10:05:36 +0100 Subject: [PATCH 14/35] Allow esc to close capture menu when accessed directly --- bin/omarchy-menu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 7887e9b0..f1986160 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -102,7 +102,7 @@ show_capture_menu() { *Screenshot*) omarchy-cmd-screenshot ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; - *) show_trigger_menu ;; + *) backt_to show_trigger_menu ;; esac } From 42a437ad481f9829c3f07298ed2b5fbeaf92bccd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 14:23:42 +0100 Subject: [PATCH 15/35] Add toggle for switching between dwindle/scrolling layout per workspace on Super + L --- bin/omarchy-hyprland-workspace-layout-toggle | 14 ++++++++++++++ bin/omarchy-menu | 3 ++- config/hypr/looknfeel.conf | 4 ++-- default/hypr/bindings/tiling-v2.conf | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100755 bin/omarchy-hyprland-workspace-layout-toggle diff --git a/bin/omarchy-hyprland-workspace-layout-toggle b/bin/omarchy-hyprland-workspace-layout-toggle new file mode 100755 index 00000000..96f4f5af --- /dev/null +++ b/bin/omarchy-hyprland-workspace-layout-toggle @@ -0,0 +1,14 @@ +#!/bin/bash + +# Toggle the layout on the current active workspace between dwindle and scrolling + +ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.id') +CURRENT_LAYOUT=$(hyprctl activeworkspace -j | jq -r '.tiledLayout') + +case "$CURRENT_LAYOUT" in + dwindle) NEW_LAYOUT=scrolling ;; + *) NEW_LAYOUT=dwindle ;; +esac + +hyprctl keyword workspace $ACTIVE_WORKSPACE, layout:$NEW_LAYOUT +notify-send "󱂬 Workspace layout set to $NEW_LAYOUT" diff --git a/bin/omarchy-menu b/bin/omarchy-menu index f1986160..b50cd4cc 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -161,12 +161,13 @@ show_share_menu() { } show_toggle_menu() { - case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in + case $(menu "Toggle" "󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Display Scaling") in *Screensaver*) omarchy-toggle-screensaver ;; *Nightlight*) omarchy-toggle-nightlight ;; *Idle*) omarchy-toggle-idle ;; *Bar*) omarchy-toggle-waybar ;; + *Layout*) omarchy-hyprland-workspace-layout-toggle ;; *Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;; *Gaps*) omarchy-hyprland-window-gaps-toggle ;; *Scaling*) omarchy-hyprland-monitor-scaling-toggle ;; diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf index 8d869813..dff4b50e 100644 --- a/config/hypr/looknfeel.conf +++ b/config/hypr/looknfeel.conf @@ -7,8 +7,8 @@ general { # gaps_out = 0 # border_size = 0 - # Use master layout instead of dwindle - # layout = master + # Possible layouts: dwindle (default), scrolling (niri-like), master (dwm), monocle (single app) + # layout = scrolling } # https://wiki.hyprland.org/Configuring/Variables/#decoration diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 2b4de61c..4ebf0dd3 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -10,6 +10,7 @@ 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 bindd = SUPER, O, Pop window out (float & pin), exec, omarchy-hyprland-window-pop +bindd = SUPER, L, Toggle workspace layout, exec, omarchy-hyprland-workspace-layout-toggle # Move focus with SUPER + arrow keys bindd = SUPER, LEFT, Move window focus left, movefocus, l From 39761b93b35abfa247850d0cdf535224fc5d86f5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 14:24:17 +0100 Subject: [PATCH 16/35] Fix spelling --- bin/omarchy-menu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index b50cd4cc..7e3be3cf 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -102,7 +102,7 @@ show_capture_menu() { *Screenshot*) omarchy-cmd-screenshot ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; - *) backt_to show_trigger_menu ;; + *) back_to show_trigger_menu ;; esac } From 8f5c1ee55e18ae13e50029ed819d7cec002c6de2 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 14:34:27 +0100 Subject: [PATCH 17/35] Promote monitor scaling to Super + / --- ...r-scaling-toggle => omarchy-hyprland-monitor-scaling-cycle} | 0 bin/omarchy-menu | 2 +- default/hypr/bindings/tiling-v2.conf | 3 +++ default/hypr/bindings/utilities.conf | 3 +-- 4 files changed, 5 insertions(+), 3 deletions(-) rename bin/{omarchy-hyprland-monitor-scaling-toggle => omarchy-hyprland-monitor-scaling-cycle} (100%) diff --git a/bin/omarchy-hyprland-monitor-scaling-toggle b/bin/omarchy-hyprland-monitor-scaling-cycle similarity index 100% rename from bin/omarchy-hyprland-monitor-scaling-toggle rename to bin/omarchy-hyprland-monitor-scaling-cycle diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 7e3be3cf..6c697a31 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -170,7 +170,7 @@ show_toggle_menu() { *Layout*) omarchy-hyprland-workspace-layout-toggle ;; *Ratio*) omarchy-hyprland-window-single-square-aspect-toggle ;; *Gaps*) omarchy-hyprland-window-gaps-toggle ;; - *Scaling*) omarchy-hyprland-monitor-scaling-toggle ;; + *Scaling*) omarchy-hyprland-monitor-scaling-cycle ;; *) back_to show_trigger_menu ;; esac } diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 4ebf0dd3..3b559456 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -123,3 +123,6 @@ bindd = SUPER ALT, code:11, Switch to group window 2, changegroupactive, 2 bindd = SUPER ALT, code:12, Switch to group window 3, changegroupactive, 3 bindd = SUPER ALT, code:13, Switch to group window 4, changegroupactive, 4 bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5 + +# Cycle monitor resolution +bindd = SUPER, Slash, Cycle monitor scaling, exec, omarchy-hyprland-monitor-scaling-cycle diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6aad47d1..43a4490c 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -15,6 +15,7 @@ bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 window gaps, exec, omarchy-hyprland-window-gaps-toggle +bindd = SUPER CTRL ALT, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss @@ -26,8 +27,6 @@ bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore # Toggles bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight -bindd = SUPER CTRL, Backspace, Toggle monitor scaling, exec, omarchy-hyprland-monitor-scaling-toggle -bindd = SUPER CTRL ALT, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Control Apple Display brightness bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000 From 47f396cfc69fc68d309d62e339537d0d31286fab Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 14:56:39 +0100 Subject: [PATCH 18/35] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 18091983..47b322c9 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.4.0 +3.4.1 From debeea0bf78d2d997b9ae06646a9ce6ab6a9ecfe Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 15:03:51 +0100 Subject: [PATCH 19/35] Offer to reboot if Hyprland has been updated --- bin/omarchy-update-restart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bin/omarchy-update-restart b/bin/omarchy-update-restart index 2e62716b..e71ab568 100755 --- a/bin/omarchy-update-restart +++ b/bin/omarchy-update-restart @@ -6,6 +6,11 @@ elif [[ -f $HOME/.local/state/omarchy/reboot-required ]]; then gum confirm "Updates require reboot. Ready?" && omarchy-system-reboot fi +running_hyprland=$(readlink /proc/$(pgrep -x Hyprland)/exe 2>/dev/null) +if [[ $running_hyprland == *"(deleted)"* ]]; then + gum confirm "Hyprland has been updated. Reboot?" && omarchy-system-reboot +fi + for file in "$HOME"/.local/state/omarchy/restart-*-required; do if [[ -f $file ]]; then filename=$(basename "$file") From 0bc9629e8ac748cb0c3eed21d7e2794b330f4902 Mon Sep 17 00:00:00 2001 From: rez1coder <66778119+rez1coder@users.noreply.github.com> Date: Sat, 28 Feb 2026 20:04:13 +0600 Subject: [PATCH 20/35] migration(1772211023): fix overflow typo --- migrations/1772211023.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/1772211023.sh b/migrations/1772211023.sh index 9b2c15fb..fe47860b 100644 --- a/migrations/1772211023.sh +++ b/migrations/1772211023.sh @@ -1,3 +1,3 @@ -echo "Ensure password field doesn't overlow on SDDM login screen" +echo "Ensure password field doesn't overflow on SDDM login screen" omarchy-refresh-sddm From 1bbb20695efbb435df78b6df336009059005eecd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 15:06:16 +0100 Subject: [PATCH 21/35] Proper spacing --- bin/omarchy-update-restart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/omarchy-update-restart b/bin/omarchy-update-restart index e71ab568..ee03fbde 100755 --- a/bin/omarchy-update-restart +++ b/bin/omarchy-update-restart @@ -1,5 +1,7 @@ #!/bin/bash +echo + if [[ ! -d /usr/lib/modules/$(uname -r) ]]; then gum confirm "Linux kernel has been updated. Reboot?" && omarchy-system-reboot elif [[ -f $HOME/.local/state/omarchy/reboot-required ]]; then From 5f9b108afd8e49034f3550290a165e25a1ee5718 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 16:51:03 +0100 Subject: [PATCH 22/35] Migrate the single_window_aspect_ratio setting to layout per Hyprland 0.54 --- ...omarchy-hyprland-window-single-square-aspect-toggle | 6 +++--- config/hypr/looknfeel.conf | 4 ++-- migrations/1772293693.sh | 10 ++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 migrations/1772293693.sh diff --git a/bin/omarchy-hyprland-window-single-square-aspect-toggle b/bin/omarchy-hyprland-window-single-square-aspect-toggle index 423ef0d1..eb747e78 100755 --- a/bin/omarchy-hyprland-window-single-square-aspect-toggle +++ b/bin/omarchy-hyprland-window-single-square-aspect-toggle @@ -1,13 +1,13 @@ #!/bin/bash # Check current single_window_aspect_ratio setting -CURRENT_VALUE=$(hyprctl getoption "dwindle:single_window_aspect_ratio" 2>/dev/null | head -1) +CURRENT_VALUE=$(hyprctl getoption "layout:single_window_aspect_ratio" 2>/dev/null | head -1) # Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]" if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then - hyprctl keyword dwindle:single_window_aspect_ratio "0 0" + hyprctl keyword layout:single_window_aspect_ratio "0 0" notify-send " Disable single-window square aspect ratio" else - hyprctl keyword dwindle:single_window_aspect_ratio "1 1" + hyprctl keyword layout:single_window_aspect_ratio "1 1" notify-send " Enable single-window square aspect" fi diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf index dff4b50e..0074b186 100644 --- a/config/hypr/looknfeel.conf +++ b/config/hypr/looknfeel.conf @@ -27,8 +27,8 @@ animations { # enabled = no } -# https://wiki.hypr.land/Configuring/Dwindle-Layout/ -dwindle { +# https://wiki.hypr.land/Configuring/Variables/#layout +layout { # Avoid overly wide single-window layouts on wide screens # single_window_aspect_ratio = 1 1 } diff --git a/migrations/1772293693.sh b/migrations/1772293693.sh new file mode 100644 index 00000000..f8f6b7f1 --- /dev/null +++ b/migrations/1772293693.sh @@ -0,0 +1,10 @@ +echo "Rename dwindle section to layout in user looknfeel.conf" + +looknfeel="$HOME/.config/hypr/looknfeel.conf" + +if [[ -f $looknfeel ]] && grep -q 'single_window_aspect_ratio' "$looknfeel"; then + sed -i \ + -e 's|# https://wiki.hypr.land/Configuring/Dwindle-Layout/|# https://wiki.hypr.land/Configuring/Variables/#layout|' \ + -e 's|^dwindle {|layout {|' \ + "$looknfeel" +fi From a8a1e3acf1a4133f0c637fb4b2f0d39c1c91e31c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 16:51:23 +0100 Subject: [PATCH 23/35] Move the single-window square aspect toggle to Super + Ctrl + Backspace --- default/hypr/bindings/utilities.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 43a4490c..6ba2f82c 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -15,7 +15,7 @@ bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 window gaps, exec, omarchy-hyprland-window-gaps-toggle -bindd = SUPER CTRL ALT, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle +bindd = SUPER CTRL, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss From aa3ea5b04a58761bb4ba704afd4ab47860f02c17 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 16:52:13 +0100 Subject: [PATCH 24/35] Just recommend scrolling as alternative The others really aren't useful imo --- config/hypr/looknfeel.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/hypr/looknfeel.conf b/config/hypr/looknfeel.conf index 0074b186..2d2b7000 100644 --- a/config/hypr/looknfeel.conf +++ b/config/hypr/looknfeel.conf @@ -7,7 +7,7 @@ general { # gaps_out = 0 # border_size = 0 - # Possible layouts: dwindle (default), scrolling (niri-like), master (dwm), monocle (single app) + # Change to niri-like side-scrolling layout # layout = scrolling } From 7934b0d51b3c6dec49f9e5c7ea29093c23c2a35f Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 17:01:11 +0100 Subject: [PATCH 25/35] Add tmux alt+arrow bindings if missing --- bin/omarchy-refresh-tmux | 5 +---- bin/omarchy-restart-tmux | 7 +++++++ migrations/1772294096.sh | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100755 bin/omarchy-restart-tmux create mode 100644 migrations/1772294096.sh diff --git a/bin/omarchy-refresh-tmux b/bin/omarchy-refresh-tmux index 64c7f9f2..560c7fd5 100755 --- a/bin/omarchy-refresh-tmux +++ b/bin/omarchy-refresh-tmux @@ -3,7 +3,4 @@ # Overwrite the user tmux config with the Omarchy default and reload tmux. omarchy-refresh-config tmux/tmux.conf - -if pgrep -x tmux; then - tmux source-file ~/.config/tmux/tmux.conf -fi +omarchy-restart-tmux diff --git a/bin/omarchy-restart-tmux b/bin/omarchy-restart-tmux new file mode 100755 index 00000000..b1ce7603 --- /dev/null +++ b/bin/omarchy-restart-tmux @@ -0,0 +1,7 @@ +#!/bin/bash + +# Restart tmux if running with the latest configuration + +if pgrep -x tmux; then + tmux source-file ~/.config/tmux/tmux.conf +fi diff --git a/migrations/1772294096.sh b/migrations/1772294096.sh new file mode 100644 index 00000000..b00383dc --- /dev/null +++ b/migrations/1772294096.sh @@ -0,0 +1,21 @@ +echo "Add Alt+Arrow keybindings for tmux window and session navigation" + +TMUX_CONF=~/.config/tmux/tmux.conf + +if [[ -f $TMUX_CONF ]]; then + # Add M-Left/M-Right after M-9 if not present + if ! grep -q "bind -n M-Left select-window" "$TMUX_CONF"; then + sed -i '/bind -n M-9 select-window -t 9/a\ +bind -n M-Left select-window -t -1\ +bind -n M-Right select-window -t +1' "$TMUX_CONF" + fi + + # Add M-Up/M-Down after "bind N switch-client -n" if not present + if ! grep -q "bind -n M-Up switch-client" "$TMUX_CONF"; then + sed -i '/^bind N switch-client -n$/a\ +bind -n M-Up switch-client -p\ +bind -n M-Down switch-client -n' "$TMUX_CONF" + fi + + omarchy-restart-tmux +fi From aabaef83ea0b8801db4bae4f01f8bd17ba399fff Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 17:46:57 +0100 Subject: [PATCH 26/35] Cap recordings to 4K and do start/stop correctly and no indicator until recording --- bin/omarchy-cmd-screenrecord | 125 +++++++++++++++++++++-------------- 1 file changed, 76 insertions(+), 49 deletions(-) diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index d9dbdcc7..072cfab1 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -2,6 +2,8 @@ # Start and stop a screenrecording, which will be saved to ~/Videos by default. # Alternative location can be set via OMARCHY_SCREENRECORD_DIR or XDG_VIDEOS_DIR ENVs. +# Resolution is capped to 4K for monitors above 4K, native otherwise. +# Override via --resolution= (e.g. --resolution=1920x1080, --resolution=0x0 for native). [[ -f ~/.config/user-dirs.dirs ]] && source ~/.config/user-dirs.dirs OUTPUT_DIR="${OMARCHY_SCREENRECORD_DIR:-${XDG_VIDEOS_DIR:-$HOME/Videos}}" @@ -15,18 +17,35 @@ DESKTOP_AUDIO="false" MICROPHONE_AUDIO="false" WEBCAM="false" WEBCAM_DEVICE="" +RESOLUTION="" STOP_RECORDING="false" +RECORDING_FILE="/tmp/omarchy-screenrecord-filename" for arg in "$@"; do case "$arg" in - --with-desktop-audio) DESKTOP_AUDIO="true" ;; - --with-microphone-audio) MICROPHONE_AUDIO="true" ;; - --with-webcam) WEBCAM="true" ;; - --webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;; - --stop-recording) STOP_RECORDING="true" + --with-desktop-audio) DESKTOP_AUDIO="true" ;; + --with-microphone-audio) MICROPHONE_AUDIO="true" ;; + --with-webcam) WEBCAM="true" ;; + --webcam-device=*) WEBCAM_DEVICE="${arg#*=}" ;; + --resolution=*) RESOLUTION="${arg#*=}" ;; + --stop-recording) STOP_RECORDING="true" ;; esac done +default_resolution() { + local width height + read -r width height < <(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.width) \(.height)"') + if ((width > 3840 || height > 2160)); then + echo "3840x2160" + else + echo "0x0" + fi +} + +toggle_screenrecording_indicator() { + pkill -RTMIN+8 waybar +} + cleanup_webcam() { pkill -f "WebcamOverlay" 2>/dev/null } @@ -36,7 +55,7 @@ start_webcam_overlay() { # Auto-detect first available webcam if none specified if [[ -z $WEBCAM_DEVICE ]]; then - WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^\s*/dev/video" | tr -d '\t') + WEBCAM_DEVICE=$(v4l2-ctl --list-devices 2>/dev/null | grep -m1 "^[[:space:]]*/dev/video" | tr -d '\t') if [[ -z $WEBCAM_DEVICE ]]; then notify-send "No webcam devices found" -u critical -t 3000 return 1 @@ -74,7 +93,7 @@ start_webcam_overlay() { start_screenrecording() { local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" local audio_devices="" - local audio_args="" + local audio_args=() [[ $DESKTOP_AUDIO == "true" ]] && audio_devices+="default_output" @@ -84,15 +103,57 @@ start_screenrecording() { audio_devices+="default_input" fi - [[ -n $audio_devices ]] && audio_args+="-a $audio_devices" + [[ -n $audio_devices ]] && audio_args+=(-a "$audio_devices" -ac aac) + + local resolution="${RESOLUTION:-$(default_resolution)}" + + gpu-screen-recorder -w portal -k auto -s "$resolution" -f 60 -fallback-cpu-encoding yes -o "$filename" "${audio_args[@]}" & + local pid=$! + + # Wait for recording to actually start (file appears after portal selection) + while kill -0 $pid 2>/dev/null && [[ ! -f $filename ]]; do + sleep 0.2 + done + + if kill -0 $pid 2>/dev/null; then + echo "$filename" >"$RECORDING_FILE" + toggle_screenrecording_indicator + fi +} + +stop_screenrecording() { + pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly + + # Wait a maximum of 5 seconds to finish before hard killing + local count=0 + while pgrep -f "^gpu-screen-recorder" >/dev/null && ((count < 50)); do + sleep 0.1 + count=$((count + 1)) + done - gpu-screen-recorder -w portal -k h264 -f 60 -fallback-cpu-encoding yes -o "$filename" $audio_args -ac aac & toggle_screenrecording_indicator + cleanup_webcam + + if pgrep -f "^gpu-screen-recorder" >/dev/null; then + pkill -9 -f "^gpu-screen-recorder" + notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000 + else + trim_first_frame + notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 + fi + + rm -f "$RECORDING_FILE" +} + +screenrecording_active() { + pgrep -f "^gpu-screen-recorder" >/dev/null } trim_first_frame() { - local latest=$(ls -t "$OUTPUT_DIR"/screenrecording-*.mp4 2>/dev/null | head -1) - if [[ -n $latest ]]; then + local latest + latest=$(cat "$RECORDING_FILE" 2>/dev/null) + + if [[ -n $latest && -f $latest ]]; then local trimmed="${latest%.mp4}-trimmed.mp4" if ffmpeg -y -ss 0.1 -i "$latest" -c copy "$trimmed" -loglevel quiet 2>/dev/null; then mv "$trimmed" "$latest" @@ -102,46 +163,12 @@ trim_first_frame() { fi } -stop_screenrecording() { - pkill -SIGINT -f "^gpu-screen-recorder" # SIGINT required to save video properly - - # Wait a maximum of 5 seconds to finish before hard killing - local count=0 - while pgrep -f "^gpu-screen-recorder" >/dev/null && (( count < 50 )); do - sleep 0.1 - count=$((count + 1)) - done - - if pgrep -f "^gpu-screen-recorder" >/dev/null; then - pkill -9 -f "^gpu-screen-recorder" - cleanup_webcam - notify-send "Screen recording error" "Recording process had to be force-killed. Video may be corrupted." -u critical -t 5000 - else - cleanup_webcam - trim_first_frame - notify-send "Screen recording saved to $OUTPUT_DIR" -t 2000 - fi - toggle_screenrecording_indicator -} - -toggle_screenrecording_indicator() { - pkill -RTMIN+8 waybar -} - -screenrecording_active() { - pgrep -f "^gpu-screen-recorder" >/dev/null || pgrep -f "WebcamOverlay" >/dev/null -} - if screenrecording_active; then - if pgrep -f "WebcamOverlay" >/dev/null && ! pgrep -f "^gpu-screen-recorder" >/dev/null; then - cleanup_webcam - else - stop_screenrecording - fi -elif [[ $STOP_RECORDING == "false" ]]; then + stop_screenrecording +elif [[ $STOP_RECORDING == "true" ]]; then + exit 1 +else [[ $WEBCAM == "true" ]] && start_webcam_overlay start_screenrecording || cleanup_webcam -else - exit 1 fi From 7d95dcdfc7fd603998461dbc99d54f3c6fd51ae3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 17:51:59 +0100 Subject: [PATCH 27/35] In order of apperance --- bin/omarchy-cmd-screenrecord | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index 072cfab1..56813dd5 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -32,24 +32,6 @@ for arg in "$@"; do esac done -default_resolution() { - local width height - read -r width height < <(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.width) \(.height)"') - if ((width > 3840 || height > 2160)); then - echo "3840x2160" - else - echo "0x0" - fi -} - -toggle_screenrecording_indicator() { - pkill -RTMIN+8 waybar -} - -cleanup_webcam() { - pkill -f "WebcamOverlay" 2>/dev/null -} - start_webcam_overlay() { cleanup_webcam @@ -90,6 +72,20 @@ start_webcam_overlay() { sleep 1 } +cleanup_webcam() { + pkill -f "WebcamOverlay" 2>/dev/null +} + +default_resolution() { + local width height + read -r width height < <(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.width) \(.height)"') + if ((width > 3840 || height > 2160)); then + echo "3840x2160" + else + echo "0x0" + fi +} + start_screenrecording() { local filename="$OUTPUT_DIR/screenrecording-$(date +'%Y-%m-%d_%H-%M-%S').mp4" local audio_devices="" @@ -145,6 +141,10 @@ stop_screenrecording() { rm -f "$RECORDING_FILE" } +toggle_screenrecording_indicator() { + pkill -RTMIN+8 waybar +} + screenrecording_active() { pgrep -f "^gpu-screen-recorder" >/dev/null } From a4303e178255fa91ea06f6fe1d5318a048a6782d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 17:56:35 +0100 Subject: [PATCH 28/35] Use fixed framework for easier importing into kdenlive --- bin/omarchy-cmd-screenrecord | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-cmd-screenrecord index 56813dd5..3ee3d877 100755 --- a/bin/omarchy-cmd-screenrecord +++ b/bin/omarchy-cmd-screenrecord @@ -103,7 +103,7 @@ start_screenrecording() { local resolution="${RESOLUTION:-$(default_resolution)}" - gpu-screen-recorder -w portal -k auto -s "$resolution" -f 60 -fallback-cpu-encoding yes -o "$filename" "${audio_args[@]}" & + gpu-screen-recorder -w portal -k auto -s "$resolution" -f 60 -fm cfr -fallback-cpu-encoding yes -o "$filename" "${audio_args[@]}" & local pid=$! # Wait for recording to actually start (file appears after portal selection) From 748fbed3bdedd06935e163cc0f248c85e82cd8c6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:07:22 +0100 Subject: [PATCH 29/35] Update default/hypr/bindings/tiling-v2.conf Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- default/hypr/bindings/tiling-v2.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 3b559456..58e3840b 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -124,5 +124,5 @@ bindd = SUPER ALT, code:12, Switch to group window 3, changegroupactive, 3 bindd = SUPER ALT, code:13, Switch to group window 4, changegroupactive, 4 bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5 -# Cycle monitor resolution +# Cycle monitor scaling bindd = SUPER, Slash, Cycle monitor scaling, exec, omarchy-hyprland-monitor-scaling-cycle From b3c6a095f98c1b14990ede51094493c9975d98b5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:07:58 +0100 Subject: [PATCH 30/35] Consistent naming --- default/hypr/bindings/utilities.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6ba2f82c..14cc3cdb 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -15,7 +15,7 @@ bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 window gaps, exec, omarchy-hyprland-window-gaps-toggle -bindd = SUPER CTRL, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle +bindd = SUPER CTRL, bACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss From 82e779fc5f3845913a1154a3b240182b06af3e4e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:09:49 +0100 Subject: [PATCH 31/35] B not b --- default/hypr/bindings/utilities.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 14cc3cdb..bd3ca4ab 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -15,7 +15,7 @@ bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background 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 window gaps, exec, omarchy-hyprland-window-gaps-toggle -bindd = SUPER CTRL, bACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle +bindd = SUPER CTRL, BACKSPACE, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle # Notifications bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss From eb7457d227b061af2aa5ae13a7e98f8598ee5ea6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:14:14 +0100 Subject: [PATCH 32/35] Force color output even as we're capturing the update log --- bin/omarchy-update-perform | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/omarchy-update-perform b/bin/omarchy-update-perform index c2101c15..5cf6e329 100755 --- a/bin/omarchy-update-perform +++ b/bin/omarchy-update-perform @@ -5,7 +5,8 @@ set -e # Ensure screensaver/sleep doesn't set in during updates hyprctl dispatch tagwindow +noidle &> /dev/null || true -# Capture update logs +# Capture update logs (CLICOLOR_FORCE keeps gum styled when stdout is piped through tee) +export CLICOLOR_FORCE=1 exec > >(tee "/tmp/omarchy-update.log") 2>&1 # Perform all update steps From 42e20870d35c4984c255831a8cafd20e3980352c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:14:41 +0100 Subject: [PATCH 33/35] Use slide in animation for screensaver Co-authored-by: @ieocin Fixes #4815 --- default/hypr/apps/system.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 702388f2..443fb069 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -10,6 +10,7 @@ windowrule = float on, match:class org.gnome.Calculator # Fullscreen screensaver windowrule = fullscreen on, match:class org.omarchy.screensaver windowrule = float on, match:class org.omarchy.screensaver +windowrule = animation slide, match:class org.omarchy.screensaver # No transparency on media windows windowrule = tag -default-opacity, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ From eb4f9bd5c8ee00337ee4085509da250aa73e0097 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:17:25 +0100 Subject: [PATCH 34/35] Better description --- migrations/1772293693.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/1772293693.sh b/migrations/1772293693.sh index f8f6b7f1..bc49afff 100644 --- a/migrations/1772293693.sh +++ b/migrations/1772293693.sh @@ -1,4 +1,4 @@ -echo "Rename dwindle section to layout in user looknfeel.conf" +echo "Move single_window_aspect_ratio from dwindle to layout in user looknfeel.conf" looknfeel="$HOME/.config/hypr/looknfeel.conf" From bce8263675851dae56cdcbf4b913673c9e7c28cb Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 28 Feb 2026 18:33:21 +0100 Subject: [PATCH 35/35] Update toggle split window binding Fixes #4809 --- default/hypr/bindings/tiling-v2.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default/hypr/bindings/tiling-v2.conf b/default/hypr/bindings/tiling-v2.conf index 58e3840b..6b8da1dd 100644 --- a/default/hypr/bindings/tiling-v2.conf +++ b/default/hypr/bindings/tiling-v2.conf @@ -3,7 +3,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, T, Toggle window floating/tiling, togglefloating, bindd = SUPER, F, Full screen, fullscreen, 0