Spriječi gašenje monitora pri gledanju videa

Objavljeno: Uto, 29 Aug 2017
Ažurirano: Čet, 02 Jan 2020

Kategorija: Linux

Tagovi: firefox dpms

Prevodi: en

NAPOMENA: Firefox 71 (moguće i ranije) automatski gasi screensaver/DPMS pri gledanju videa. Tako da je ovo prevaziđeno.

Zašto se gasi

Ne koristim nikakve screensavere. Jedina stvar koju imam uključeno su DPMS postavke koje zatamnjuju, suspenduju i gase monitor. Pri normalnom radu funkcioniše bez problema. Pomjeranjem miša ili pritiskanjem dugmeta na tastaturi prestaje. Video plejer mpv također samostalno privremeno isključi DPMS postavke dok pušta video.

Problem nastaje pri gledanju video klipova u Firefoxu, npr. YouTube. Firefox ne gasi DPMS gašenje pri puštanju videa. Također mislim da ne emituje nikakav znak za zahtijevanje gašenja. Moguće da emituje neku dbus poruku upućenu klasičnim screensaverima i drugim koji slušaju, ali nažalost ne utiče na DPMS postavke.

Zašto se neće gasiti

Primjetio sam da se pri puštanju video klipa u Firefoxu pojavi "stream" u Pulseaudiju kao na slici.

Ideja je bila da pratim Pulseaudio sinkove i provjerim da li ima Firefoxa među njima. U slučaju da ima, ugasio bih DPMS postavke. Pri ponovnoj provjeri, ukoliko nema Firefoxa, vratio bih postavke.

Zašto se ne gasi

Napisao sam mali Python programčić koji će provjeravati Pulseaudio podatke i tražiti Firefox.

Prva ideja je bila da nakon svakih određenih sekundi provjerim da li postoji Firefox sink. Na sličan način funkcionše lightsOn. Međutim lightsOn detektuje samo Flash video i druge programe. Meni to nije potrebno, a potrebno mi je da detektuje HTML5 video jer je Flash deprecirano, vlasničko-softver smeće koje ne treba imati instalirano.

Slučajno sam pronašao pactl subscribe. Pulseaudio emituje razne događaje, kao pojavu novih sources, sinks i nama potrebni input sinks. To je mnogo bolje rješenje nego periodično provjeravanje.

Da ne moram hakasto rasčlanjivati (navodno se tako kaže parse na naš) ispis od pactl, pronašao sam python-pulse-control. On otkriva iste Pulseaudio događaje, samo lakše i čistije. Uz pomoć toga nije bilo teško sklepati na brzaka rješenje. Svjestan sam da je sam princip veoma hakast i da izvodba rješenja nije perfektna, ali za sada radi besprijekorno.

Preuzmi program Firefox-DPMS.

Potreban vam je Python 3, gore navedeni python-pulse-control i naravno morate koristiti PulseAudio. Osim toga ne koristi ništa izvan Python standardne library.

Arch Linux korisnici mogu koristiti priloženi PKGBUILD za Firefox-DPMS. Trebaće vam python-pulse-control. Imate moj PKGBUILD ovdje ili ga pronađite u AURu.