diff --git a/config/hypr/input.conf b/config/hypr/input.conf index 4fce762a..c48b2703 100644 --- a/config/hypr/input.conf +++ b/config/hypr/input.conf @@ -31,8 +31,8 @@ input { } # Scroll nicely in the terminal -windowrule = scrolltouchpad 1.5, class:(Alacritty|kitty) -windowrule = scrolltouchpad 0.2, class:com.mitchellh.ghostty +windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5 +windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2 # Enable touchpad gestures for changing workspaces # See https://wiki.hyprland.org/Configuring/Gestures/ diff --git a/default/hypr/apps/1password.conf b/default/hypr/apps/1password.conf index d5fc8888..a666430c 100644 --- a/default/hypr/apps/1password.conf +++ b/default/hypr/apps/1password.conf @@ -1,2 +1,2 @@ -windowrule = noscreenshare, class:^(1[p|P]assword)$ -windowrule = tag +floating-window, class:^(1[p|P]assword)$ +windowrule = no_screen_share on, match:class ^(1[p|P]assword)$ +windowrule = tag +floating-window, match:class ^(1[p|P]assword)$ diff --git a/default/hypr/apps/bitwarden.conf b/default/hypr/apps/bitwarden.conf index 4a6c5e6a..974aa28c 100644 --- a/default/hypr/apps/bitwarden.conf +++ b/default/hypr/apps/bitwarden.conf @@ -1,2 +1,2 @@ -windowrule = noscreenshare, class:^(Bitwarden)$ -windowrule = tag +floating-window, class:^(Bitwarden)$ \ No newline at end of file +windowrule = no_screen_share on, match:class ^(Bitwarden)$ +windowrule = tag +floating-window, match:class ^(Bitwarden)$ diff --git a/default/hypr/apps/browser.conf b/default/hypr/apps/browser.conf index ad278edd..2b44576b 100644 --- a/default/hypr/apps/browser.conf +++ b/default/hypr/apps/browser.conf @@ -1,13 +1,13 @@ # Browser types -windowrule = tag +chromium-based-browser, class:((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium) -windowrule = tag +firefox-based-browser, class:([fF]irefox|zen|librewolf) +windowrule = tag +chromium-based-browser, match:class ((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium) +windowrule = tag +firefox-based-browser, match:class ([fF]irefox|zen|librewolf) # Force chromium-based browsers into a tile to deal with --app bug -windowrule = tile, tag:chromium-based-browser +windowrule = tile on, match:tag chromium-based-browser # Only a subtle opacity change, but not for video sites -windowrule = opacity 1 0.97, tag:chromium-based-browser -windowrule = opacity 1 0.97, tag:firefox-based-browser +windowrule = opacity 1 0.97, match:tag chromium-based-browser +windowrule = opacity 1 0.97, match:tag firefox-based-browser # Some video sites should never have opacity applied to them -windowrule = opacity 1.0 1.0, initialTitle:((?i)(?:[a-z0-9-]+\.)*youtube\.com_/|app\.zoom\.us_/wc/home) +windowrule = opacity 1.0 1.0, match:initial_title ((?i)(?:[a-z0-9-]+\.)*youtube\.com_/|app\.zoom\.us_/wc/home) diff --git a/default/hypr/apps/davinci-resolve.conf b/default/hypr/apps/davinci-resolve.conf index 33b04f2f..9067fdf6 100644 --- a/default/hypr/apps/davinci-resolve.conf +++ b/default/hypr/apps/davinci-resolve.conf @@ -1,2 +1,2 @@ # Focus floating DaVinci Resolve dialog windows -windowrule = stayfocused, class:.*[Rr]esolve.*, floating:1 +windowrule = stay_focused on, match:class .*[Rr]esolve.*, match:float 1 diff --git a/default/hypr/apps/hyprshot.conf b/default/hypr/apps/hyprshot.conf index c9003208..514d9156 100644 --- a/default/hypr/apps/hyprshot.conf +++ b/default/hypr/apps/hyprshot.conf @@ -1,2 +1,2 @@ # Remove 1px border around hyprshot screenshots -layerrule = noanim, selection +layerrule = animation none, match:namespace selection diff --git a/default/hypr/apps/jetbrains.conf b/default/hypr/apps/jetbrains.conf index 6e8708af..bbb6c2b9 100644 --- a/default/hypr/apps/jetbrains.conf +++ b/default/hypr/apps/jetbrains.conf @@ -1,22 +1,22 @@ # Fix splash screen showing in weird places and prevent annoying focus takeovers -windowrule = tag +jetbrains-splash, class:^(jetbrains-.*)$, title:^(splash)$, floating:1 -windowrule = center, tag:jetbrains-splash -windowrule = nofocus, tag:jetbrains-splash -windowrule = noborder, tag:jetbrains-splash +windowrule = tag +jetbrains-splash, match:class ^(jetbrains-.*)$, match:title ^(splash)$, match:float 1 +windowrule = center on, match:tag jetbrains-splash +windowrule = no_focus on, match:tag jetbrains-splash +windowrule = border_size 0, match:tag jetbrains-splash # Center popups/find windows -windowrule = tag +jetbrains, class:^(jetbrains-.*), title:^()$, floating:1 -windowrule = center, tag:jetbrains +windowrule = tag +jetbrains, match:class ^(jetbrains-.*), match:title ^()$, match:float 1 +windowrule = center on, match:tag jetbrains # Enabling this makes it possible to provide input in popup dialogs (search window, new file, etc.) -windowrule = stayfocused, tag:jetbrains -windowrule = noborder, tag:jetbrains +windowrule = stay_focused on, match:tag jetbrains +windowrule = border_size 0, match:tag jetbrains # For some reason tag:jetbrains does not work for size rule -windowrule = size >50% >50%, class:^(jetbrains-.*), title:^()$, floating:1 +windowrule = size >50% >50%, match:class ^(jetbrains-.*), match:title ^()$, match:float 1 # Disable window flicker when autocomplete or tooltips appear -windowrule = noinitialfocus, class:^(jetbrains-.*)$, title:^(win.*)$, floating:1 +windowrule = no_initial_focus on, match:class ^(jetbrains-.*)$, match:title ^(win.*)$, match:float 1 # Disable mouse focus -windowrule = nofollowmouse, class:^(jetbrains-.*)$ +windowrule = no_follow_mouse on, match:class ^(jetbrains-.*)$ diff --git a/default/hypr/apps/localsend.conf b/default/hypr/apps/localsend.conf index 46255404..c1741692 100644 --- a/default/hypr/apps/localsend.conf +++ b/default/hypr/apps/localsend.conf @@ -1,3 +1,3 @@ # Float LocalSend and fzf file picker -windowrule = float, class:(Share|localsend) -windowrule = center, class:(Share|localsend) +windowrule = float on, match:class (Share|localsend) +windowrule = center on, match:class (Share|localsend) diff --git a/default/hypr/apps/pip.conf b/default/hypr/apps/pip.conf index 18e14406..f68a7ec2 100644 --- a/default/hypr/apps/pip.conf +++ b/default/hypr/apps/pip.conf @@ -1,9 +1,9 @@ # Picture-in-picture overlays -windowrule = tag +pip, title:(Picture.?in.?[Pp]icture) -windowrule = float, tag:pip -windowrule = pin, tag:pip -windowrule = size 600 338, tag:pip -windowrule = keepaspectratio, tag:pip -windowrule = noborder, tag:pip -windowrule = opacity 1 1, tag:pip -windowrule = move 100%-w-40 4%, tag:pip +windowrule = tag +pip, match:title (Picture.?in.?[Pp]icture) +windowrule = float on, match:tag pip +windowrule = pin on, match:tag pip +windowrule = size 600 338, match:tag pip +windowrule = keep_aspect_ratio on, match:tag pip +windowrule = border_size 0, match:tag pip +windowrule = opacity 1 1, match:tag pip +windowrule = move 100%-w-40 4%, match:tag pip diff --git a/default/hypr/apps/qemu.conf b/default/hypr/apps/qemu.conf index 104442ca..acc32a4a 100644 --- a/default/hypr/apps/qemu.conf +++ b/default/hypr/apps/qemu.conf @@ -1 +1 @@ -windowrule = opacity 1 1, class:qemu +windowrule = opacity 1 1, match:class qemu diff --git a/default/hypr/apps/retroarch.conf b/default/hypr/apps/retroarch.conf index 94be39f3..f3b046f9 100644 --- a/default/hypr/apps/retroarch.conf +++ b/default/hypr/apps/retroarch.conf @@ -1,4 +1,3 @@ -windowrule = fullscreen, class:com.libretro.RetroArch -windowrule = opacity 1 1, class:com.libretro.RetroArch -windowrule = idleinhibit fullscreen, class:com.libretro.RetroArch - +windowrule = fullscreen on, match:class com.libretro.RetroArch +windowrule = opacity 1 1, match:class com.libretro.RetroArch +windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch diff --git a/default/hypr/apps/steam.conf b/default/hypr/apps/steam.conf index 77d8a4bc..ec4f754d 100644 --- a/default/hypr/apps/steam.conf +++ b/default/hypr/apps/steam.conf @@ -1,7 +1,7 @@ # Float Steam -windowrule = float, class:steam -windowrule = center, class:steam, title:Steam -windowrule = opacity 1 1, class:steam -windowrule = size 1100 700, class:steam, title:Steam -windowrule = size 460 800, class:steam, title:Friends List -windowrule = idleinhibit fullscreen, class:steam +windowrule = float on, match:class steam +windowrule = center on, match:class steam, match:title Steam +windowrule = opacity 1 1, match:class steam +windowrule = size 1100 700, match:class steam, match:title Steam +windowrule = size 460 800, match:class steam, match:title Friends List +windowrule = idle_inhibit fullscreen, match:class steam diff --git a/default/hypr/apps/system.conf b/default/hypr/apps/system.conf index 889235cc..ee6c6b86 100644 --- a/default/hypr/apps/system.conf +++ b/default/hypr/apps/system.conf @@ -1,21 +1,21 @@ # Floating windows -windowrule = float, tag:floating-window -windowrule = center, tag:floating-window -windowrule = size 875 600, tag:floating-window +windowrule = float on, match:tag floating-window +windowrule = center on, match:tag floating-window +windowrule = size 875 600, match:tag floating-window -windowrule = tag +floating-window, class:(org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv) -windowrule = tag +floating-window, class:(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*) -windowrule = float, class:org.gnome.Calculator +windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv) +windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*) +windowrule = float on, match:class org.gnome.Calculator # Fullscreen screensaver -windowrule = fullscreen, class:org.omarchy.screensaver -windowrule = float, class:org.omarchy.screensaver +windowrule = fullscreen on, match:class org.omarchy.screensaver +windowrule = float on, match:class org.omarchy.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)$ +windowrule = opacity 1 1, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$ # Popped window rounding -windowrule = rounding 8, tag:pop +windowrule = rounding 8, match:tag pop # Prevent idle while open -windowrule = idleinhibit always, tag:noidle +windowrule = idle_inhibit always, match:tag noidle diff --git a/default/hypr/apps/terminals.conf b/default/hypr/apps/terminals.conf index e908e5df..2bcf0eb6 100644 --- a/default/hypr/apps/terminals.conf +++ b/default/hypr/apps/terminals.conf @@ -1,2 +1,2 @@ # Define terminal tag to style them uniformly -windowrule = tag +terminal, class:(Alacritty|kitty|com.mitchellh.ghostty) +windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty) diff --git a/default/hypr/apps/walker.conf b/default/hypr/apps/walker.conf index eefd923c..c3f7fe5a 100644 --- a/default/hypr/apps/walker.conf +++ b/default/hypr/apps/walker.conf @@ -1,2 +1,2 @@ # Application-specific animation -layerrule = noanim, walker +layerrule = animation none, match:namespace walker diff --git a/default/hypr/apps/webcam-overlay.conf b/default/hypr/apps/webcam-overlay.conf index eca1c751..ca5b4dec 100644 --- a/default/hypr/apps/webcam-overlay.conf +++ b/default/hypr/apps/webcam-overlay.conf @@ -1,6 +1,6 @@ # Webcam overlay for screen recording -windowrule = float, title:WebcamOverlay -windowrule = pin, title:WebcamOverlay -windowrule = noinitialfocus, title:WebcamOverlay -windowrule = nodim, title:WebcamOverlay -windowrule = move 100%-w-40 100%-w-40, title:WebcamOverlay # There's a typo in the hyprland rule so 100%-w on the height param is actually correct here +windowrule = float on, match:title WebcamOverlay +windowrule = pin on, match:title WebcamOverlay +windowrule = no_initial_focus on, match:title WebcamOverlay +windowrule = no_dim on, match:title WebcamOverlay +windowrule = move 100%-w-40 100%-w-40, match:title WebcamOverlay # There's a typo in the hyprland rule so 100%-w on the height param is actually correct here diff --git a/default/hypr/looknfeel.conf b/default/hypr/looknfeel.conf index 26a55948..0279074e 100644 --- a/default/hypr/looknfeel.conf +++ b/default/hypr/looknfeel.conf @@ -123,7 +123,7 @@ misc { disable_splash_rendering = true focus_on_activate = true anr_missed_pings = 3 - new_window_takes_over_fullscreen = 1 + on_focus_under_fullscreen = 1 } # https://wiki.hypr.land/Configuring/Variables/#cursor diff --git a/default/hypr/windows.conf b/default/hypr/windows.conf index bc665b22..5d1afb76 100644 --- a/default/hypr/windows.conf +++ b/default/hypr/windows.conf @@ -1,11 +1,12 @@ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -windowrule = suppressevent maximize, class:.* +# Hyprland 0.53+ syntax +windowrule = suppress_event maximize, match:class .* # Just dash of opacity by default -windowrule = opacity 0.97 0.9, class:.* +windowrule = opacity 0.97 0.9, match:class .* # Fix some dragging issues with XWayland -windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 +windowrule = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0 # App-specific tweaks source = ~/.local/share/omarchy/default/hypr/apps.conf diff --git a/migrations/1767138576.sh b/migrations/1767138576.sh new file mode 100644 index 00000000..8d452d07 --- /dev/null +++ b/migrations/1767138576.sh @@ -0,0 +1,9 @@ +echo "Update terminal scrolltouchpad setting to Hyprland 0.53 style" + +if grep -q "scrolltouchpad" ~/.config/hypr/input.conf; then + sed -Ei 's/^windowrule = scrolltouchpad ([^,]+), class:\(([^)]+)\)$/windowrule = match:class (\2), scroll_touchpad \1/; + s/^windowrule = scrolltouchpad ([^,]+), class:([^ ]+)$/windowrule = match:class \2, scroll_touchpad \1/' ~/.config/hypr/input.conf +fi + +# Ensure we restart to pair new Hyprland settings with new version +omarchy-state set reboot-required