From 4cc6ea3d9f9221bd254f1f2a0f2916e780e05087 Mon Sep 17 00:00:00 2001 From: bontalor Date: Wed, 29 Apr 2026 07:55:52 -0400 Subject: [PATCH 01/13] Fix: Use accel_profile=flat instead of force_no_accel for proper pointer behavior (#5479) * Replace force_no_accel with accel_profile * Correct comment --- config/hypr/input.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/hypr/input.conf b/config/hypr/input.conf index c8b0a19c..10d122cd 100644 --- a/config/hypr/input.conf +++ b/config/hypr/input.conf @@ -19,8 +19,8 @@ input { # Increase sensitivity for mouse/trackpad (default: 0) # sensitivity = 0.35 - # Turn off mouse acceleration (default: false) - # force_no_accel = true + # Turn off mouse acceleration (default: adaptive) + # accel_profile = flat touchpad { # Use natural (inverse) scrolling From 858916783f58828fd12c317076e5ddb5279e5cae Mon Sep 17 00:00:00 2001 From: David Zucker Date: Wed, 29 Apr 2026 21:10:02 +0900 Subject: [PATCH 02/13] Allow Docker DNS from 192.168 networks (#5465) * Allow Docker DNS from 192.168 networks * Only add Docker DNS rule when UFW is active --- install/first-run/firewall.sh | 1 + migrations/1777282771.sh | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 migrations/1777282771.sh diff --git a/install/first-run/firewall.sh b/install/first-run/firewall.sh index cc187dc2..96210c8b 100644 --- a/install/first-run/firewall.sh +++ b/install/first-run/firewall.sh @@ -8,6 +8,7 @@ sudo ufw allow 53317/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' +sudo ufw allow in proto udp from 192.168.0.0/16 to 172.17.0.1 port 53 comment 'allow-docker-dns' # Turn on the firewall sudo ufw --force enable diff --git a/migrations/1777282771.sh b/migrations/1777282771.sh new file mode 100644 index 00000000..b350376f --- /dev/null +++ b/migrations/1777282771.sh @@ -0,0 +1,5 @@ +echo "Allow Docker DNS from Docker's 192.168 address pool" + +if omarchy-cmd-present ufw && sudo ufw status | grep -q "Status: active"; then + sudo ufw allow in proto udp from 192.168.0.0/16 to 172.17.0.1 port 53 comment 'allow-docker-dns' +fi From e76d7544d3e867baba1b7e0acbd3f94e55956598 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 14:50:15 +0200 Subject: [PATCH 03/13] Move omarchy-cmd-screen* to omarchy-capture-screen* Will match upcoming cli grouping too --- AGENTS.md | 1 + ...md-screenrecord => omarchy-capture-screencording} | 0 ...chy-cmd-screenshot => omarchy-capture-screenshot} | 0 bin/omarchy-menu | 12 ++++++------ config/hypr/bindings.conf | 2 +- config/waybar/config.jsonc | 2 +- default/hypr/bindings/utilities.conf | 2 +- default/omarchy-skill/SKILL.md | 2 +- migrations/1760724934.sh | 2 +- migrations/1777464602.sh | 8 ++++++++ 10 files changed, 20 insertions(+), 11 deletions(-) rename bin/{omarchy-cmd-screenrecord => omarchy-capture-screencording} (100%) rename bin/{omarchy-cmd-screenshot => omarchy-capture-screenshot} (100%) create mode 100644 migrations/1777464602.sh diff --git a/AGENTS.md b/AGENTS.md index c0c87cb3..689f4c50 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,6 +12,7 @@ All commands start with `omarchy-`. Prefixes indicate purpose: - `cmd-` - check if commands exist, misc utility commands +- `capture-` - screenshots, screen recordings, and other capture tools - `pkg-` - package management helpers - `hw-` - hardware detection (return exit codes for use in conditionals) - `refresh-` - copy default config to user's `~/.config/` diff --git a/bin/omarchy-cmd-screenrecord b/bin/omarchy-capture-screencording similarity index 100% rename from bin/omarchy-cmd-screenrecord rename to bin/omarchy-capture-screencording diff --git a/bin/omarchy-cmd-screenshot b/bin/omarchy-capture-screenshot similarity index 100% rename from bin/omarchy-cmd-screenshot rename to bin/omarchy-capture-screenshot diff --git a/bin/omarchy-menu b/bin/omarchy-menu index fc6bd63f..f1dfc905 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -106,7 +106,7 @@ show_trigger_menu() { show_capture_menu() { case $(menu "Capture" " Screenshot\n Screenrecord\n󰃉 Color") in - *Screenshot*) omarchy-cmd-screenshot ;; + *Screenshot*) omarchy-capture-screenshot ;; *Screenrecord*) show_screenrecord_menu ;; *Color*) pkill hyprpicker || hyprpicker -a ;; *) back_to show_trigger_menu ;; @@ -141,18 +141,18 @@ show_webcam_select_menu() { } show_screenrecord_menu() { - omarchy-cmd-screenrecord --stop-recording && exit 0 + omarchy-capture-screencording --stop-recording && exit 0 case $(menu "Screenrecord" " With no audio\n With desktop audio\n With desktop + microphone audio\n With desktop + microphone audio + webcam") in - *"With no audio") omarchy-cmd-screenrecord ;; - *"With desktop audio") omarchy-cmd-screenrecord --with-desktop-audio ;; - *"With desktop + microphone audio") omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio ;; + *"With no audio") omarchy-capture-screencording ;; + *"With desktop audio") omarchy-capture-screencording --with-desktop-audio ;; + *"With desktop + microphone audio") omarchy-capture-screencording --with-desktop-audio --with-microphone-audio ;; *"With desktop + microphone audio + webcam") local device=$(show_webcam_select_menu) || { back_to show_capture_menu return } - omarchy-cmd-screenrecord --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device" + omarchy-capture-screencording --with-desktop-audio --with-microphone-audio --with-webcam --webcam-device="$device" ;; *) back_to show_capture_menu ;; esac diff --git a/config/hypr/bindings.conf b/config/hypr/bindings.conf index 351fbe46..90003fbe 100644 --- a/config/hypr/bindings.conf +++ b/config/hypr/bindings.conf @@ -34,6 +34,6 @@ bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/c # bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu # Logitech MX Keys -# bind = SUPER SHIFT, S, exec, omarchy-cmd-screenshot # Print Screen Button +# bind = SUPER SHIFT, S, exec, omarchy-capture-screenshot # Print Screen Button # bind = SUPER, H, exec, voxtype record toggle # Dictation Button # bind = SUPER, PERIOD, exec, omarchy-launch-walker -m symbols # Emoji Button diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 150cfea6..b7c54fd4 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -138,7 +138,7 @@ "on-scroll-right": "" }, "custom/screenrecording-indicator": { - "on-click": "omarchy-cmd-screenrecord", + "on-click": "omarchy-capture-screencording", "exec": "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh", "signal": 8, "return-type": "json" diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 628a0aec..3171356a 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -39,7 +39,7 @@ bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-brightness-display- bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-brightness-display-apple +60000 # Captures -bindd = , PRINT, Screenshot, exec, omarchy-cmd-screenshot +bindd = , PRINT, Screenshot, exec, omarchy-capture-screenshot bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a diff --git a/default/omarchy-skill/SKILL.md b/default/omarchy-skill/SKILL.md index 46c11e73..deafafab 100644 --- a/default/omarchy-skill/SKILL.md +++ b/default/omarchy-skill/SKILL.md @@ -108,7 +108,7 @@ cat $(which omarchy-theme-set) | `omarchy-theme-*` | Theme management | `omarchy-theme-set ` | | `omarchy-install-*` | Install optional software | `omarchy-install-docker-dbs` | | `omarchy-launch-*` | Launch apps | `omarchy-launch-browser` | -| `omarchy-cmd-*` | System commands | `omarchy-cmd-screenshot` | +| `omarchy-capture-*` | Screenshots and recordings | `omarchy-capture-screenshot` | | `omarchy-pkg-*` | Package management | `omarchy-pkg-install ` | | `omarchy-setup-*` | Initial setup tasks | `omarchy-setup-fingerprint` | | `omarchy-update-*` | System updates | `omarchy-update` | diff --git a/migrations/1760724934.sh b/migrations/1760724934.sh index 62cec752..e6cb685c 100644 --- a/migrations/1760724934.sh +++ b/migrations/1760724934.sh @@ -11,7 +11,7 @@ fi echo "Copy hooks examples" cp -r $OMARCHY_PATH/config/omarchy/* $HOME/.config/omarchy/ -echo "Add packages for updated omarchy-cmd-screenshot" +echo "Add packages for updated omarchy-capture-screenshot" omarchy-pkg-add grim slurp echo "Add nfs support by default to Nautilus" diff --git a/migrations/1777464602.sh b/migrations/1777464602.sh new file mode 100644 index 00000000..a6f016a9 --- /dev/null +++ b/migrations/1777464602.sh @@ -0,0 +1,8 @@ +echo "Update Waybar screen recording command" + +WAYBAR_CONFIG="$HOME/.config/waybar/config.jsonc" + +if [[ -f $WAYBAR_CONFIG ]] && grep -q 'omarchy-cmd-screenrecord' "$WAYBAR_CONFIG"; then + sed -i 's/omarchy-cmd-screenrecord/omarchy-capture-screencording/g' "$WAYBAR_CONFIG" + omarchy-restart-waybar +fi From 12d8e001ab01fc080dd62758468a4519f67a4dd7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 14:54:03 +0200 Subject: [PATCH 04/13] Simpler command structure --- ...y-sudo-passwordless-toggle => omarchy-sudo-passwordless} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename bin/{omarchy-sudo-passwordless-toggle => omarchy-sudo-passwordless} (93%) diff --git a/bin/omarchy-sudo-passwordless-toggle b/bin/omarchy-sudo-passwordless similarity index 93% rename from bin/omarchy-sudo-passwordless-toggle rename to bin/omarchy-sudo-passwordless index 530a7dea..1ac400bb 100755 --- a/bin/omarchy-sudo-passwordless-toggle +++ b/bin/omarchy-sudo-passwordless @@ -1,7 +1,7 @@ #!/bin/bash # Toggle passwordless sudo for the current user. -# Usage: omarchy-sudo-passwordless-toggle [MINUTES] +# Usage: omarchy-sudo-passwordless [MINUTES] # First run: enables passwordless sudo for 15 minutes (after confirmation). # Second run: disables it early. @@ -10,7 +10,7 @@ TIMER_NAME="omarchy-nopasswd-expire-${USER}" MINUTES=${1:-15} if [[ $1 && ! $1 =~ ^[0-9]+$ ]]; then - echo "Usage: omarchy-sudo-passwordless-toggle [MINUTES]" >&2 + echo "Usage: omarchy-sudo-passwordless [MINUTES]" >&2 exit 1 fi @@ -52,7 +52,7 @@ else echo "" echo "Passwordless sudo has been ENABLED. It will automatically disable in ${MINUTES} minutes." - echo "Note: if you restart before then, run omarchy-sudo-passwordless-toggle again to disable it." + echo "Note: if you restart before then, run omarchy-sudo-passwordless again to disable it." else echo "Aborted. No changes made." fi From c647edbc042f2fd326e55f7661e5f853e1289b42 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 14:58:34 +0200 Subject: [PATCH 05/13] Allow passwordless sudo to be toggled from the toggle menu --- bin/omarchy-menu | 3 ++- bin/omarchy-sudo-passwordless | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index f1dfc905..7173c2fa 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -168,7 +168,7 @@ show_share_menu() { } show_toggle_menu() { - local options="󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n Direct Boot" + local options="󱄄 Screensaver\n󰔎 Nightlight\n󱫖 Idle Lock\n󰍜 Top Bar\n󱂬 Workspace Layout\n Window Gaps\n 1-Window Ratio\n󰍹 Monitor Scaling\n Direct Boot\n󰟵 Passwordless Sudo" case $(menu "Toggle" "$options") in *Screensaver*) omarchy-toggle-screensaver ;; @@ -180,6 +180,7 @@ show_toggle_menu() { *Gaps*) omarchy-hyprland-window-gaps-toggle ;; *Scaling*) omarchy-hyprland-monitor-scaling-cycle ;; *"Direct Boot"*) present_terminal omarchy-config-direct-boot ;; + *"Passwordless Sudo"*) present_terminal omarchy-sudo-passwordless ;; *) back_to show_trigger_menu ;; esac } diff --git a/bin/omarchy-sudo-passwordless b/bin/omarchy-sudo-passwordless index 1ac400bb..d0cde92b 100755 --- a/bin/omarchy-sudo-passwordless +++ b/bin/omarchy-sudo-passwordless @@ -14,6 +14,8 @@ if [[ $1 && ! $1 =~ ^[0-9]+$ ]]; then exit 1 fi +echo "Toggle passwordless sudo..." + # Safety: if the file exists but the timer doesn't (e.g. after reboot), clean up if sudo test -f "$NOPASSWD_FILE" && ! systemctl is-active "${TIMER_NAME}.timer" &>/dev/null; then sudo rm "$NOPASSWD_FILE" @@ -33,7 +35,7 @@ if sudo test -f "$NOPASSWD_FILE"; then fi else echo "" - echo "⚠️WARNING: This will allow ANY process running as your user to" + echo "⚠️ WARNING: This will allow ANY process running as your user to" echo "execute ANY command as root WITHOUT a password for ${MINUTES} minutes." echo "" echo "This is useful for AI agents that need to run sudo commands," From a7593ade7a663a4dd48396b3ffb66b24bf217cce Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:00:59 +0200 Subject: [PATCH 06/13] Move audio commands under the same namespace --- bin/{omarchy-cmd-mic-mute => omarchy-audio-mic-mute} | 4 ++-- ...-cmd-mic-mute-thinkpad => omarchy-audio-mic-mute-thinkpad} | 0 bin/{omarchy-cmd-mic-mute-xps => omarchy-audio-mic-mute-xps} | 0 bin/{omarchy-cmd-audio-switch => omarchy-audio-ouput-switch} | 0 default/hypr/bindings/media.conf | 4 ++-- 5 files changed, 4 insertions(+), 4 deletions(-) rename bin/{omarchy-cmd-mic-mute => omarchy-audio-mic-mute} (79%) rename bin/{omarchy-cmd-mic-mute-thinkpad => omarchy-audio-mic-mute-thinkpad} (100%) rename bin/{omarchy-cmd-mic-mute-xps => omarchy-audio-mic-mute-xps} (100%) rename bin/{omarchy-cmd-audio-switch => omarchy-audio-ouput-switch} (100%) diff --git a/bin/omarchy-cmd-mic-mute b/bin/omarchy-audio-mic-mute similarity index 79% rename from bin/omarchy-cmd-mic-mute rename to bin/omarchy-audio-mic-mute index 3931d0b8..2e674cdc 100755 --- a/bin/omarchy-cmd-mic-mute +++ b/bin/omarchy-audio-mic-mute @@ -3,9 +3,9 @@ # Toggle microphone mute. Dell XPS and ThinkPad systems get special handling for the hardware LED. if omarchy-hw-match "XPS"; then - omarchy-cmd-mic-mute-xps + omarchy-audio-mic-mute-xps elif omarchy-hw-match "ThinkPad"; then - omarchy-cmd-mic-mute-thinkpad + omarchy-audio-mic-mute-thinkpad else omarchy-swayosd-client --input-volume mute-toggle fi diff --git a/bin/omarchy-cmd-mic-mute-thinkpad b/bin/omarchy-audio-mic-mute-thinkpad similarity index 100% rename from bin/omarchy-cmd-mic-mute-thinkpad rename to bin/omarchy-audio-mic-mute-thinkpad diff --git a/bin/omarchy-cmd-mic-mute-xps b/bin/omarchy-audio-mic-mute-xps similarity index 100% rename from bin/omarchy-cmd-mic-mute-xps rename to bin/omarchy-audio-mic-mute-xps diff --git a/bin/omarchy-cmd-audio-switch b/bin/omarchy-audio-ouput-switch similarity index 100% rename from bin/omarchy-cmd-audio-switch rename to bin/omarchy-audio-ouput-switch diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index c02872dc..9b4092e9 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -2,7 +2,7 @@ bindeld = ,XF86AudioRaiseVolume, Volume up, exec, omarchy-swayosd-client --output-volume raise bindeld = ,XF86AudioLowerVolume, Volume down, exec, omarchy-swayosd-client --output-volume lower bindeld = ,XF86AudioMute, Mute, exec, omarchy-swayosd-client --output-volume mute-toggle -bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-cmd-mic-mute +bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-audio-mic-mute bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5% bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%- bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up @@ -25,4 +25,4 @@ bindld = , XF86AudioPlay, Play, exec, omarchy-swayosd-client --playerctl play-pa bindld = , XF86AudioPrev, Previous track, exec, omarchy-swayosd-client --playerctl previous # Switch audio output with Super + Mute -bindld = SUPER, XF86AudioMute, Switch audio output, exec, omarchy-cmd-audio-switch +bindld = SUPER, XF86AudioMute, Switch audio output, exec, omarchy-audio-ouput-switch From 74a3797cf0b57a19a458d3e96b19f48b7fbfc2de Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:08:20 +0200 Subject: [PATCH 07/13] Move omarchy-lock-screen to omarchy-system-lock to fit with the others --- bin/omarchy-menu | 2 +- bin/{omarchy-lock-screen => omarchy-system-lock} | 0 config/hypr/hypridle.conf | 2 +- config/omarchy/extensions/menu.sh | 2 +- default/hypr/bindings/utilities.conf | 2 +- default/omarchy-skill/SKILL.md | 2 +- migrations/1777467659.sh | 6 ++++++ 7 files changed, 11 insertions(+), 5 deletions(-) rename bin/{omarchy-lock-screen => omarchy-system-lock} (100%) create mode 100644 migrations/1777467659.sh diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 7173c2fa..090fc6b1 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -600,7 +600,7 @@ show_system_menu() { case $(menu "System" "$options") in *Screensaver*) omarchy-launch-screensaver force ;; - *Lock*) omarchy-lock-screen ;; + *Lock*) omarchy-system-lock ;; *Suspend*) systemctl suspend ;; *Hibernate*) systemctl hibernate ;; *Logout*) omarchy-system-logout ;; diff --git a/bin/omarchy-lock-screen b/bin/omarchy-system-lock similarity index 100% rename from bin/omarchy-lock-screen rename to bin/omarchy-system-lock diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf index b7d17690..7d003275 100644 --- a/config/hypr/hypridle.conf +++ b/config/hypr/hypridle.conf @@ -1,5 +1,5 @@ general { - lock_cmd = omarchy-lock-screen # lock screen and 1password + lock_cmd = omarchy-system-lock # lock screen and 1password before_sleep_cmd = loginctl lock-session # lock before suspend. after_sleep_cmd = sleep 1 && hyprctl dispatch dpms on # delay for PAM readiness, then turn on display. inhibit_sleep = 3 # wait until screen is locked diff --git a/config/omarchy/extensions/menu.sh b/config/omarchy/extensions/menu.sh index 4ededf8e..f7d0b277 100644 --- a/config/omarchy/extensions/menu.sh +++ b/config/omarchy/extensions/menu.sh @@ -7,7 +7,7 @@ # # show_system_menu() { # case $(menu "System" " Lock\n󰐥 Shutdown") in -# *Lock*) omarchy-lock-screen ;; +# *Lock*) omarchy-system-lock ;; # *Shutdown*) omarchy-system-shutdown ;; # *) back_to show_main_menu ;; # esac diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 3171356a..144c6b47 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -64,4 +64,4 @@ bindd = SUPER CTRL, Z, Zoom in, exec, hyprctl keyword cursor:zoom_factor $(hyprc bindd = SUPER CTRL ALT, Z, Reset zoom, exec, hyprctl keyword cursor:zoom_factor 1 # Lock system -bindd = SUPER CTRL, L, Lock system, exec, omarchy-lock-screen +bindd = SUPER CTRL, L, Lock system, exec, omarchy-system-lock diff --git a/default/omarchy-skill/SKILL.md b/default/omarchy-skill/SKILL.md index deafafab..ba152975 100644 --- a/default/omarchy-skill/SKILL.md +++ b/default/omarchy-skill/SKILL.md @@ -308,7 +308,7 @@ omarchy-font-set # Change font omarchy-update # Full system update omarchy-version # Show Omarchy version omarchy-debug --no-sudo --print # Debug info (ALWAYS use these flags) -omarchy-lock-screen # Lock screen +omarchy-system-lock # Lock screen omarchy-system-shutdown # Shutdown omarchy-system-reboot # Reboot ``` diff --git a/migrations/1777467659.sh b/migrations/1777467659.sh new file mode 100644 index 00000000..994c30bf --- /dev/null +++ b/migrations/1777467659.sh @@ -0,0 +1,6 @@ +echo "Rename lock screen command in Hypridle config" + +if grep -q 'omarchy-lock-screen' ~/.config/hypr/hypridle.conf; then + sed -i 's/omarchy-lock-screen/omarchy-system-lock/g' ~/.config/hypr/hypridle.conf + omarchy-restart-hypridle +fi From 39a289412d88b6db1979e24e08394fff253cb8d5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:11:37 +0200 Subject: [PATCH 08/13] Move omarchy-cmd-screensaver to just omarchy-screensaver We should just have omarchy-cmd-* for cmd checks --- bin/omarchy-launch-screensaver | 6 +++--- bin/{omarchy-cmd-screensaver => omarchy-screensaver} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename bin/{omarchy-cmd-screensaver => omarchy-screensaver} (100%) diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index b672c3e5..a3a70df5 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -29,21 +29,21 @@ for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do hyprctl dispatch exec -- \ alacritty --class=org.omarchy.screensaver \ --config-file ~/.local/share/omarchy/default/alacritty/screensaver.toml \ - -e omarchy-cmd-screensaver + -e omarchy-screensaver ;; *ghostty*) hyprctl dispatch exec -- \ ghostty --class=org.omarchy.screensaver \ --config-file=~/.local/share/omarchy/default/ghostty/screensaver \ --font-size=18 \ - -e omarchy-cmd-screensaver + -e omarchy-screensaver ;; *kitty*) hyprctl dispatch exec -- \ kitty --class=org.omarchy.screensaver \ --override font_size=18 \ --override window_padding_width=0 \ - -e omarchy-cmd-screensaver + -e omarchy-screensaver ;; *) notify-send -u low "✋ Screensaver only runs in Alacritty, Ghostty, or Kitty" diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-screensaver similarity index 100% rename from bin/omarchy-cmd-screensaver rename to bin/omarchy-screensaver From 4cc41440749da26c698a96d7e646bada211b27df Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:14:18 +0200 Subject: [PATCH 09/13] Move omarchy-cmd-first-run out of the cmd namespace too --- bin/{omarchy-cmd-first-run => omarchy-first-run} | 0 default/hypr/autostart.conf | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename bin/{omarchy-cmd-first-run => omarchy-first-run} (100%) diff --git a/bin/omarchy-cmd-first-run b/bin/omarchy-first-run similarity index 100% rename from bin/omarchy-cmd-first-run rename to bin/omarchy-first-run diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index 984b55a3..394a5f32 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -5,7 +5,7 @@ exec-once = uwsm-app -- fcitx5 --disable notificationitem exec-once = uwsm-app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm-app -- swayosd-server exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 -exec-once = omarchy-cmd-first-run +exec-once = omarchy-first-run exec-once = omarchy-powerprofiles-init exec-once = uwsm-app -- omarchy-hyprland-monitor-watch From ed62fa81ecd27e1fdd36fe9b55ca1cc83093b3fe Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:15:39 +0200 Subject: [PATCH 10/13] Move omarchy-cmd-share to omarchy-menu-share --- bin/omarchy-menu | 6 +++--- bin/{omarchy-cmd-share => omarchy-menu-share} | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename bin/{omarchy-cmd-share => omarchy-menu-share} (95%) diff --git a/bin/omarchy-menu b/bin/omarchy-menu index 090fc6b1..da191b7b 100755 --- a/bin/omarchy-menu +++ b/bin/omarchy-menu @@ -160,9 +160,9 @@ show_screenrecord_menu() { show_share_menu() { case $(menu "Share" " Clipboard\n File \n Folder") in - *Clipboard*) omarchy-cmd-share clipboard ;; - *File*) terminal bash -c "omarchy-cmd-share file" ;; - *Folder*) terminal bash -c "omarchy-cmd-share folder" ;; + *Clipboard*) omarchy-menu-share clipboard ;; + *File*) terminal bash -c "omarchy-menu-share file" ;; + *Folder*) terminal bash -c "omarchy-menu-share folder" ;; *) back_to show_trigger_menu ;; esac } diff --git a/bin/omarchy-cmd-share b/bin/omarchy-menu-share similarity index 95% rename from bin/omarchy-cmd-share rename to bin/omarchy-menu-share index 81535549..1a987339 100755 --- a/bin/omarchy-cmd-share +++ b/bin/omarchy-menu-share @@ -3,7 +3,7 @@ # Share clipboard, file, or folder using LocalSend. Bound to Super + Ctrl + S by default. if (($# == 0)); then - echo "Usage: omarchy-cmd-share [clipboard|file|folder]" + echo "Usage: omarchy-menu-share [clipboard|file|folder]" exit 1 fi From ac40c0dbad076232db6226f898620bd83050f322 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 29 Apr 2026 15:17:53 +0200 Subject: [PATCH 11/13] Audio has input and output, easier to understand this way --- bin/{omarchy-audio-mic-mute => omarchy-audio-input-mute} | 4 ++-- ...io-mic-mute-thinkpad => omarchy-audio-input-mute-thinkpad} | 0 ...marchy-audio-mic-mute-xps => omarchy-audio-input-mute-xps} | 0 default/hypr/bindings/media.conf | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename bin/{omarchy-audio-mic-mute => omarchy-audio-input-mute} (78%) rename bin/{omarchy-audio-mic-mute-thinkpad => omarchy-audio-input-mute-thinkpad} (100%) rename bin/{omarchy-audio-mic-mute-xps => omarchy-audio-input-mute-xps} (100%) diff --git a/bin/omarchy-audio-mic-mute b/bin/omarchy-audio-input-mute similarity index 78% rename from bin/omarchy-audio-mic-mute rename to bin/omarchy-audio-input-mute index 2e674cdc..c7577b2d 100755 --- a/bin/omarchy-audio-mic-mute +++ b/bin/omarchy-audio-input-mute @@ -3,9 +3,9 @@ # Toggle microphone mute. Dell XPS and ThinkPad systems get special handling for the hardware LED. if omarchy-hw-match "XPS"; then - omarchy-audio-mic-mute-xps + omarchy-audio-input-mute-xps elif omarchy-hw-match "ThinkPad"; then - omarchy-audio-mic-mute-thinkpad + omarchy-audio-input-mute-thinkpad else omarchy-swayosd-client --input-volume mute-toggle fi diff --git a/bin/omarchy-audio-mic-mute-thinkpad b/bin/omarchy-audio-input-mute-thinkpad similarity index 100% rename from bin/omarchy-audio-mic-mute-thinkpad rename to bin/omarchy-audio-input-mute-thinkpad diff --git a/bin/omarchy-audio-mic-mute-xps b/bin/omarchy-audio-input-mute-xps similarity index 100% rename from bin/omarchy-audio-mic-mute-xps rename to bin/omarchy-audio-input-mute-xps diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index 9b4092e9..fd030946 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -2,7 +2,7 @@ bindeld = ,XF86AudioRaiseVolume, Volume up, exec, omarchy-swayosd-client --output-volume raise bindeld = ,XF86AudioLowerVolume, Volume down, exec, omarchy-swayosd-client --output-volume lower bindeld = ,XF86AudioMute, Mute, exec, omarchy-swayosd-client --output-volume mute-toggle -bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-audio-mic-mute +bindeld = ,XF86AudioMicMute, Mute microphone, exec, omarchy-audio-input-mute bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5% bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%- bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up From 66da3644fc98fcf00118ffeebf7e0e66eef73770 Mon Sep 17 00:00:00 2001 From: N1R4 Date: Wed, 29 Apr 2026 19:17:08 +0545 Subject: [PATCH 12/13] feat: add dosfstools for /boot recovery (#5448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds dosfstools to default installs and migrates existing systems so fsck.fat and mkfs.fat are available for Omarchy’s FAT32 /boot partition. This also helps with recovery from dirty or corrupt FAT filesystems after unclean shutdowns or power loss. --- install/omarchy-base.packages | 1 + migrations/1777145626.sh | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 migrations/1777145626.sh diff --git a/install/omarchy-base.packages b/install/omarchy-base.packages index c04547bf..20e6d817 100644 --- a/install/omarchy-base.packages +++ b/install/omarchy-base.packages @@ -24,6 +24,7 @@ cups-pdf docker docker-buildx docker-compose +dosfstools dotnet-runtime-9.0 dust evince diff --git a/migrations/1777145626.sh b/migrations/1777145626.sh new file mode 100644 index 00000000..b6518b5d --- /dev/null +++ b/migrations/1777145626.sh @@ -0,0 +1,3 @@ +echo "Install dosfstools for FAT filesystem utilities like fsck.fat and mkfs.fat" + +omarchy-pkg-add dosfstools From 2f257e167c6eac4b1f04cb1d318723121065511c Mon Sep 17 00:00:00 2001 From: Paul Repin Date: Wed, 29 Apr 2026 16:46:18 +0300 Subject: [PATCH 13/13] alacritty.toml fallback for legacy themes without colors.toml (#5404) * add generation of colors.toml via alacritty.toml * Shorter command name * Fix perms --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-theme-colors-from-alacritty | 207 ++++++++++++++++++++++++ bin/omarchy-theme-set | 5 + 2 files changed, 212 insertions(+) create mode 100755 bin/omarchy-theme-colors-from-alacritty diff --git a/bin/omarchy-theme-colors-from-alacritty b/bin/omarchy-theme-colors-from-alacritty new file mode 100755 index 00000000..8f69aeee --- /dev/null +++ b/bin/omarchy-theme-colors-from-alacritty @@ -0,0 +1,207 @@ +#!/bin/bash + +set -e + +THEME_SOURCE="${1:-}" +COLORS_OUTPUT="$THEME_SOURCE/colors.toml" +ALACRITTY_FILE="$THEME_SOURCE/alacritty.toml" + +if [[ -z $THEME_SOURCE ]]; then + echo "Usage: omarchy-theme-colors-from-alacritty " >&2 + exit 1 +fi + +# Skip if colors.toml already exists in source theme +if [[ -f $COLORS_OUTPUT ]]; then + exit 0 +fi + +# Skip if no alacritty.toml to extract from +if [[ ! -f $ALACRITTY_FILE ]]; then + exit 0 +fi + +normalize_hex() { + local color="$1" + [[ -z $color ]] && return + color="${color#0x}" + color="${color#\#}" + if [[ $color =~ ^[0-9a-fA-F]{6}$ ]]; then + printf "#%s\n" "${color,,}" + fi +} + +extract_color_in_section() { + local section="$1" + local key="$2" + local color_hex="" + color_hex=$(awk -v section="$section" -v key="$key" ' + function trim(value) { + gsub(/^[ \t]+|[ \t]+$/, "", value) + return value + } + + function strip_comment(value, i, ch, out, in_single, in_double, prev) { + out = "" + in_single = 0 + in_double = 0 + prev = "" + + for (i = 1; i <= length(value); i++) { + ch = substr(value, i, 1) + + if (ch == "\"" && !in_single && prev != "\\") { + in_double = !in_double + } else if (ch == "'\''" && !in_double) { + in_single = !in_single + } + + if (ch == "#" && !in_single && !in_double) { + break + } + + out = out ch + prev = ch + } + + gsub(/[ \t]+$/, "", out) + return out + } + + /^[ \t]*\[/ { + in_section = ($0 ~ "^[ \\t]*\\[" section "\\][ \\t]*$") + next + } + + in_section { + line = $0 + line = strip_comment(line) + + split_pos = index(line, "=") + if (split_pos == 0) { + next + } + + current_key = trim(substr(line, 1, split_pos - 1)) + current_value = trim(substr(line, split_pos + 1)) + + if (current_key == key) { + gsub(/["'\''#]/, "", current_value) + sub(/^0[xX]/, "", current_value) + if (current_value ~ /^[0-9A-Fa-f]{6}$/) { + print current_value + exit + } + } + } + ' "$ALACRITTY_FILE") + + if [[ -n $color_hex && $color_hex =~ ^[0-9a-fA-F]{6}$ ]]; then + normalize_hex "$color_hex" + fi + + return 0 +} + +names=(black red green yellow blue magenta cyan white) + +# Extract normal colors (color0-7) +for i in {0..7}; do + name="${names[$i]}" + val=$(extract_color_in_section "colors.normal" "$name") + if [[ -z $val ]]; then + val=$(extract_color_in_section "colors" "normal.$name") + fi + + printf -v "color$i" "%s" "$val" +done + +# Validate we have all normal colors (required) +for c in color0 color1 color2 color3 color4 color5 color6 color7; do + if [[ -z ${!c} ]]; then + echo "Warning: Cannot extract all normal colors from $ALACRITTY_FILE, skipping generation" >&2 + exit 0 + fi +done + +# Extract bright colors (color8-15) +for i in {0..7}; do + normal="color$i" + bright="color$((i + 8))" + name="${names[$i]}" + + val=$(extract_color_in_section "colors.bright" "$name") + if [[ -z $val ]]; then + val=$(extract_color_in_section "colors" "bright.$name") + fi + + printf -v "$bright" "%s" "${val:-${!normal}}" +done + +# Extract primary colors +background=$(extract_color_in_section "colors.primary" "background") +foreground=$(extract_color_in_section "colors.primary" "foreground") + +if [[ -z $background ]]; then + background=$(extract_color_in_section "colors" "primary.background") +fi + +if [[ -z $foreground ]]; then + foreground=$(extract_color_in_section "colors" "primary.foreground") +fi + +# Extract cursor color (from [colors.cursor] section) +cursor=$(extract_color_in_section "colors.cursor" "cursor") + +if [[ -z $cursor ]]; then + cursor=$(extract_color_in_section "colors" "cursor.cursor") +fi + +# Extract selection colors +selection_background=$(extract_color_in_section "colors.selection" "background") + +if [[ -z $selection_background ]]; then + selection_background=$(extract_color_in_section "colors" "selection.background") +fi + +selection_foreground=$(extract_color_in_section "colors.selection" "text") + +if [[ -z $selection_foreground ]]; then + selection_foreground=$(extract_color_in_section "colors" "selection.text") +fi + +# Apply defaults +background=${background:-$color0} +foreground=${foreground:-$color7} +cursor=${cursor:-$foreground} +selection_background=${selection_background:-$foreground} +selection_foreground=${selection_foreground:-$background} +accent=$color4 + +mkdir -p "$THEME_SOURCE" + +cat > "$COLORS_OUTPUT" </dev/null cp -r "$USER_THEMES_PATH/$THEME_NAME/"* "$NEXT_THEME_PATH/" 2>/dev/null +# Generate colors.toml from alacritty.toml if theme is missing colors.toml +if [[ ! -f $NEXT_THEME_PATH/colors.toml && -f $NEXT_THEME_PATH/alacritty.toml ]]; then + omarchy-theme-colors-from-alacritty "$NEXT_THEME_PATH" +fi + # Generate dynamic configs omarchy-theme-set-templates