Portál AbcLinuxu, 2. května 2025 05:48
Po delší odmlce vítejte na mém blogu
Na noteboooku jsem spokojeným uživatelem prostředí fluxbox a konzolového přehrávače mocp, který ovládám pomocí multimediálních tlačítek. Když jsem doma, pouštím ovšem hudbu z file serveru(debian etch + mocp) do hifivěže. Neustálé překlikávání do konzole kde je přes ssh spuštěn mocp kvůli ovládání hlasitosti, pauzy ap. mě začalo dost otravovat....
Proto jsem si vytvořil script v bashi, který je volán při stisknutí multimediálního tlačítka, otestuje (ne)existenci lokálního mocp a případně pomocí ssh pošle příkaz na file server. Původně jsem si myslel že to bude jen krátký scriptík, nakonec má asi 300 řádků tak si říkám jestli se někomu nemůže hodit...
ovládání je řešeno pomocí parametrů předávaných scriptu:
vol_up - zesílí
vol_down - zeslabi
mute - mute/unmute
player_pause - play/pause
player_next - další song
player_back - předchozí song
player_stop - zastaví přehrávání
set_context - přepne který přehrávač bude ovládán - pokud existuje lokálně spuštěné mocp přepne na server a naopak.
Ukládání informací (úroveň hlasitosti pro unmute, informace o pauze ap) jsou pomocí souborů v /tmp. Pro ovládání hlasitosti jsou spřaženy kanály Master a PCM, kvůli většímu rozsahu volume.(Pokud budete upravovat sed výrazy pro načtení hlasitosti kanálu, pozor na to kterou jednotku používáte, dB nebo %? hlasitosti kanálu.
Na začátku scriptu jsou do proměnných nadefinovány akce pro ovládání hlasitostí pomocí alsy(vyberte si své kanály dle libosti..., ovládání mocp je natvrdo v kódu, to se snad neliší....
Problémy o kterých vím: pokud dáte pauzu tímto scriptem a odpauzujete přehrávačem, "rozhodíte ho", je potřeba odpauzovat script(ikdyž hudba už jede) a další signál player_pause normálně provede pauzu. jediné řešení co mě napadlo je asi úprava mocp a na tu se necítím...
Závěr:
Pokud Vás napadnou lepší řešení jak celého problému, případně se Vám něco nezdá v kódu pište do diskuze, rád se přiučím a pokud se to někomu bude hodit napište určitě případně i kontakt ať můžu dát vědět když budou nějaké novinky...
Protože se mi sem na abc nepodařilo vložit jako přílohu textový soubor, tak jsem to prozatím dal k sobě na server... díky za pochopení
Tiskni
Sdílej:
#-------- Hlasitost ---------------------------------------------------------- key "Super+Delete" amixer -q set Master 4%- # lower volume key "Super+Insert" amixer -q set Master 4%+ # raise volume key "Super+Home" amixer -q set PCM 4%+ # lower volume key "Super+End" amixer -q set PCM 4%- # lower volume key "Super+Page_Up" sh -c "if pgrep amarokapp; then amixer -q set Master 4%+; else mpc volume +2; fi" key "Super+Page_Down" sh -c "if pgrep amarokapp; then amixer -q set Master 4%-; else mpc volume -2; fi" key "Super+a" xterm -e alsamixer key "Super+Shift+a" xterm -e alsamixer -c 1 #-------- amarok, mpc ---------------------------------------------------------- key "Super+b" sh -c "if pgrep amarokapp; then amarok -f; else mpc next; fi" key "Super+z" sh -c "if pgrep amarokapp; then amarok -r; else mpc prev; fi" key "Super+c" sh -c "if pgrep amarokapp; then amarok --pause; else mpc pause; fi" key "Super+x" sh -c "if pgrep amarokapp; then amarok -p; else mpc play; fi" key "Super+v" sh -c "if pgrep amarokapp; then amarok -s; else mpc stop; fi" key "Super+n" sh -c "if pgrep amarokapp; then false; else mpc random on; mpc next; mpc random off; fi"To je celé
Protože se mi sem na abc nepodařilo vložit jako přílohu textový souborTo jsem obešel tak, že jsem byl první, kdo si svůj zápisek komentoval a onen soubor byl v onom prvním komentáři, kam již vložit jde.
#!/bin/bash POMS=`mocp -i | grep State: | head -1 | sed 's/: /\n/' | tail -1` if [ "$POMS" = "PLAY" ]; then mocp -P fi if [ "$POMS" = "PAUSE" ]; then mocp -U fi if [ "$POMS" = "STOP" ]; then mocp -p fimocp-next.sh:
#!/bin/bash mocp -fmocp-info.sh:
#!/bin/bash mocp -i | gmessage -nearmouse -file -Mam ale par problemov ktore sa mi nepodarilo zatial vyriesit: - po vypnuti pocitaca si nepamata poziciu kde prestal, takze kazdy den zacina odznova - krmim ho cez icecream z internetoveho radia a asi icecream nepresne rozdeluje konce pesniciek ked ho dam stahovat po 1 pesnicke, to musi byt preto lebo priebezne musim stiahnute pesnicky pridavat do playlistu, takze na konci kazdej pesnicky pocujem kusok nasledujucej, a na zaciatku zase kusok predoslej. Asi to poriesim tak ze jeden proces bude kontinualne stahovat cez icecream (ked stahuje kontinualne tak tam tie nepresnosti niesu) a druhym procesom budem monitorovat adresar a ked pribudne subor tak to pridam do playlistu
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.