El se tudom képzelni hogy akadjon a világban egyetlen ember is, aki hallott ugyan a MOC zenelejátszó programról, de mégsem azt használja! Na de a világon mindent lehet mindig jobbá tenni...
Ugye e remek program minden leállításnál megjegyzi az épp aktuális playlistet (amennyiben használtunk olyat). Milyen jó is lenne, ha úgy indíthatnánk egyetlen gombnyomásra, hogy rögvest elkezdje lejátszani az utoljára játszott playlistet, anélkül hogy ehhez terminált kéne nyitogatnunk, meg entert nyomkodnunk meg ilyenek!
Nos, az alábbi szkript ezt tudja, sőt többet is! A kezelése rém egyszerű: mentsük el mondjuk "mocstart" névvel valami könyvtárba ami benne van a $PATH -unkban (persze adjunk rá futtatási jogot is...) majd a használata annyiból áll, hogy ki kell adnunk ezt az iszonyatosan bonyolult, roppantul komplex parancsot:
mocstart
Úgy van, nem kell hozzá paraméter! Hogy ekkor mit csinál, azt el lehet olvasni a szkript elején az "echo"-val kezdődő sorokban. Illetve ki is írja, ha mégis paraméterrel indítjuk, például úgy, hogy
mocstart -h
Na most e szkript akkor igazán hasznos, ha rákötjük mondjuk az xbindkeys progi által egy gyorsbillentyűre. Például így, hogy belevesszük ezt a $HOME/.xbindkeysrc állományba:
# Play/Pause (CapsLock+Tab)
"/Programs/Szkriptjeim/Current/bin/mocstart"
Mod3 + c:23
Nekem a CapsLock egy Mod3 módosítóbillentyűre van átmappelve, az az elenyésző számú ízlésficamos user a világban akinél ez nem így van, találjon ki más billentyűkombinációt. No most eszerint amikor indul a rendszer, s felállt a grafikus felület, csak megnyomom e billentyűkombinációt, s azonnal játszani kezd a moc, nem kell külön elindítani! Ha meg már játszik, ugyanezzel a gombbal leállíthatom vagy újraindíthatom a zenét! Persze a /Programs... stb helyett a szkript aktuális elérési útvonalát írja be mindenki.
A szkript:
#!/bin/bash
if [[ $1 == "?" ]] || [[ $1 == "-?" ]] || [[ $1 == "-h" ]] || [[ $1 == "--help" ]] ; then
echo "E szkriptet készítette: Viola Zoltán ( violazoli@gmail.com )"
echo "Licenc: GPL"
echo "Mit csinál:"
echo "Ha nincs elindítva a mocp zenelejátszó (szerver)program, elindítja azt,"
echo "majd elindítja azzal a korábban elmentett zenelista lejátszását, annak első számától kezdve."
echo "Amennyiben a mocp már fut, de le van állítva (azaz épp nem játszik egy számot sem, tehát \"STOP\""
echo "státuszben van) akkor az aktuális zenelista lejátszását indítja el az első számtól."
echo "Ha a mocp már fut, és épp játszik egy zeneszámot, annak lejátszását felfüggeszti (PAUSE)."
echo "Ha a mocp már fut de épp \"PAUSE\" státuszban van, azaz felfüggesztve van egy szám lejátszása,"
echo "akkor annak lejátszását folytatja."
echo "Használat:"
echo "mocstart"
echo "mocstart \\? — kiírja ezt a helpet"
echo "mocstart -? — kiírja ezt a helpet"
echo "mocstart -h — kiírja ezt a helpet"
echo "mocstart --help — kiírja ezt a helpet"
exit 0
fi
ERR=`mocp -i 2>&1 | grep "The server is not running!"`
if [[ $ERR != "" ]] ; then
mocp -S
mocp -p
exit 0
fi
STATUSZ=`mocp -i | grep "State: PAUSE"`
if [[ $STATUSZ != "" ]] ; then
mocp -G
exit 0
fi
STATUSZ=`mocp -i | grep "State: PLAY"`
if [[ $STATUSZ != "" ]] ; then
mocp -G
exit 0
fi
STATUSZ=`mocp -i | grep "State: STOP"`
if [[ $STATUSZ != "" ]] ; then
mocp -p
exit 0
fi
-------------------------------------------------------------------------------------0
Eddig a szkript. Felhívom a figyelmet a szkript e sorában levő trükkre:
ERR=`mocp -i 2>&1 | grep "The server is not running!"`
Itt tesztelem le, a szerver fut-e már. De mert ha nem fut, akkor a hibaüzenetet nem a szokványos helyre írja ki hanem a hibacsatornára, még ha az meg is egyezik épp a "szokványos hellyel", azaz a képernyővel, emiatt a hibacsatornát át kell irányítanom a normál kimenetre, ezt végzi a 2>&1 rész a sorban, s csak ezután küldhetem tovább az üzenetet további feldolgozásra a grep-nek.