Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

Add layerrule ignorefocus

Open maqrrr opened this issue 1 year ago • 0 comments

Describe your PR, what does it fix/add?

Adds a new layerrule for ignorefocus. This lets me script a fullscreen eww overlay like so:

preload_dashboard() {
	eww open dashboard
	hyprctl keyword layerrule ignorefocus,eww-dashboard # bypass interaction
}

show_dashboard() {
	hyprctl keyword blurls eww-dashboard          # enable blur
	hyprctl keyword layerrule unset,eww-dashboard # allow interaction
	eww update reveal=true                        # show dashboard
}

hide_dashboard() {
	eww update reveal=false                             #hide dashboard
	hyprctl keyword blurls remove,eww-dashboard         # remove blur
	hyprctl keyword layerrule ignorefocus,eww-dashboard # bypass interaction
}

with a defwindow that looks like:

(defwindow dashboard
  :monitor 0
  :geometry (geometry :x "0px" :y "0px" :width "100%" :height "100%" :anchor "center")
  :stacking "ov"
  :windowtype "dock"
  :focusable true
  :namespace "eww-dashboard"
  (container
    (system)))

Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)

Tested a bunch of different focus/unfocus scenarios. I think I got all the edge cases.

Also fixed a bug where layerrules were not being applied when unset.

Is it ready for merging, or does it need work?

Ready for merging. Not very risky because logic should be the same for anyone not invoking the new ignorefocus rule.

maqrrr avatar May 08 '23 05:05 maqrrr