Krátký příběh o tom, jak jsem hledal náhradu za volumeicon, což je applet do systémové lišty na ovládání hlasitosti.
Kontext aneb proč něco takového řeším
Applet do systémové lišty na ovládání hlasitosti je něco, co zná snad každý uživatel. Většinou je to taktéž něco, co lidi typicky neřeší :-). Osobně bych to taky neřešil, pokud bych měl funkční řešení. Zřejmě je to dáno tím, že na Linuxu používám poměrně spartanského správce oken (angl. window manager) jménem Fluxbox. Neberte mě špatně; jsem s ním naprosto spokojený. Nicméně jelikož je to velmi základní správce oken, tak neposkytuje výhody těžkotonážnějších řešení, jako jsou grafická prostředí KDE či Gnome. Ta mají typicky vestavěné řešení pro applet ovládání hlasitosti do systémové lišty. Fluxbox ale nic takového nemá, a tak musím využívat univerzálnější řešení.
Ze začátku jsem používal kmix, což je applet pro KDE. Bylo to dáno tím, že před Fluxboxem jsem využíval právě KDE a tím spoustu aplikací z něj, včetně např. Konsole, u které jsem přešel na Alacritty. Kmix mi nicméně okolo roku 2020 přestal ve Fluxboxu fungovat, a tak jsem se začal shánět po alternativě. Tu jsem poměrně snadno nalezl ve volumeicon, se kterým jsem byl spokojený. Ovšem až do konce října tohoto roku, kdy mi po aktualizaci systému (Arch Linux) přestal fungovat. Navíc jsem zjistil, že autor projektu repozitář archivoval, a to bez informace proč...
Musel jsem se tedy vrhnout na nalezení vhodné náhrady.
Požadavky
Požadavků prakticky moc nemám:
- Fungující řešení pod Fluxboxem v Arch Linuxu s využitím PulseAudio.
- Možnost nastavení globálních klávesových zkratek pro ovládání hlasitosti (zvýšení hlasitosti, snížení hlasitosti a ztlumení zvuku).
- Ikona do systémové lišty, přes kterou bych mohl měnit nastavení týkající se zvuku (např. primární výstupní kanál).
Z těchto požadavků navíc pouze první dva beru jako nutnost; u toho třetího jsem si uvědomil, že jej vlastně nutně nepotřebuji. Ale to předbíhám :-).
Hledání náhrady
Našel a vyzkoušel jsem následující alternativy pro volumeicon:
- pavumeter - Bohužel, vývoj tohoto projektu skončil.
- volwheel - Stejně jako u předchozího projektu i zde vývoj skončil.
- kmix - Můj starý známý :-). Bohužel, ikonka v systémové liště byla příliš tmavá (netuším proč, ale nebyla skoro vidět), a taky se mi z nějakého důvodu nepodařilo přijít na to, jak nastavit klávesové zkratky.
- plasma-pa - Plasma applet. Bohužel, pro jeho běh bych musel přejít na KDE, což nepřicházelo v úvahu.
- pasystray - Nepodařilo se mi zprovoznit ani ikonu v systémové liště, ani klávesové zkratky pro ovládání hlasitosti.
- volctl - Z nějakého důvodu jsem jednak neviděl ikonu v systémové liště, nepřišel na to, jak nastavit klávesové zkratky, a taky někdo na GitHubu reportoval, že aplikaci uniká paměť (angl. memory leak).
- pnmixer - Build projektu si vyžádal úpravu, což by samo o sobě problém nebyl. Nicméně když jsem se pokusil nakonfigurovat klávesové zkratky, tak jsem z nějakého důvodu dostával chybu "Could not grab the keyboard". Chvíli jsem to zkoušel řešit, ale bez úspěchu.
- ...a dalších několik projektů, jejichž jména si již nepamatuji.
Co teď?
To vážné neexistuje applet nezávislý na správci oken, který by měl funkční ikonu a klávesové zkratky? Možná jsem něco očividného vynechal, ale došel jsem do stavu, že pokud něco takového chci mít, tak si to budu muset napsat sám. No a v tu chvíli jsem si uvědomil, že toho vlastně moc nepotřebuji, a že by mi vlastně úplně stačilo mít možnost ovládání hlasitosti přes klávesové zkratky. Takže jsem se vydal cestou vlastního skriptu, který budu volat přes klávesové zkratky :-).
Realizace vybrané alternativy
Doiteroval jsem k tomuto skriptu, který přes pactl z PulseAudio ovládá hlasitost (zvýšení hlasitosti, snížení hlasitosti a ztlumení zvuku), a přes osd_cat z xosd zobrazuje informace na obrazovku (např. aktuální stav hlasitosti). Nejsložitější část byla právě ono vykreslení na obrazovku, protože osd_cat je poměrně jednoduchý software psaný pro X window. Primární problém, který jsem řešil byl, že pokud jsem skript zavolal několikrát za sebou, tak došlo k přepisování obrazovky, což způsobilo, že text nebyl čitelný. Jediné funkční řešení bylo před výpisem na obrazovku zabít předchozí proces osd_cat. Není to hezké řešení, ale funguje.
Takto to vypadá, když zvýším hlasitost:
A víte co? Uvědomil jsem si, že mi to úplně stačí. Pokud bych došel k tomu, že budu muset přejít z PulseAudio na něco jiného, tak jen upravím skript. Klávesové zkratky mám nastavené klasicky přes Fluxbox:
# Volume control (Prior = PgUp, Next = PgDown). Mod4 Prior :Exec ~/.fluxbox/scripts/volume-control.sh up Mod4 Next :Exec ~/.fluxbox/scripts/volume-control.sh down Mod4 End :Exec ~/.fluxbox/scripts/volume-control.sh toggle
Toť vše ;-).
 
      
