Replies: 3 comments 8 replies
|
I mean, that's the entire point, not asking programs to draw a frame when they're invisible. Niri already keeps sending frame callbacks once a second to invisible windows to unbreak the very few clients that have problems with this (notably games). For window streaming specifically where the window is visible (on the stream), it is a known problem and there's an open issue about it. For videos you may want pinned windows instead (also an open issue). If you have problems with something else let's discuss it case by case and figure out if maybe it is a bug in those applications. Either way, an option like this is the same implementation wise to the aforementioned window streaming case (which is not implemented yet because it's a bit tricky).
"Power user" is a very catch-all statement suitable for requesting any pet feature whatsoever. Pretty much all niri users are arguably power users, and their usability has not thus far been impacted. |
|
I do think something like this would be nice to have, because I wanted to stream today (the day I'm writing this comment) and I have my own virtual avatar model which I wanted to have running on the screen but once I switched back to OBS it was being updated once per second, had to cancel my plan today. Glad I found this discussion because I have no idea what I would've done. I'll switch back to X11 for now. |
|
This is an interesting use case. Overall, I agree with what's said above - once I switched to use niri, I noticed youtube videos played in Firefox to silently drop to 360p, from whatever resolution I had selected. That's happening after some time from me switching from the workspace where firefox is running to the one where it's not. There are workarounds present which generally revolve around limiting Visibility API - but considering that this needs to be done either through third party or custom extensions, it feels better if it would be supported by Niri. As I understand, the frame callback suppression in the Wayland spec is a SHOULD, not a MUST so compositors are free to keep sending them. I know that hyprland can be configured to do so, it would be great if niri could too. |
Uh oh!
There was an error while loading. Please reload this page.
Motivation
Currently, when surfaces (windows) are completely hidden or on inactive workspaces, niri stops sending
wl_surface.framecallbacks. This behavior saves power, but negatively affects apps like games, video playback (YouTube), and real-time monitoring tools. They respond by significantly lowering FPS, reducing streaming quality, or pausing updates altogether.Proposal
Introduce an optional configuration to keep sending frame callbacks even if a surface isn't visible. Example configuration:
Possible modes:
auto(current behavior)always(always send callbacks)minimal(limited callbacks, e.g., 1 per second)Benefits
Potential drawbacks
Examples in other compositors
Conclusion
This optional feature would enhance usability for power users and gamers without negatively impacting default performance.
All reactions