From 5fda6054cea17b61c4c0d6c1f521a06bbd9064cd Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sat, 2 Aug 2025 22:47:39 +0200 Subject: [PATCH 01/35] New installations don't need to migrate from what's already there --- install.sh | 1 + install/preflight/migrations.sh | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 install/preflight/migrations.sh diff --git a/install.sh b/install.sh index 58d2e40..f2a9f03 100755 --- a/install.sh +++ b/install.sh @@ -28,6 +28,7 @@ show_subtext() { # Install prerequisites source $OMARCHY_INSTALL/preflight/aur.sh source $OMARCHY_INSTALL/preflight/presentation.sh +source $OMARCHY_INSTALL/preflight/migrations.sh # Configuration show_logo beams 240 diff --git a/install/preflight/migrations.sh b/install/preflight/migrations.sh new file mode 100644 index 0000000..8379dc0 --- /dev/null +++ b/install/preflight/migrations.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +omarchy_migrations_state_path=~/.local/state/omarchy/migrations +mkdir -p $omarchy_migrations_state_path + +for file in ~/.local/share/omarchy/migrations/*.sh; do + touch "$omarchy_migrations_state_path/$(basename "$file")" +done From cb79065e5d2454caff2fb3fd8c5038e8807db4f3 Mon Sep 17 00:00:00 2001 From: Uriah Welcome Date: Sat, 2 Aug 2025 19:49:33 -0400 Subject: [PATCH 02/35] Launch the screensaver on all monitors not just the focused one. We also have to kill the screensaver across all monitors when we exit in omarch-cmd-screensaver. --- bin/omarchy-cmd-screensaver | 2 +- bin/omarchy-launch-screensaver | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/bin/omarchy-cmd-screensaver b/bin/omarchy-cmd-screensaver index bbe7b33..65bbce2 100755 --- a/bin/omarchy-cmd-screensaver +++ b/bin/omarchy-cmd-screensaver @@ -10,6 +10,7 @@ if command -v tte &>/dev/null; then while pgrep tte >/dev/null; do if read -n 1 -t 0.01; then pkill tte 2>/dev/null + pkill -f "alacritty --class Screensaver" 2>/dev/null exit 0 fi done @@ -17,4 +18,3 @@ if command -v tte &>/dev/null; then else gum spin --title "Can't find tte. Try: pip install terminaltexteffects" -- sleep 2 fi - diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 4617044..6b4dbff 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -1,5 +1,17 @@ #!/bin/bash -pgrep -f "alacritty --class Screensaver" || - alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \ - -o 'colors.cursor.cursor="#000000"' -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver +# exit early if screensave is already running +pgrep -f "alacritty --class Screensaver" && exit 0 + +focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') + +for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do + hyprctl dispatch focusmonitor $m + hyprctl dispatch exec -- \ + alacritty --class Screensaver --title Screensaver \ + -o 'colors.primary.background="#000000"' \ + -o 'colors.cursor.cursor="#000000"' \ + -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver +done + +hyprctl dispatch focusmonitor $focused From cf1b671a71d7e6e835167e228d49e475160752aa Mon Sep 17 00:00:00 2001 From: Ross Condie Date: Sun, 3 Aug 2025 09:10:45 +0200 Subject: [PATCH 03/35] Add Vim-style j/k navigation to walker config --- config/walker/config.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/walker/config.toml b/config/walker/config.toml index 4cf6d06..8247624 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -15,8 +15,8 @@ force_keyboard_focus = true [keys] accept_typeahead = ["tab"] trigger_labels = "lalt" -next = ["down"] -prev = ["up"] +next = ["down", "j"] +prev = ["up", "k"] close = ["esc"] remove_from_history = ["shift backspace"] resume_query = ["ctrl r"] From 2a2c5c90d1d4c630c67b7c20e70ec7e78945d6d1 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 09:37:04 +0200 Subject: [PATCH 04/35] Cleanup the omarchy-refresh/restart combos --- bin/omarchy-refresh-hypridle | 4 +--- bin/omarchy-refresh-hyprlock | 4 ++-- bin/omarchy-refresh-walker | 4 +--- bin/omarchy-refresh-waybar | 2 -- bin/omarchy-restart-hypridle | 4 ++++ bin/omarchy-restart-walker | 4 ++++ 6 files changed, 12 insertions(+), 10 deletions(-) create mode 100755 bin/omarchy-restart-hypridle create mode 100755 bin/omarchy-restart-walker diff --git a/bin/omarchy-refresh-hypridle b/bin/omarchy-refresh-hypridle index 0e1600c..f555f0f 100755 --- a/bin/omarchy-refresh-hypridle +++ b/bin/omarchy-refresh-hypridle @@ -1,6 +1,4 @@ #!/bin/bash omarchy-refresh-config hypr/hypridle.conf -pkill -x hypridle -uwsm app -- hypridle >/dev/null 2>&1 & - +omarchy-restart-hypridle diff --git a/bin/omarchy-refresh-hyprlock b/bin/omarchy-refresh-hyprlock index 26c1314..e14915a 100755 --- a/bin/omarchy-refresh-hyprlock +++ b/bin/omarchy-refresh-hyprlock @@ -1,4 +1,4 @@ #!/bin/bash -# Overwrite local Hyprlock settings with the latest in Omarchy -omarchy-refresh-config hypr/hyprlock.conf \ No newline at end of file +omarchy-refresh-config hypr/hyprlock.conf + diff --git a/bin/omarchy-refresh-walker b/bin/omarchy-refresh-walker index e4e3853..aa7a021 100755 --- a/bin/omarchy-refresh-walker +++ b/bin/omarchy-refresh-walker @@ -1,6 +1,4 @@ #!/bin/bash omarchy-refresh-config walker/config.toml - -pkill walker -setsid uwsm app -- walker --gapplication-service & +omarchy-restart-walker diff --git a/bin/omarchy-refresh-waybar b/bin/omarchy-refresh-waybar index 7dfae19..3f6af49 100755 --- a/bin/omarchy-refresh-waybar +++ b/bin/omarchy-refresh-waybar @@ -2,6 +2,4 @@ omarchy-refresh-config waybar/config.jsonc omarchy-refresh-config waybar/style.css - -# Restart waybar omarchy-restart-waybar diff --git a/bin/omarchy-restart-hypridle b/bin/omarchy-restart-hypridle new file mode 100755 index 0000000..9342030 --- /dev/null +++ b/bin/omarchy-restart-hypridle @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill -x hypridle +uwsm app -- hypridle >/dev/null 2>&1 & diff --git a/bin/omarchy-restart-walker b/bin/omarchy-restart-walker new file mode 100755 index 0000000..2d4aa4b --- /dev/null +++ b/bin/omarchy-restart-walker @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill walker +setsid uwsm app -- walker --gapplication-service & From 23b9b15936001bc02e6c5750a7384f787e3940b4 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 09:38:40 +0200 Subject: [PATCH 05/35] Convert refresh-compose command into the same bin as everything else --- bin/omarchy-restart-xcompose | 4 ++++ default/bash/functions | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) create mode 100755 bin/omarchy-restart-xcompose diff --git a/bin/omarchy-restart-xcompose b/bin/omarchy-restart-xcompose new file mode 100755 index 0000000..a1b6cb4 --- /dev/null +++ b/bin/omarchy-restart-xcompose @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill fcitx5 +uwsm app -- fcitx5 >/dev/null 2>&1 & diff --git a/default/bash/functions b/default/bash/functions index b1657c5..8061f71 100644 --- a/default/bash/functions +++ b/default/bash/functions @@ -65,9 +65,3 @@ web2app-remove() { rm "$DESKTOP_FILE" rm "$ICON_PATH" } - -# Ensure changes to ~/.XCompose are immediately available -refresh-xcompose() { - pkill fcitx5 - uwsm app -- fcitx5 >/dev/null 2>&1 & -} From cdc37313ad3df5fa63d7357905449f65c4e3d048 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 09:41:15 +0200 Subject: [PATCH 06/35] Revert "Merge pull request #464 from rosscondie/feat/vim-navigation-in-walker" This reverts commit b8275ca5afc49c508ba2547068ab569ff8a7967d, reversing changes made to 23b9b15936001bc02e6c5750a7384f787e3940b4. --- config/walker/config.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/walker/config.toml b/config/walker/config.toml index 6df4bca..9fe4c8b 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -15,8 +15,8 @@ force_keyboard_focus = true [keys] accept_typeahead = ["tab"] trigger_labels = "lalt" -next = ["down", "j"] -prev = ["up", "k"] +next = ["down"] +prev = ["up"] close = ["esc"] remove_from_history = ["shift backspace"] resume_query = ["ctrl r"] From 1fda1ade8a3fe0c819aed61206c10432732c301c Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 09:45:21 +0200 Subject: [PATCH 07/35] Increase screensaver font size for looks and performance Co-authored-by: @precision --- bin/omarchy-launch-screensaver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 4617044..748fa60 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -2,4 +2,4 @@ pgrep -f "alacritty --class Screensaver" || alacritty --class Screensaver --title Screensaver -o 'colors.primary.background="#000000"' \ - -o 'colors.cursor.cursor="#000000"' -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver + -o 'colors.cursor.cursor="#000000"' -o 'font.size=18' -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver From 008ede7bbd369b0d52473f433450083197229123 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:02:19 +0200 Subject: [PATCH 08/35] Tweaks --- bin/omarchy-launch-screensaver | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-launch-screensaver b/bin/omarchy-launch-screensaver index 8fc60df..736c702 100755 --- a/bin/omarchy-launch-screensaver +++ b/bin/omarchy-launch-screensaver @@ -8,11 +8,12 @@ focused=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name') for m in $(hyprctl monitors -j | jq -r '.[] | .name'); do hyprctl dispatch focusmonitor $m hyprctl dispatch exec -- \ - alacritty --class Screensaver --title Screensaver \ + alacritty --class Screensaver \ -o 'colors.primary.background="#000000"' \ -o 'colors.cursor.cursor="#000000"' \ -o 'font.size=18' \ + -o 'window.opacity=1' \ -e ~/.local/share/omarchy/bin/omarchy-cmd-screensaver done -hyprctl dispatch focusmonitor $focused \ No newline at end of file +hyprctl dispatch focusmonitor $focused From 3a5ef9d84155f2f816e2c2812abc30ba658a1285 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:18:15 +0200 Subject: [PATCH 09/35] Ensure screensaver doesn't start while the computer is locked --- config/hypr/hypridle.conf | 2 +- migrations/1754208139.sh | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 migrations/1754208139.sh diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf index 6579248..d769875 100644 --- a/config/hypr/hypridle.conf +++ b/config/hypr/hypridle.conf @@ -8,7 +8,7 @@ general { listener { timeout = 60 # 1min - on-timeout = omarchy-launch-screensaver # start screensaver + on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already) } listener { diff --git a/migrations/1754208139.sh b/migrations/1754208139.sh new file mode 100644 index 0000000..d2f4dd5 --- /dev/null +++ b/migrations/1754208139.sh @@ -0,0 +1,4 @@ +echo "Ensure screensaver doesn't start while the computer is locked" +if ! grep -q "pidof hyprlock || omarchy-launch-screensaver" ~/.config/hypr/hypridle.conf; then + omarchy-refresh-hypridle +fi From 3fb1bf9759f50f00aa98e7596e25edeb1bdb378f Mon Sep 17 00:00:00 2001 From: Jaxon Wright Date: Sun, 3 Aug 2025 04:26:59 -0400 Subject: [PATCH 10/35] Add Hyprsunset for Blue Light Filtering / Nightlight (#447) * install hyprsunset when installing other hypr packages * add hyprsunset to autostart * add default hyprsunset config to make it do nothing by default * waybar: add hyprsunset shortcut next to bluetooth shortcut to quickly toggle blue light filtering * waybar: fix icon switching for hyprsunset widget * add migration for hyprsunset * waybar: rename "Blue Light Filter" to "Nightlight" * waybar: make nightlight module appear next to bluetooth module * waybar: do not include nightlight module by default * add omarchy-toggle-nightlight script * add default keybinding for toggling hyprsunset nightlight (SUPER + CTRL + N) * waybar: remove nightlight module from config entirely * waybar: remove nightlight from css * update hyprsunset migration to skip yay install if already installed * omarchy-toggle-nightlight: use `omarchy-restart-waybar` script instead of pkill with -SIG * omarchy-toggle-nightlight: only restart waybar if nightlight is in the waybar config --------- Co-authored-by: David Heinemeier Hansson --- bin/omarchy-toggle-nightlight | 22 ++++++++++++++++++++++ config/hypr/hyprsunset.conf | 6 ++++++ default/hypr/autostart.conf | 1 + default/hypr/bindings/utilities.conf | 3 +++ install/desktop/hyprlandia.sh | 2 +- migrations/1754109724.sh | 7 +++++++ 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100755 bin/omarchy-toggle-nightlight create mode 100644 config/hypr/hyprsunset.conf create mode 100644 migrations/1754109724.sh diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight new file mode 100755 index 0000000..5894686 --- /dev/null +++ b/bin/omarchy-toggle-nightlight @@ -0,0 +1,22 @@ +#!/bin/bash + +# Default temperature values +ON_TEMP=4000 +OFF_TEMP=6500 + +# Query the current temperature +CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+') + +if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then + hyprctl hyprsunset temperature $ON_TEMP + notify-send " Nightlight On" + if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then + omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset + fi +else + hyprctl hyprsunset temperature $OFF_TEMP + notify-send " Nightlight Off" + if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then + omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset + fi +fi \ No newline at end of file diff --git a/config/hypr/hyprsunset.conf b/config/hypr/hyprsunset.conf new file mode 100644 index 0000000..1827445 --- /dev/null +++ b/config/hypr/hyprsunset.conf @@ -0,0 +1,6 @@ +# Makes hyprsunset do nothing to the screen by default +# Without this, the default applies some tint to the monitor +profile { + time = 00:00 + identity = true +} \ No newline at end of file diff --git a/default/hypr/autostart.conf b/default/hypr/autostart.conf index ae9b084..72e64af 100644 --- a/default/hypr/autostart.conf +++ b/default/hypr/autostart.conf @@ -2,6 +2,7 @@ exec-once = uwsm app -- hypridle exec-once = uwsm app -- mako exec-once = uwsm app -- waybar exec-once = uwsm app -- fcitx5 +exec-once = uwsm app -- hyprsunset exec-once = uwsm app -- swaybg -i ~/.config/omarchy/current/background -m fill exec-once = uwsm app -- swayosd-server exec-once = uwsm app -- walker --gapplication-service diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index fe449cc..073f2b3 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -18,6 +18,9 @@ bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power # Toggle idling bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle +# Toggle nightlight +bind = SUPER CTRL, N, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight + # Control Apple Display brightness bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 diff --git a/install/desktop/hyprlandia.sh b/install/desktop/hyprlandia.sh index e5d9368..5a7e916 100644 --- a/install/desktop/hyprlandia.sh +++ b/install/desktop/hyprlandia.sh @@ -1,6 +1,6 @@ #!/bin/bash yay -S --noconfirm --needed \ - hyprland hyprshot hyprpicker hyprlock hypridle polkit-gnome hyprland-qtutils \ + hyprland hyprshot hyprpicker hyprlock hypridle hyprsunset polkit-gnome hyprland-qtutils \ walker-bin libqalculate waybar mako swaybg swayosd \ xdg-desktop-portal-hyprland xdg-desktop-portal-gtk diff --git a/migrations/1754109724.sh b/migrations/1754109724.sh new file mode 100644 index 0000000..cdb9fe4 --- /dev/null +++ b/migrations/1754109724.sh @@ -0,0 +1,7 @@ +echo "Add hyprsunset blue light filter" +if ! command -v hyprsunset &>/dev/null; then + yay -S --noconfirm --needed hyprsunset +fi +cp -r ~/.local/share/omarchy/config/hypr/hyprsunset.conf ~/.config/hypr/ +pkill hyprsunset +setsid uwsm app -- hyprsunset &>/dev/null & \ No newline at end of file From 8de2566fa4e4eaa538cbfb48a2af3d7c2b453a89 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:33:34 +0200 Subject: [PATCH 11/35] Extract omarchy-restart-app --- bin/omarchy-restart-app | 4 ++++ bin/omarchy-restart-hypridle | 3 +-- bin/omarchy-restart-waybar | 3 +-- bin/omarchy-restart-xcompose | 3 +-- 4 files changed, 7 insertions(+), 6 deletions(-) create mode 100755 bin/omarchy-restart-app diff --git a/bin/omarchy-restart-app b/bin/omarchy-restart-app new file mode 100755 index 0000000..db37c2d --- /dev/null +++ b/bin/omarchy-restart-app @@ -0,0 +1,4 @@ +#!/bin/bash + +pkill -x $1 +uwsm app -- $1 >/dev/null 2>&1 & diff --git a/bin/omarchy-restart-hypridle b/bin/omarchy-restart-hypridle index 9342030..261f0aa 100755 --- a/bin/omarchy-restart-hypridle +++ b/bin/omarchy-restart-hypridle @@ -1,4 +1,3 @@ #!/bin/bash -pkill -x hypridle -uwsm app -- hypridle >/dev/null 2>&1 & +omarchy-restart-app hypridle diff --git a/bin/omarchy-restart-waybar b/bin/omarchy-restart-waybar index 8d113bd..53b570e 100755 --- a/bin/omarchy-restart-waybar +++ b/bin/omarchy-restart-waybar @@ -1,4 +1,3 @@ #!/bin/bash -killall waybar || true -setsid uwsm app -- waybar &>/dev/null & +omarchy-restart-app waybar diff --git a/bin/omarchy-restart-xcompose b/bin/omarchy-restart-xcompose index a1b6cb4..45f7d9a 100755 --- a/bin/omarchy-restart-xcompose +++ b/bin/omarchy-restart-xcompose @@ -1,4 +1,3 @@ #!/bin/bash -pkill fcitx5 -uwsm app -- fcitx5 >/dev/null 2>&1 & +omarchy-restart-app fcitx5 From e1f697f91444a8faaf5b3bdf8ba2802013167dec Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:34:50 +0200 Subject: [PATCH 12/35] Use restart bin extraction --- bin/omarchy-refresh-swayosd | 4 +--- bin/omarchy-restart-swayosd | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100755 bin/omarchy-restart-swayosd diff --git a/bin/omarchy-refresh-swayosd b/bin/omarchy-refresh-swayosd index c2c4999..0dd7f0d 100755 --- a/bin/omarchy-refresh-swayosd +++ b/bin/omarchy-refresh-swayosd @@ -2,6 +2,4 @@ omarchy-refresh-config swayosd/config.toml omarchy-refresh-config swayosd/style.css - -pkill swayosd-server -setsid uwsm app -- swayosd-server &>/dev/null & +omarchy-restart-swayosd diff --git a/bin/omarchy-restart-swayosd b/bin/omarchy-restart-swayosd new file mode 100755 index 0000000..b155bc2 --- /dev/null +++ b/bin/omarchy-restart-swayosd @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app swayosd-server From c35311676c0fde3eab23db1fed7dd8b1ad170f6b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:44:45 +0200 Subject: [PATCH 13/35] Extract function --- bin/omarchy-toggle-nightlight | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight index 5894686..45996c5 100755 --- a/bin/omarchy-toggle-nightlight +++ b/bin/omarchy-toggle-nightlight @@ -7,16 +7,19 @@ OFF_TEMP=6500 # Query the current temperature CURRENT_TEMP=$(hyprctl hyprsunset temperature 2>/dev/null | grep -oE '[0-9]+') +restart_nightlighted_waybar() { + if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then + omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset + fi +} + if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then hyprctl hyprsunset temperature $ON_TEMP notify-send " Nightlight On" - if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then - omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset - fi + restart_nightlighted_waybar else hyprctl hyprsunset temperature $OFF_TEMP notify-send " Nightlight Off" - if grep -q "custom/nightlight" ~/.config/waybar/config.jsonc; then - omarchy-restart-waybar # restart waybar in case user has waybar module for hyprsunset - fi -fi \ No newline at end of file + restart_nightlighted_waybar +fi + From 65ba23d0bbc063495ba2d1599ce2fe36a0865a1a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:45:39 +0200 Subject: [PATCH 14/35] Extract omarchy-refresh-hyprsunset --- bin/omarchy-refresh-hyprsunset | 4 ++++ migrations/1754109724.sh | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100755 bin/omarchy-refresh-hyprsunset diff --git a/bin/omarchy-refresh-hyprsunset b/bin/omarchy-refresh-hyprsunset new file mode 100755 index 0000000..d30260d --- /dev/null +++ b/bin/omarchy-refresh-hyprsunset @@ -0,0 +1,4 @@ +#!/bin/bash + +omarchy-refresh-config hypr/hyprsunset.conf +omarchy-restart-app hyprsunset diff --git a/migrations/1754109724.sh b/migrations/1754109724.sh index cdb9fe4..6c0e984 100644 --- a/migrations/1754109724.sh +++ b/migrations/1754109724.sh @@ -1,7 +1,6 @@ echo "Add hyprsunset blue light filter" if ! command -v hyprsunset &>/dev/null; then - yay -S --noconfirm --needed hyprsunset + yay -S --noconfirm --needed hyprsunset + omarchy-refresh-hyprsunset fi -cp -r ~/.local/share/omarchy/config/hypr/hyprsunset.conf ~/.config/hypr/ -pkill hyprsunset -setsid uwsm app -- hyprsunset &>/dev/null & \ No newline at end of file + From fe1f6d4c3adfa6bc925ea7f4f3f62aefc5df6e85 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:49:38 +0200 Subject: [PATCH 15/35] Just be consistent --- bin/omarchy-refresh-hyprsunset | 2 +- bin/omarchy-restart-hyprsunset | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100755 bin/omarchy-restart-hyprsunset diff --git a/bin/omarchy-refresh-hyprsunset b/bin/omarchy-refresh-hyprsunset index d30260d..ca2ab1a 100755 --- a/bin/omarchy-refresh-hyprsunset +++ b/bin/omarchy-refresh-hyprsunset @@ -1,4 +1,4 @@ #!/bin/bash omarchy-refresh-config hypr/hyprsunset.conf -omarchy-restart-app hyprsunset +omarchy-restart-hyprsunset diff --git a/bin/omarchy-restart-hyprsunset b/bin/omarchy-restart-hyprsunset new file mode 100755 index 0000000..0e681bf --- /dev/null +++ b/bin/omarchy-restart-hyprsunset @@ -0,0 +1,3 @@ +#!/bin/bash + +omarchy-restart-app hyprsunset From 8ed29e6ce1e11b607a0cc831d254f5fcf6afc3d6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 11:02:14 +0200 Subject: [PATCH 16/35] Change wording --- bin/omarchy-toggle-nightlight | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/omarchy-toggle-nightlight b/bin/omarchy-toggle-nightlight index 45996c5..e2371e1 100755 --- a/bin/omarchy-toggle-nightlight +++ b/bin/omarchy-toggle-nightlight @@ -15,11 +15,11 @@ restart_nightlighted_waybar() { if [[ "$CURRENT_TEMP" == "$OFF_TEMP" ]]; then hyprctl hyprsunset temperature $ON_TEMP - notify-send " Nightlight On" + notify-send " Nightlight screen temperature" restart_nightlighted_waybar else hyprctl hyprsunset temperature $OFF_TEMP - notify-send " Nightlight Off" + notify-send " Daylight screen temperature" restart_nightlighted_waybar fi From 8f3647c5c5a324071ed07d21acbaf157d60324d2 Mon Sep 17 00:00:00 2001 From: Simon Dawson Date: Sun, 3 Aug 2025 10:11:29 +0100 Subject: [PATCH 17/35] Use dynamic bindings list in `omarchy-menu-keybindings` (#300) * fix: Use dynamic bindings list in omarchy-menu-keybindings We can use `hyprctl binds` to get a dynamic list of the currently-set key bindings. This allows for a custom user configuration that is split into arbitrary config files, and which makes use of `unbind` to remove default Omarchy key bindings. * chore: Support optional description for key bindings If the description is present, use it in the key bindings menu, instead of displaying some version of the dispatched command. * chore: Add some key binding description strings --- bin/omarchy-menu-keybindings | 98 +++++++++++++++++----------- config/hypr/hyprland.conf | 38 +++++------ default/hypr/bindings.conf | 20 +++--- default/hypr/bindings/media.conf | 20 +++--- default/hypr/bindings/tiling.conf | 61 +++++++++-------- default/hypr/bindings/utilities.conf | 26 ++++---- 6 files changed, 142 insertions(+), 121 deletions(-) diff --git a/bin/omarchy-menu-keybindings b/bin/omarchy-menu-keybindings index 622bcff..a851871 100755 --- a/bin/omarchy-menu-keybindings +++ b/bin/omarchy-menu-keybindings @@ -3,34 +3,47 @@ # A script to display Hyprland keybindings defined in your configuration # using walker for an interactive search menu. -USER_HYPRLAND_CONF="$HOME/.config/hypr/hyprland.conf" -OMARCHY_BINDINGS_CONF="$HOME/.local/share/omarchy/default/hypr/bindings.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/tiling.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/utilities.conf \ -$HOME/.local/share/omarchy/default/hypr/bindings/media.conf" +# Fetch dynamic keybindings from Hyprland +# +# Also do some pre-processing: +# - Remove standard Omarchy bin path prefix +# - Remove uwsm prefix +# - Map numeric modifier key mask to a textual rendition +# - Output comma-separated values that the parser can understand +dynamic_bindings() { + hyprctl -j binds | \ + jq -r '.[] | {modmask, key, keycode, description, dispatcher, arg} | "\(.modmask),\(.key)@\(.keycode),\(.description),\(.dispatcher),\(.arg)"' | \ + sed -r \ + -e 's/null//' \ + -e 's,~/.local/share/omarchy/bin/,,' \ + -e 's,uwsm app -- ,,' \ + -e 's/@0//' \ + -e 's/,@/,code:/' \ + -e 's/^0,/,/' \ + -e 's/^1,/SHIFT,/' \ + -e 's/^4,/CTRL,/' \ + -e 's/^5,/SHIFT CTRL,/' \ + -e 's/^8,/ALT,/' \ + -e 's/^9,/SHIFT ALT,/' \ + -e 's/^12,/CTRL ALT,/' \ + -e 's/^13,/SHIFT CTRL ALT,/' \ + -e 's/^64,/SUPER,/' \ + -e 's/^65,/SUPER SHIFT,/' \ + -e 's/^68,/SUPER CTRL,/' \ + -e 's/^69,/SUPER SHIFT CTRL,/' \ + -e 's/^72,/SUPER ALT,/' +} -# Process the configuration file to extract and format keybindings -# 1. `grep` finds all lines starting with 'bind' (allowing for leading spaces). -# 2. The first `sed` removes comments (anything after a '#'). -# 3. `awk` does the heavy lifting of formatting the output. -# - It sets the field separator to a comma ','. -# - It removes the 'bind... =' part from the beginning of the line. -# - It joins the key combination (e.g., "SUPER + Q"). -# - It joins the command that the key executes. -# - It prints everything in a nicely aligned format. -# 4. The final `sed` cleans up any leftover commas from the end of lines. -grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF | - sed 's/#.*//' | - sed '/^[[:space:]]*$/d' | - sort -u | +# Parse and format keybindings +# +# `awk` does the heavy lifting: +# - Set the field separator to a comma ','. +# - Joins the key combination (e.g., "SUPER + Q"). +# - Joins the command that the key executes. +# - Prints everything in a nicely aligned format. +parse_bindings() { awk -F, ' { - # Strip trailing comments - sub(/#.*/, ""); - - # Remove the "bind... =" part and surrounding whitespace - sub(/^[[:space:]]*bind[^=]*=(\+[[:space:]])?(exec, )?[[:space:]]*/, "", $1); - # Combine the modifier and key (first two fields) key_combo = $1 " + " $2; @@ -38,27 +51,36 @@ grep -h '^[[:space:]]*bind' $USER_HYPRLAND_CONF $OMARCHY_BINDINGS_CONF | gsub(/^[ \t]*\+?[ \t]*/, "", key_combo); gsub(/[ \t]+$/, "", key_combo); - # Reconstruct the command from the remaining fields - action = ""; - for (i = 3; i <= NF; i++) { - action = action $i (i < NF ? "," : ""); - } + # Use description, if set + action = $3; - # Clean up trailing commas, remove leading "exec, ", and trim - sub(/,$/, "", action); - gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action); - gsub(/^[ \t]+|[ \t]+$/, "", action); - gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one + if (action == "") { + # Reconstruct the command from the remaining fields + for (i = 4; i <= NF; i++) { + action = action $i (i < NF ? "," : ""); + } + + # Clean up trailing commas, remove leading "exec, ", and trim + sub(/,$/, "", action); + gsub(/(^|,)[[:space:]]*exec[[:space:]]*,?/, "", action); + gsub(/^[ \t]+|[ \t]+$/, "", action); + gsub(/[ \t]+/, " ", key_combo); # Collapse multiple spaces to one - if (action != "") { # Escape XML entities gsub(/&/, "\\&", action); gsub(//, "\\>", action); gsub(/"/, "\\"", action); gsub(/'"'"'/, "\\'", action); - + } + + if (action != "") { printf "%-35s → %s\n", key_combo, action; } -}' | +}' +} + +dynamic_bindings | \ + sort -u | \ + parse_bindings | \ walker --dmenu --theme keybindings -p 'Keybindings' diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 4bd9e14..4363f61 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -23,26 +23,26 @@ $terminal = uwsm app -- alacritty $browser = uwsm app -- chromium --new-window --ozone-platform=wayland $webapp = $browser --app -bind = SUPER, return, exec, $terminal -bind = SUPER, F, exec, uwsm app -- nautilus --new-window -bind = SUPER, B, exec, $browser -bind = SUPER, M, exec, uwsm app -- spotify -bind = SUPER, N, exec, $terminal -e nvim -bind = SUPER, T, exec, $terminal -e btop -bind = SUPER, D, exec, $terminal -e lazydocker -bind = SUPER, G, exec, uwsm app -- signal-desktop -bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu -bind = SUPER, slash, exec, uwsm app -- 1password +bindd = SUPER, return, Terminal, exec, $terminal +bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window +bindd = SUPER, B, Web browser, exec, $browser +bindd = SUPER, M, Music player, exec, uwsm app -- spotify +bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER, T, Top, exec, $terminal -e btop +bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Signal messaging, exec, uwsm app -- signal-desktop +bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu +bindd = SUPER, slash, Password manager, exec, uwsm app -- 1password -bind = SUPER, A, exec, $webapp="https://chatgpt.com" -bind = SUPER SHIFT, A, exec, $webapp="https://grok.com" -bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/" -bind = SUPER, E, exec, $webapp="https://app.hey.com" -bind = SUPER, Y, exec, $webapp="https://youtube.com/" -bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/" -bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations" -bind = SUPER, X, exec, $webapp="https://x.com/" -bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post" +bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com" +bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com" +bindd = SUPER, C, Hey calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" +bindd = SUPER, E, Hey email, exec, $webapp="https://app.hey.com" +bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/" +bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/" +bindd = SUPER ALT, G, Google Messaging, exec, $webapp="https://messages.google.com/web/conversations" +bindd = SUPER, X, X/Twitter, exec, $webapp="https://x.com/" +bindd = SUPER SHIFT, X,X/Twitter compose, exec, $webapp="https://x.com/compose/post" # Extra autostart processes # exec-once = uwsm app -- my-service diff --git a/default/hypr/bindings.conf b/default/hypr/bindings.conf index 15bfb20..0f8e77e 100644 --- a/default/hypr/bindings.conf +++ b/default/hypr/bindings.conf @@ -1,15 +1,15 @@ # Deprecated bindings file. New installations include everything directly. -bind = SUPER, return, exec, $terminal -bind = SUPER, F, exec, $fileManager -bind = SUPER, B, exec, $browser -bind = SUPER, M, exec, $music -bind = SUPER, N, exec, $terminal -e nvim -bind = SUPER, T, exec, $terminal -e btop -bind = SUPER, D, exec, $terminal -e lazydocker -bind = SUPER, G, exec, $messenger -bind = SUPER, O, exec, obsidian -disable-gpu -bind = SUPER, slash, exec, $passwordManager +bindd = SUPER, return, Terminal, exec, $terminal +bindd = SUPER, F, File manager, exec, $fileManager +bindd = SUPER, B, Web browser, exec, $browser +bindd = SUPER, M, Music player, exec, $music +bindd = SUPER, N, Neovim, exec, $terminal -e nvim +bindd = SUPER, T, Top, exec, $terminal -e btop +bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Messenger, exec, $messenger +bindd = SUPER, O, Obsidian, exec, obsidian -disable-gpu +bindd = SUPER, slash, Pasword manager, exec, $passwordManager source = ~/.local/share/omarchy/default/hypr/bindings/media.conf source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf diff --git a/default/hypr/bindings/media.conf b/default/hypr/bindings/media.conf index eb86284..cb2c1f8 100644 --- a/default/hypr/bindings/media.conf +++ b/default/hypr/bindings/media.conf @@ -2,15 +2,15 @@ $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')" # Laptop multimedia keys for volume and LCD brightness (with OSD) -bindel = ,XF86AudioRaiseVolume, exec, $osdclient --output-volume raise -bindel = ,XF86AudioLowerVolume, exec, $osdclient --output-volume lower -bindel = ,XF86AudioMute, exec, $osdclient --output-volume mute-toggle -bindel = ,XF86AudioMicMute, exec, $osdclient --input-volume mute-toggle -bindel = ,XF86MonBrightnessUp, exec, $osdclient --brightness raise -bindel = ,XF86MonBrightnessDown, exec, $osdclient --brightness lower +bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise +bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower +bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle +bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle +bindeld = ,XF86MonBrightnessUp, Brightness up, exec, $osdclient --brightness raise +bindeld = ,XF86MonBrightnessDown, Brightness down, exec, $osdclient --brightness lower # Requires playerctl -bindl = , XF86AudioNext, exec, $osdclient --playerctl next -bindl = , XF86AudioPause, exec, $osdclient --playerctl play-pause -bindl = , XF86AudioPlay, exec, $osdclient --playerctl play-pause -bindl = , XF86AudioPrev, exec, $osdclient --playerctl previous +bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next +bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause +bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 2fb1e90..167b3e2 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -1,41 +1,41 @@ # Close window -bind = SUPER, W, killactive, +bindd = SUPER, W, Close active window, killactive, # Control tiling -bind = SUPER, J, togglesplit, # dwindle +bindd = SUPER, J, Toggle split, togglesplit, # dwindle bind = SUPER, P, pseudo, # dwindle -bind = SUPER, V, togglefloating, -bind = SHIFT, F11, fullscreen, 0 +bindd = SUPER, V, Toggle floating, togglefloating, +bindd = SHIFT, F11, Full screen, fullscreen, 0 # Move focus with mainMod + arrow keys -bind = SUPER, left, movefocus, l -bind = SUPER, right, movefocus, r -bind = SUPER, up, movefocus, u -bind = SUPER, down, movefocus, d +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 # Switch workspaces with mainMod + [0-9] -bind = SUPER, code:10, workspace, 1 -bind = SUPER, code:11, workspace, 2 -bind = SUPER, code:12, workspace, 3 -bind = SUPER, code:13, workspace, 4 -bind = SUPER, code:14, workspace, 5 -bind = SUPER, code:15, workspace, 6 -bind = SUPER, code:16, workspace, 7 -bind = SUPER, code:17, workspace, 8 -bind = SUPER, code:18, workspace, 9 -bind = SUPER, code:19, workspace, 10 +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 +bindd = SUPER, code:13, Switch to workspace 4, workspace, 4 +bindd = SUPER, code:14, Switch to workspace 5, workspace, 5 +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 mainMod + SHIFT + [0-9] -bind = SUPER SHIFT, code:10, movetoworkspace, 1 -bind = SUPER SHIFT, code:11, movetoworkspace, 2 -bind = SUPER SHIFT, code:12, movetoworkspace, 3 -bind = SUPER SHIFT, code:13, movetoworkspace, 4 -bind = SUPER SHIFT, code:14, movetoworkspace, 5 -bind = SUPER SHIFT, code:15, movetoworkspace, 6 -bind = SUPER SHIFT, code:16, movetoworkspace, 7 -bind = SUPER SHIFT, code:17, movetoworkspace, 8 -bind = SUPER SHIFT, code:18, movetoworkspace, 9 -bind = SUPER SHIFT, code:19, movetoworkspace, 10 +bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1 +bindd = SUPER SHIFT, code:11, Move window to workspace 1, movetoworkspace, 2 +bindd = SUPER SHIFT, code:12, Move window to workspace 1, movetoworkspace, 3 +bindd = SUPER SHIFT, code:13, Move window to workspace 1, movetoworkspace, 4 +bindd = SUPER SHIFT, code:14, Move window to workspace 1, movetoworkspace, 5 +bindd = SUPER SHIFT, code:15, Move window to workspace 1, movetoworkspace, 6 +bindd = SUPER SHIFT, code:16, Move window to workspace 1, movetoworkspace, 7 +bindd = SUPER SHIFT, code:17, Move window to workspace 1, movetoworkspace, 8 +bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9 +bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10 # Swap active window with the one next to it with mainMod + SHIFT + arrow keys bind = SUPER SHIFT, left, swapwindow, l @@ -58,6 +58,5 @@ bind = SUPER, mouse_down, workspace, e+1 bind = SUPER, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging -bindm = SUPER, mouse:272, movewindow -bindm = SUPER, mouse:273, resizewindow - +bindmd = SUPER, mouse:272, Move window, movewindow +bindmd = SUPER, mouse:273, Resize window, resizewindow diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 073f2b3..6686670 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -1,6 +1,6 @@ # Launching bind = SUPER, space, exec, walker -bind = SUPER, K, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings +bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings # Aesthetics bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar @@ -13,7 +13,7 @@ bind = SUPER SHIFT, comma, exec, makoctl dismiss --all bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" # Power menu controls lock, suspend, relaunch, restart, shutdown -bind = SUPER, ESCAPE, exec, ~/.local/share/omarchy/bin/omarchy-menu-power +bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu-power # Toggle idling bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle @@ -22,21 +22,21 @@ bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle bind = SUPER CTRL, N, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight # Control Apple Display brightness -bind = CTRL, F1, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 -bind = CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 -bind = SHIFT CTRL, F2, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 +bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 +bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +5000 +bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 # Screenshots -bind = , PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot -bind = SHIFT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window -bind = CTRL, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output +bindd = , PRINT, Take screenshot, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot +bindd = SHIFT, PRINT, Take screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window +bindd = CTRL, PRINT, Take screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output -# Screenshots -bind = ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord -bind = CTRL ALT, PRINT, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output +# Screen recordings +bindd = ALT, PRINT, Screen recording, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord +bindd = CTRL ALT, PRINT, Screen recording of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output # Screensaver -bind = SUPER ALT, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver +bindd = SUPER ALT, SPACE, Screensaver, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver # Color picker -bind = SUPER, PRINT, exec, hyprpicker -a +bindd = SUPER, PRINT, Color picker, exec, hyprpicker -a From 933d18fce34ab24553e257f9cb0dd3e95218636a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 11:48:53 +0200 Subject: [PATCH 18/35] Expand bind descriptions --- config/hypr/hyprland.conf | 22 +++++++++++----------- default/hypr/bindings/tiling.conf | 26 +++++++++++++------------- default/hypr/bindings/utilities.conf | 26 +++++++++++++------------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 4363f61..619ecaa 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -25,24 +25,24 @@ $webapp = $browser --app bindd = SUPER, return, Terminal, exec, $terminal bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window -bindd = SUPER, B, Web browser, exec, $browser -bindd = SUPER, M, Music player, exec, uwsm app -- spotify +bindd = SUPER, B, Browser, exec, $browser +bindd = SUPER, M, Music, exec, uwsm app -- spotify bindd = SUPER, N, Neovim, exec, $terminal -e nvim -bindd = SUPER, T, Top, exec, $terminal -e btop -bindd = SUPER, D, Lazy Docker, exec, $terminal -e lazydocker -bindd = SUPER, G, Signal messaging, exec, uwsm app -- signal-desktop +bindd = SUPER, T, Activity, exec, $terminal -e btop +bindd = SUPER, D, Docker, exec, $terminal -e lazydocker +bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu -bindd = SUPER, slash, Password manager, exec, uwsm app -- 1password +bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password bindd = SUPER, A, ChatGPT, exec, $webapp="https://chatgpt.com" bindd = SUPER SHIFT, A, Grok, exec, $webapp="https://grok.com" -bindd = SUPER, C, Hey calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" -bindd = SUPER, E, Hey email, exec, $webapp="https://app.hey.com" +bindd = SUPER, C, Calendar, exec, $webapp="https://app.hey.com/calendar/weeks/" +bindd = SUPER, E, Email, exec, $webapp="https://app.hey.com" bindd = SUPER, Y, YouTube, exec, $webapp="https://youtube.com/" bindd = SUPER SHIFT, G, WhatsApp, exec, $webapp="https://web.whatsapp.com/" -bindd = SUPER ALT, G, Google Messaging, exec, $webapp="https://messages.google.com/web/conversations" -bindd = SUPER, X, X/Twitter, exec, $webapp="https://x.com/" -bindd = SUPER SHIFT, X,X/Twitter compose, exec, $webapp="https://x.com/compose/post" +bindd = SUPER ALT, G, Google Messages, exec, $webapp="https://messages.google.com/web/conversations" +bindd = SUPER, X, X, exec, $webapp="https://x.com/" +bindd = SUPER SHIFT, X, X Post, exec, $webapp="https://x.com/compose/post" # Extra autostart processes # exec-once = uwsm app -- my-service diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 167b3e2..29b5473 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -3,7 +3,7 @@ bindd = SUPER, W, Close active window, killactive, # Control tiling bindd = SUPER, J, Toggle split, togglesplit, # dwindle -bind = SUPER, P, pseudo, # dwindle +bindd = SUPER, P, Pseudo window, pseudo, # dwindle bindd = SUPER, V, Toggle floating, togglefloating, bindd = SHIFT, F11, Full screen, fullscreen, 0 @@ -38,24 +38,24 @@ bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9 bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10 # Swap active window with the one next to it with mainMod + SHIFT + arrow keys -bind = SUPER SHIFT, left, swapwindow, l -bind = SUPER SHIFT, right, swapwindow, r -bind = SUPER SHIFT, up, swapwindow, u -bind = SUPER SHIFT, down, swapwindow, d +bindd = SUPER SHIFT, Swap window to the left, left, swapwindow, l +bindd = SUPER SHIFT, Swap window to the right, right, swapwindow, r +bindd = SUPER SHIFT, Swap window up, up, swapwindow, u +bindd = SUPER SHIFT, Swap window down, down, swapwindow, d # Cycle through applications on active workspace -bind = ALT, Tab, cyclenext -bind = ALT, Tab, bringactivetotop +bindd = ALT, Tab, Cycle to next window, cyclenext +bindd = ALT, Tab, Reveal active window on top, bringactivetotop # Resize active window -bind = SUPER, minus, resizeactive, -100 0 -bind = SUPER, equal, resizeactive, 100 0 -bind = SUPER SHIFT, minus, resizeactive, 0 -100 -bind = SUPER SHIFT, equal, resizeactive, 0 100 +bindd = SUPER, minus, Expand window left, resizeactive, -100 0 +bindd = SUPER, equal, Shrink window left, resizeactive, 100 0 +bindd = SUPER SHIFT, minus, Shrink window up, resizeactive, 0 -100 +bindd = SUPER SHIFT, equal, Expand window down, resizeactive, 0 100 # Scroll through existing workspaces with mainMod + scroll -bind = SUPER, mouse_down, workspace, e+1 -bind = SUPER, mouse_up, workspace, e-1 +bindd = SUPER, mouse_down, Scroll active worspace forward, workspace, e+1 +bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindmd = SUPER, mouse:272, Move window, movewindow diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 6686670..7cce88a 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -1,22 +1,22 @@ # Launching -bind = SUPER, space, exec, walker +bindd = SUPER, space, Launch apps, exec, walker bindd = SUPER, K, Show key bindings, exec, ~/.local/share/omarchy/bin/omarchy-menu-keybindings # Aesthetics -bind = SUPER SHIFT, SPACE, exec, pkill -SIGUSR1 waybar -bind = SUPER CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next -bind = SUPER SHIFT CTRL, SPACE, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu +bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, pkill -SIGUSR1 waybar +bindd = SUPER CTRL, SPACE, Next background in theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-bg-next +bindd = SUPER SHIFT CTRL, SPACE, Pick new theme, exec, ~/.local/share/omarchy/bin/omarchy-theme-menu # Notifications -bind = SUPER, comma, exec, makoctl dismiss -bind = SUPER SHIFT, comma, exec, makoctl dismiss --all -bind = SUPER CTRL, comma, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" +bindd = SUPER, comma, Dismiss last notification, exec, makoctl dismiss +bindd = SUPER SHIFT, comma, Dismiss all notifications, exec, makoctl dismiss --all +bindd = SUPER CTRL, comma, Toggle silencing notifications, exec, makoctl mode -t do-not-disturb && makoctl mode | grep -q 'do-not-disturb' && notify-send "Silenced notifications" || notify-send "Enabled notifications" # Power menu controls lock, suspend, relaunch, restart, shutdown bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu-power # Toggle idling -bind = SUPER CTRL, I, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle +bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle # Toggle nightlight bind = SUPER CTRL, N, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight @@ -27,13 +27,13 @@ bindd = CTRL, F2, Apple Display brightness up, exec, ~/.local/share/omarchy/bin/ bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness +60000 # Screenshots -bindd = , PRINT, Take screenshot, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot -bindd = SHIFT, PRINT, Take screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window -bindd = CTRL, PRINT, Take screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output +bindd = , PRINT, Screenshot of region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot +bindd = SHIFT, PRINT, Screenshot of window, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot window +bindd = CTRL, PRINT, Screenshot of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenshot output # Screen recordings -bindd = ALT, PRINT, Screen recording, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord -bindd = CTRL ALT, PRINT, Screen recording of display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output +bindd = ALT, PRINT, Screen record a region, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord +bindd = CTRL ALT, PRINT, Screen record display, exec, ~/.local/share/omarchy/bin/omarchy-cmd-screenrecord output # Screensaver bindd = SUPER ALT, SPACE, Screensaver, exec, ~/.local/share/omarchy/bin/omarchy-launch-screensaver From 9a09d45d6b44f58bf7954441690c11d495df18bb Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 11:50:31 +0200 Subject: [PATCH 19/35] Increase Walker list max entries to 200 to accomodate all hotkeys --- config/walker/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/walker/config.toml b/config/walker/config.toml index 9fe4c8b..ff6708f 100644 --- a/config/walker/config.toml +++ b/config/walker/config.toml @@ -42,7 +42,7 @@ on_query_change = "" [list] dynamic_sub = true keyboard_scroll_style = "emacs" -max_entries = 50 +max_entries = 200 show_initial_entries = true single_click = true visibility_threshold = 20 From 81aeee437c68f2b415c0604cdbc29d14e4ddb5e5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 12:03:59 +0200 Subject: [PATCH 20/35] A few more binding description tweaks --- default/hypr/bindings/tiling.conf | 10 +++++----- default/hypr/bindings/utilities.conf | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/default/hypr/bindings/tiling.conf b/default/hypr/bindings/tiling.conf index 29b5473..611dbcf 100644 --- a/default/hypr/bindings/tiling.conf +++ b/default/hypr/bindings/tiling.conf @@ -5,7 +5,7 @@ bindd = SUPER, W, Close active window, killactive, bindd = SUPER, J, Toggle split, togglesplit, # dwindle bindd = SUPER, P, Pseudo window, pseudo, # dwindle bindd = SUPER, V, Toggle floating, togglefloating, -bindd = SHIFT, F11, Full screen, fullscreen, 0 +bindd = SHIFT, F11, Force full screen, fullscreen, 0 # Move focus with mainMod + arrow keys bindd = SUPER, left, Move focus left, movefocus, l @@ -38,10 +38,10 @@ bindd = SUPER SHIFT, code:18, Move window to workspace 1, movetoworkspace, 9 bindd = SUPER SHIFT, code:19, Move window to workspace 1, movetoworkspace, 10 # Swap active window with the one next to it with mainMod + SHIFT + arrow keys -bindd = SUPER SHIFT, Swap window to the left, left, swapwindow, l -bindd = SUPER SHIFT, Swap window to the right, right, swapwindow, r -bindd = SUPER SHIFT, Swap window up, up, swapwindow, u -bindd = SUPER SHIFT, Swap window down, down, swapwindow, d +bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l +bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r +bindd = SUPER SHIFT, up, Swap window up, swapwindow, u +bindd = SUPER SHIFT, down, Swap window down, swapwindow, d # Cycle through applications on active workspace bindd = ALT, Tab, Cycle to next window, cyclenext diff --git a/default/hypr/bindings/utilities.conf b/default/hypr/bindings/utilities.conf index 7cce88a..50f3cc1 100644 --- a/default/hypr/bindings/utilities.conf +++ b/default/hypr/bindings/utilities.conf @@ -19,7 +19,7 @@ bindd = SUPER, ESCAPE, Power menu, exec, ~/.local/share/omarchy/bin/omarchy-menu bindd = SUPER CTRL, I, Toggle locking on idle, exec, ~/.local/share/omarchy/bin/omarchy-toggle-idle # Toggle nightlight -bind = SUPER CTRL, N, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight +bindd = SUPER CTRL, N, Toggle nightlight, exec, ~/.local/share/omarchy/bin/omarchy-toggle-nightlight # Control Apple Display brightness bindd = CTRL, F1, Apple Display brightness down, exec, ~/.local/share/omarchy/bin/omarchy-cmd-apple-display-brightness -5000 From 4c650e53debb95d8f99332a58c07dc6e09d819c9 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 12:05:33 +0200 Subject: [PATCH 21/35] Migration to refresh walker to show all keybindings --- migrations/1754215439.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 migrations/1754215439.sh diff --git a/migrations/1754215439.sh b/migrations/1754215439.sh new file mode 100644 index 0000000..90651bb --- /dev/null +++ b/migrations/1754215439.sh @@ -0,0 +1,5 @@ +echo "Update app launcher config to allow enough entries to show all keybindings on SUPER+K" + +if ! grep "max_entries = 200" ~/.config/walker/config.toml; then + omarchy-refresh-walker +fi From e7f086370de72f7e40c7dfbada0efeead8548735 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Sun, 3 Aug 2025 06:07:54 -0400 Subject: [PATCH 22/35] Make repo configurable (#139) --- boot.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/boot.sh b/boot.sh index 9a79afc..9005487 100755 --- a/boot.sh +++ b/boot.sh @@ -16,9 +16,12 @@ echo -e "\n$ansi_art\n" sudo pacman -Sy --noconfirm --needed git -echo -e "\nCloning Omarchy..." +# Use custom repo if specified, otherwise default to basecamp/omarchy +OMARCHY_REPO="${OMARCHY_REPO:-basecamp/omarchy}" + +echo -e "\nCloning Omarchy from: https://github.com/${OMARCHY_REPO}.git" rm -rf ~/.local/share/omarchy/ -git clone https://github.com/basecamp/omarchy.git ~/.local/share/omarchy >/dev/null +git clone "https://github.com/${OMARCHY_REPO}.git" ~/.local/share/omarchy >/dev/null # Use custom branch if instructed if [[ -n "$OMARCHY_REF" ]]; then From 4b027a9242b0e8be7267d7a04076bd830ff901fe Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 06:47:05 -0400 Subject: [PATCH 23/35] Move out of conditional in case user has already installed hyprsunset --- migrations/1754109724.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migrations/1754109724.sh b/migrations/1754109724.sh index 6c0e984..b8ff909 100644 --- a/migrations/1754109724.sh +++ b/migrations/1754109724.sh @@ -1,6 +1,6 @@ echo "Add hyprsunset blue light filter" if ! command -v hyprsunset &>/dev/null; then yay -S --noconfirm --needed hyprsunset - omarchy-refresh-hyprsunset fi +omarchy-refresh-hyprsunset From 2278b400ddb383c1d6dfb7d8e8ee12bdce066a6d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 13:07:20 +0200 Subject: [PATCH 24/35] Enable auto-discovery of network printers Co-authored-by: @rockorager --- install/desktop/printer.sh | 14 +++++++++++++- migrations/1754215533.sh | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 migrations/1754215533.sh diff --git a/install/desktop/printer.sh b/install/desktop/printer.sh index 17b2d31..930eea1 100644 --- a/install/desktop/printer.sh +++ b/install/desktop/printer.sh @@ -1,4 +1,16 @@ #!/bin/bash -sudo pacman -S --noconfirm cups cups-pdf cups-filters system-config-printer +sudo pacman -S --noconfirm cups cups-pdf cups-filters cups-browsed system-config-printer avahi nss-mdns sudo systemctl enable --now cups.service + +# Disable multicast dns in resolved. Avahi will provide this for better network printer discovery +sudo mkdir -p /etc/systemd/resolved.conf.d +echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf +sudo systemctl enable --now avahi-daemon.service + +# Enable automatically adding remote printers +if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then + echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf +fi + +sudo systemctl enable --now cups-browsed.service diff --git a/migrations/1754215533.sh b/migrations/1754215533.sh new file mode 100644 index 0000000..05a0774 --- /dev/null +++ b/migrations/1754215533.sh @@ -0,0 +1,17 @@ +echo "Enable auto-discovery of network printers" + +if [[ ! -f /etc/systemd/resolved.conf.d/10-disable-multicast.conf ]]; then + sudo pacman -S --noconfirm avahi nss-mdns + + # Disable multicast dns in resolved. Avahi will provide this for better network printer discovery + sudo mkdir -p /etc/systemd/resolved.conf.d + echo "[Resolve]\nMulticastDNS=no" | sudo tee /etc/systemd/resolved.conf.d/10-disable-multicast.conf + sudo systemctl enable --now avahi-daemon.service +fi + +if ! grep -q '^CreateRemotePrinters Yes' /etc/cups/cups-browsed.conf; then + sudo pacman -S --noconfirm cups-browsed + # Enable automatically adding remote printers + echo 'CreateRemotePrinters Yes' | sudo tee -a /etc/cups/cups-browsed.conf + sudo systemctl enable --now cups-browsed.service +fi From 5344885176bff675c20c6f6580dfffce01773666 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 13:10:29 +0200 Subject: [PATCH 25/35] Its enough that its included in the Omarchy TUI --- install/apps/webapps.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/install/apps/webapps.sh b/install/apps/webapps.sh index 6f5c444..8059419 100644 --- a/install/apps/webapps.sh +++ b/install/apps/webapps.sh @@ -12,5 +12,4 @@ if [ -z "$OMARCHY_BARE" ]; then web2app "YouTube" https://youtube.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png web2app "GitHub" https://github.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/github-light.png web2app "X" https://x.com/ https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/x-light.png - web2app "Omarchy Manual" https://manuals.omamix.org/2/the-omarchy-manual https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/arch-linux.png fi From fb05e59bf6ebfb7693524a960b7176a48c905183 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 13:47:26 +0200 Subject: [PATCH 26/35] Extract app-specific tweaks into their own files --- default/hypr/apps.conf | 7 +++++++ default/hypr/apps/chromium.conf | 6 ++++++ default/hypr/apps/hyprshot.conf | 2 ++ default/hypr/apps/retroarch.conf | 3 +++ default/hypr/apps/steam.conf | 4 ++++ default/hypr/apps/system.conf | 16 ++++++++++++++++ default/hypr/apps/walker.conf | 2 ++ default/hypr/looknfeel.conf | 6 ------ default/hypr/windows.conf | 31 ++++--------------------------- 9 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 default/hypr/apps.conf create mode 100644 default/hypr/apps/chromium.conf create mode 100644 default/hypr/apps/hyprshot.conf create mode 100644 default/hypr/apps/retroarch.conf create mode 100644 default/hypr/apps/steam.conf create mode 100644 default/hypr/apps/system.conf create mode 100644 default/hypr/apps/walker.conf diff --git a/default/hypr/apps.conf b/default/hypr/apps.conf new file mode 100644 index 0000000..48c0edf --- /dev/null +++ b/default/hypr/apps.conf @@ -0,0 +1,7 @@ +# App-specific tweaks +source = ~/.local/share/omarchy/default/hypr/apps/chromium.conf +source = ~/.local/share/omarchy/default/hypr/apps/hyprshot.conf +source = ~/.local/share/omarchy/default/hypr/apps/retroarch.conf +source = ~/.local/share/omarchy/default/hypr/apps/steam.conf +source = ~/.local/share/omarchy/default/hypr/apps/system.conf +source = ~/.local/share/omarchy/default/hypr/apps/walker.conf diff --git a/default/hypr/apps/chromium.conf b/default/hypr/apps/chromium.conf new file mode 100644 index 0000000..af69071 --- /dev/null +++ b/default/hypr/apps/chromium.conf @@ -0,0 +1,6 @@ +# Force chromium into a tile to deal with --app bug +windowrule = tile, class:^(Chromium)$ + +# Only slight opacity when unfocused +windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ +windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube diff --git a/default/hypr/apps/hyprshot.conf b/default/hypr/apps/hyprshot.conf new file mode 100644 index 0000000..c900320 --- /dev/null +++ b/default/hypr/apps/hyprshot.conf @@ -0,0 +1,2 @@ +# Remove 1px border around hyprshot screenshots +layerrule = noanim, selection diff --git a/default/hypr/apps/retroarch.conf b/default/hypr/apps/retroarch.conf new file mode 100644 index 0000000..2c019de --- /dev/null +++ b/default/hypr/apps/retroarch.conf @@ -0,0 +1,3 @@ +windowrule = fullscreen, class:com.libretro.RetroArch +windowrule = opacity 1 1, class:com.libretro.RetroArch + diff --git a/default/hypr/apps/steam.conf b/default/hypr/apps/steam.conf new file mode 100644 index 0000000..be76209 --- /dev/null +++ b/default/hypr/apps/steam.conf @@ -0,0 +1,4 @@ +# Float Steam, fullscreen RetroArch +windowrule = float, class:steam +windowrule = center, class:steam, title:Steam +windowrule = opacity 1 1, class:steam diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf new file mode 100644 index 0000000..9f3af5f --- /dev/null +++ b/default/hypr/apps/system.conf @@ -0,0 +1,16 @@ +# Float and center settings and previews +windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ +windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ +windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$ +windowrule = size 600 470, class:Omarchy +windowrule = size 700 470 class:About + +# Float and center file pickers +windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) +windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) + +# Fullscreen screensaver +windowrule = fullscreen, class:Screensaver + +# No transparency on media windows +windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ diff --git a/default/hypr/apps/walker.conf b/default/hypr/apps/walker.conf new file mode 100644 index 0000000..9681c09 --- /dev/null +++ b/default/hypr/apps/walker.conf @@ -0,0 +1,2 @@ +# Application-sepcific animation +layerrule = noanim, walker diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index 124acc5..d73f677 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -69,12 +69,6 @@ animations { animation = workspaces, 0, 0, ease } -# Application-sepcific animation -layerrule = noanim,walker - -# Remove 1px border around hyprshot screenshots -layerrule = noanim, selection - # Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ # "Smart gaps" / "No gaps when only" # uncomment all if you wish to use that. diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index c9d6992..bc665b2 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -1,34 +1,11 @@ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrule = suppressevent maximize, class:.* -# Force chromium into a tile to deal with --app bug -windowrule = tile, class:^(Chromium)$ - -# Float and center settings and previews -windowrule = float, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = center, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|Omarchy|About)$ -windowrule = size 800 600, class:^(blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty)$ -windowrule = size 600 470, class:Omarchy -windowrule = size 700 470 class:About - -# Float and center file pickers -windowrule = float, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) -windowrule = center, class:xdg-desktop-portal-gtk, title:^(Open.*Files?|Save.*Files?|All Files|Save) - -# Float Steam, fullscreen RetroArch -windowrule = float, class:steam -windowrule = center, class:steam, title:Steam -windowrule = fullscreen, class:^(com.libretro.RetroArch)$ - -# Fullscreen screensaver -windowrule = fullscreen, class:Screensaver - -# Just dash of opacity +# Just dash of opacity by default windowrule = opacity 0.97 0.9, class:.* -windowrule = opacity 1 0.97, class:^(Chromium|chromium|google-chrome|google-chrome-unstable)$ -windowrule = opacity 1 1, initialTitle:^(youtube.com_/)$ # Youtube -windowrule = opacity 1 1, class:^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ -windowrule = opacity 1 1, class:^(com.libretro.RetroArch|steam)$ # Fix some dragging issues with XWayland windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 + +# App-specific tweaks +source = ~/.local/share/omarchy/default/hypr/apps.conf From c78133251a5bfcf11914cb0ab94915221f11ab57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Br=C3=BCggemann?= Date: Sun, 3 Aug 2025 13:52:47 +0200 Subject: [PATCH 27/35] feat: add gvfs-mtp (#466) To view the contents of an Android device's storage via MTP in nautilus, we need the corresponding plugin. --- install/desktop/desktop.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/desktop/desktop.sh b/install/desktop/desktop.sh index 0b2b320..626b6c2 100644 --- a/install/desktop/desktop.sh +++ b/install/desktop/desktop.sh @@ -3,7 +3,7 @@ yay -S --noconfirm --needed \ brightnessctl playerctl pamixer wiremix wireplumber \ fcitx5 fcitx5-gtk fcitx5-qt wl-clip-persist \ - nautilus sushi ffmpegthumbnailer \ + nautilus sushi ffmpegthumbnailer gvfs-mtp \ slurp satty \ mpv evince imv \ chromium From 1dc8379533bf67288606e0a7557868b5a4a4de27 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 13:54:20 +0200 Subject: [PATCH 28/35] Add migration for gvfs-mtp --- migrations/1754221967.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 migrations/1754221967.sh diff --git a/migrations/1754221967.sh b/migrations/1754221967.sh new file mode 100644 index 0000000..8225c6d --- /dev/null +++ b/migrations/1754221967.sh @@ -0,0 +1,2 @@ +echo "Add support for accessing Android phone data via file manager" +yay -S --noconfirm --needed gvfs-mtp From cb08f4ccd28e7064d413497ec2f86198b6aa410d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 14:02:57 +0200 Subject: [PATCH 29/35] Extend time for battery warning to 30 seconds Make it harder to miss. Closes #392. --- bin/omarchy-battery-monitor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-battery-monitor b/bin/omarchy-battery-monitor index 6ac71cb..05f4a44 100755 --- a/bin/omarchy-battery-monitor +++ b/bin/omarchy-battery-monitor @@ -14,7 +14,7 @@ get_battery_state() { } send_notification() { - notify-send -u critical "Battery Low" "Time to recharge! (battery is at ${1}%)" -i battery-caution + notify-send -u critical "󱐋 Time to recharge!" "Battery is down to ${1}%" -i battery-caution -t 30000 } BATTERY_LEVEL=$(get_battery_percentage) From 83e5faf2244d70cd23d1345f2a070fb3be1a30fa Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 14:07:39 +0200 Subject: [PATCH 30/35] Simplify migrations script --- bin/omarchy-migrate | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/bin/omarchy-migrate b/bin/omarchy-migrate index f547570..a3c47e5 100755 --- a/bin/omarchy-migrate +++ b/bin/omarchy-migrate @@ -8,19 +8,13 @@ STATE_DIR="$HOME/.local/state/omarchy/migrations" mkdir -p "$STATE_DIR" # Run any pending migrations -cd ~/.local/share/omarchy - -for file in migrations/*.sh; do +for file in ~/.local/share/omarchy/migrations/*.sh; do filename=$(basename "$file") - migrate_at="${filename%.sh}" # Migration already applied, to re-run it simply delete the state file and try again - [ -e "${STATE_DIR}/$filename" ] && continue - - echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" - source $file - touch "${STATE_DIR}/$filename" + if [[ ! -f "$STATE_DIR/$filename" ]]; then + echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" + source $file + touch "$STATE_DIR/$filename" + fi done - -# Back to where we came from -cd - >/dev/null From d84b521a19d42220b945462cd57c7e131ea04e77 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 14:09:07 +0200 Subject: [PATCH 31/35] Cleaner still --- bin/omarchy-migrate | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bin/omarchy-migrate b/bin/omarchy-migrate index a3c47e5..00e6556 100755 --- a/bin/omarchy-migrate +++ b/bin/omarchy-migrate @@ -1,9 +1,8 @@ #!/bin/bash -# Exit immediately if a command exits with a non-zero status set -e -# Create the migrations state directory, we will store an empty file for each migration that has already been performed. +# Where we store an empty file for each migration that has already been performed. STATE_DIR="$HOME/.local/state/omarchy/migrations" mkdir -p "$STATE_DIR" @@ -11,7 +10,6 @@ mkdir -p "$STATE_DIR" for file in ~/.local/share/omarchy/migrations/*.sh; do filename=$(basename "$file") - # Migration already applied, to re-run it simply delete the state file and try again if [[ ! -f "$STATE_DIR/$filename" ]]; then echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" source $file From a9b9cbfa34e72fe24fdb23f5b8923959b5f45341 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 15:30:49 +0200 Subject: [PATCH 32/35] Must detach after restart --- bin/omarchy-restart-app | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/omarchy-restart-app b/bin/omarchy-restart-app index db37c2d..8cf2a03 100755 --- a/bin/omarchy-restart-app +++ b/bin/omarchy-restart-app @@ -1,4 +1,4 @@ #!/bin/bash pkill -x $1 -uwsm app -- $1 >/dev/null 2>&1 & +setsid uwsm app -- $1 >/dev/null 2>&1 & From d3fff8786424f30430e3c2d30d41ee57b034c4e0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 15:34:31 +0200 Subject: [PATCH 33/35] You really shouldn't have to mess with these regularly, so let's just use Update for Omarchy only --- bin/omarchy | 33 ++++----------------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/bin/omarchy b/bin/omarchy index a013a0c..d3074eb 100755 --- a/bin/omarchy +++ b/bin/omarchy @@ -21,41 +21,16 @@ main_menu() { ack_command main_menu ;; - Update) update_menu ;; + Update) + omarchy-update + main_menu + ;; Setup) setup_menu ;; Manual) open_manual ;; Exit) clear && exit 0 ;; esac } -update_menu() { - show_ascii_art - local menu=("Omarchy" "Waybar" "Walker" "Plymouth" "SwayOSD" "Desktop apps" "Back") - local commands=( - "omarchy-update" - "omarchy-refresh-waybar" - "omarchy-refresh-walker" - "omarchy-refresh-plymouth" - "omarchy-refresh-swayosd" - "omarchy-refresh-applications" - "main_menu" - ) - local choice - choice=$(printf "%s\n" "${menu[@]}" | gum choose --header="Update") || main_menu - for i in "${!menu[@]}"; do - if [[ "${menu[$i]}" == "$choice" ]]; then - if [[ "$choice" == "Back" ]]; then - main_menu - else - eval "${commands[$i]}" - ack_command - main_menu - fi - break - fi - done -} - theme_menu() { show_ascii_art local menu=("Pick" "Install" "Update" "Remove" "Back") From 25ed6460e0152a25f2c08f1ad4ffbcf8acb7736e Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 15:44:39 +0200 Subject: [PATCH 34/35] Forgot to add waybar refresh for auto-update icon to existing installations --- migrations/1754228071.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 migrations/1754228071.sh diff --git a/migrations/1754228071.sh b/migrations/1754228071.sh new file mode 100644 index 0000000..e7b69b1 --- /dev/null +++ b/migrations/1754228071.sh @@ -0,0 +1,5 @@ +echo "Add auto-update icon to waybar when update available" + +if ! grep -q "custom/update" ~/.config/waybar/config.jsonc; then + omarchy-refresh-waybar +fi From 2712f268c8bcbe6438f40053b5e5e71beb5eb5c7 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 3 Aug 2025 10:00:21 -0400 Subject: [PATCH 35/35] Increase time before screensaver starts to 2.5 minutes (from 1 minute) --- config/hypr/hypridle.conf | 2 +- migrations/1754228679.sh | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 migrations/1754228679.sh diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf index d769875..64b9d24 100644 --- a/config/hypr/hypridle.conf +++ b/config/hypr/hypridle.conf @@ -7,7 +7,7 @@ general { } listener { - timeout = 60 # 1min + timeout = 180 # 2.5min on-timeout = pidof hyprlock || omarchy-launch-screensaver # start screensaver (if we haven't locked already) } diff --git a/migrations/1754228679.sh b/migrations/1754228679.sh new file mode 100644 index 0000000..2a80234 --- /dev/null +++ b/migrations/1754228679.sh @@ -0,0 +1,2 @@ +echo "Increase time before screensaver starts to 2.5 minutes (from 1 minute)" +omarchy-refresh-hypridle