hyprland-community / pyprland

Scratchpads & many goodies for Hyprland [maintainer=@fdev31]
MIT License
390 stars 17 forks source link

[BUG] scratchpads.hide: Unnecessary IPC call may throw an error when the monitor is gone #70

Closed andresilva closed 7 months ago

andresilva commented 7 months ago

Pyprland version

2.1.1

Describe the bug

Whenever the monitor gets disconnected (because of DPMS), I get an error notification saying "no focused monitor". This is a bit annoying since turning off the monitor on idle is normal and expected behavior. Would it be possible to silence this error?

To Reproduce Steps to reproduce the behavior:

  1. Enabled scratchpads
  2. Turn off monitor
  3. Turn it back on
  4. See error
fdev31 commented 7 months ago

Can you provide the pypr logs when this happens ? I can turn off a monitor & don't get this issue... I would like to understand which plugin creates this problem.

andresilva commented 7 months ago
Mar 12 14:32:10 systemd[3470]: Started pyprland.
Mar 12 21:10:59 pypr[3851]: scratchpads::event_monitorremoved(('DP-1',)) failed:
Mar 12 21:10:59 pypr[3851]: no focused monitor
Mar 12 21:10:59 pypr[3851]: Traceback (most recent call last):
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/command.py", line 144, in _run_plugin_handler
Mar 12 21:10:59 pypr[3851]:     await getattr(plugin, full_name)(*params)
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 608, in event_monitorremoved
Mar 12 21:10:59 pypr[3851]:     await self.run_hide(scratch.uid, autohide=True)
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 918, in run_hide
Mar 12 21:10:59 pypr[3851]:     await self._anim_hide(animation_type, scratch)
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 756, in _anim_hide
Mar 12 21:10:59 pypr[3851]:     off_x, off_y = await self.get_offsets(scratch)
Mar 12 21:10:59 pypr[3851]:                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 749, in get_offsets
Mar 12 21:10:59 pypr[3851]:     return await scratch.get_auto_offset(monitor)
Mar 12 21:10:59 pypr[3851]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/plugins/scratchpads.py", line 184, in get_auto_offset
Mar 12 21:10:59 pypr[3851]:     monitor = await get_focused_monitor_props(self.log)
Mar 12 21:10:59 pypr[3851]:               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 12 21:10:59 pypr[3851]:   File "/nix/store/9yckjzm6zlkb4bs8b3lasmx0825b5pv9-pyprland-2.0.8/lib/python3.11/site-packages/pyprland/ipc.py", line 153, in get_focused_monitor_props
Mar 12 21:10:59 pypr[3851]:     raise RuntimeError("no focused monitor")
Mar 12 21:10:59 pypr[3851]: RuntimeError: no focused monitor

It happens with scratchpads which is the only plugin I'm using.

fdev31 commented 7 months ago

So it only happens at the moment a monitor is removed while there was a scratchpad visible on it, isn't it ?

andresilva commented 7 months ago

It happens when the scratchpad is hidden. Here's my config as well, in case it helps to debug:

[pyprland]
plugins = ["scratchpads"]

[scratchpads.term]
command = "foot -a foot-scratchpad"
class = "foot-scratchpad"
animation = "fromTop"
unfocus = "hide"
size = "50% 50%"
margin = 300
fdev31 commented 7 months ago

Are you able to use the latest git version? I can't reproduce but I may have some idea to solve the problem... it would be great if you can test it after I commit the code!

andresilva commented 7 months ago

Yes no problem. Just let me know here when the change lands in master and I'll test it and report back.

fdev31 commented 7 months ago

Here it is

andresilva commented 7 months ago

Seems like it solves the issue, no longer getting that exception in the logs.