Compare commits

...

2 Commits

Author SHA1 Message Date
nevaforget 806841d435 feat(portal): keep windowed browser video from sleeping the screen
Update PKGBUILD version / update-pkgver (push) Successful in 3s
Add /etc/xdg-desktop-portal/niri-portals.conf with Inhibit=none. The gtk
portal reports Inhibit success even though nothing implements it under Niri,
so Firefox/Waterfox skips the native Wayland idle-inhibit. With no backend the
browser falls back to zwp_idle_inhibit, which Niri honors.
2026-06-12 11:10:00 +02:00
nevaforget f9f73db10f docs(stasis): correct monitor_media comment to match real behavior
monitor_media detects media via pactl sink-inputs and excludes browser
audio by design; it does not catch windowed browser video. ignore_remote_media
only affects remote players (Spotify-remote, Chromecast).
2026-06-12 11:10:00 +02:00
3 changed files with 25 additions and 3 deletions
+8
View File
@@ -71,6 +71,14 @@ Systemweite generic-family Defaults via `defaults/etc/fonts/conf.d/65-moonarch-f
- Aliases brauchen `binding="strong"` — ein weak `<prefer>` (fontconfig-Default) rankt hinter dem effektiven generischen Fallback und greift nicht. - Aliases brauchen `binding="strong"` — ein weak `<prefer>` (fontconfig-Default) rankt hinter dem effektiven generischen Fallback und greift nicht.
- Greift nur für Apps die generische Familien nutzen (z.B. Firefox-Web-Fallback). moonarch-Apps (Waybar, foot, GTK, walker, swaync) setzen den Font explizit. - Greift nur für Apps die generische Familien nutzen (z.B. Firefox-Web-Fallback). moonarch-Apps (Waybar, foot, GTK, walker, swaync) setzen den Font explizit.
## Browser Idle-Inhibit (xdg-desktop-portal)
Damit Fenster-Browservideo (Firefox/Waterfox) den Screen wachhält, via `defaults/etc/xdg-desktop-portal/niri-portals.conf` (owned by moonarch-git, höhere Priorität als niris `/usr/share/xdg-desktop-portal/niri-portals.conf`):
- `xdg-desktop-portal-gtk` meldet das `Inhibit`-Interface als success, obwohl es unter Niri niemand implementiert → Firefox glaubt, der Idle-Inhibit lief über den Portal, und nutzt den nativen Wayland-`idle-inhibit` nicht. Ergebnis: kein Inhibitor, Screen schläft.
- Fix: `org.freedesktop.impl.portal.Inhibit=none` → Firefox fällt auf `zwp_idle_inhibit` zurück, den Niri honoriert. Die übrigen `[preferred]`-Zeilen sind 1:1 von niris Default übernommen (portals.conf wird nicht gemerged — die höchstpriore Datei gilt komplett).
- stasis ist hier unbeteiligt: `monitor_media` (pactl) erfasst Browser-Audio per Design nicht (nur Non-Browser-Player); Browser laufen über den Inhibit-Pfad.
- **Aktivierung:** xdg-desktop-portal + Browser neu starten — Firefox fragt den Portal-Support beim Start ab.
## Konventionen ## Konventionen
- Paketlisten sind einfache Textdateien, ein Paket pro Zeile, Kommentare mit `#` - Paketlisten sind einfache Textdateien, ein Paket pro Zeile, Kommentare mit `#`
@@ -0,0 +1,10 @@
[preferred]
default=gnome;gtk;
org.freedesktop.impl.portal.Access=gtk;
org.freedesktop.impl.portal.Notification=gtk;
org.freedesktop.impl.portal.Secret=gnome-keyring;
# xdg-desktop-portal-gtk reports the Inhibit interface as success even though
# nothing implements it under Niri, which makes Firefox/Waterfox skip the
# native Wayland idle-inhibit. With no backend the browser falls back to
# zwp_idle_inhibit, which Niri honors, so windowed video keeps the screen awake.
org.freedesktop.impl.portal.Inhibit=none;
+7 -3
View File
@@ -5,9 +5,13 @@
@description "Idle management for Moonarch (Niri + moonlock)" @description "Idle management for Moonarch (Niri + moonlock)"
default: default:
# Media playback inhibits idle. Browsers expose MPRIS during video playback # monitor_media: detect active media via PipeWire/PulseAudio sink-inputs
# and only send D-Bus idle-inhibit in fullscreen, so we include remote media # (pactl), not MPRIS. Non-browser players (mpv, vlc, ...) are counted and
# to catch windowed browser videos. # inhibit idle. Browser audio is excluded by design; browser idle-inhibit is
# expected via D-Bus (enable_dbus_inhibit), which Waterfox/Firefox only send
# in fullscreen -- so windowed browser video is NOT caught by stasis.
# ignore_remote_media false: also count remote players (Spotify-remote,
# KDEConnect, Chromecast); has no effect on windowed browser video.
monitor_media true monitor_media true
ignore_remote_media false ignore_remote_media false