To mój skrypt wyświetlający status moc przez osd, po drobnych przeróbkach powinien się sprawdzić
#!/bin/bash font=-dejavu-*-*-r-*-*-*-*-*-*-m-*-*-* align=left possition=bottom colour=yellow info=/tmp/mocinfo osd="osd_cat -f $font -A $align -p $possition -c $colour" if [ `pgrep mocp | wc -l` -eq 0 ] then echo "MOC wyłączony" | $osd -o "-40" exit fi mocp -i > $info if [ `cat $info | grep -x "State: STOP" | wc -l` -eq 1 ] then echo "MOC zatrzymany" | $osd -o "-40" exit fi artist=`cat $info | grep Artist: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` title=`cat $info | grep SongTitle: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` album=`cat $info | grep Album: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` ctime=`cat $info | grep CurrentTime: | awk '{print $2}'` ttime=`cat $info | grep TotalTime: | awk '{print $2}'` csec=`cat $info | grep CurrentSec: | awk '{print $2}'` tsec=`cat $info | grep TotalSec: | awk '{print $2}'` percentage=`echo "$csec*100/$tsec" | bc` if [ `cat $info | grep -x "State: PAUSE" | wc -l` -eq 1 ] then echo $artist - $title [$ctime/$ttime] - Pauza | $osd -o 10 & echo $album | $osd -o "-15" & $osd -b slider -P $percentage -o 25 exit fi if [ `cat $info | grep -x "State: PLAY" | wc -l` -eq 1 ] then echo $artist - $title [$ctime/$ttime] | $osd -o 10 & echo $album | $osd -o "-15" & $osd -b slider -P $percentage -o 25 exit fi
Offline
A nie prościej dopisać do .conkyrc:
${if_running mocp}${color SlateGray3}MOCP: ${color SlateGray3}Wykonawca: ${color }${exec mocp -i | sed -n -e 's/\(Artist:\) \(.*\)/\2/p'} ${color SlateGray3}Tytuł: ${color }${exec mocp -i | sed -n -e 's/\(SongTitle:\) \(.*\)/\2/p'} ${color SlateGray3}Album: ${color }${exec mocp -i | sed -n -e 's/\(Album:\) \(.*\)/\2/p'}${endif}
Offline
endel napisał(-a):
Za czasow jak szukalem takiej funkcji, conky nie obslugiwalo mocp - dobrze wiedziec ze juz obsluguje, dzieki.
Jezeli kiedys nie obslugiwalo, to teraz tak samo nie obsluguje jak wtedy
${if_running COMMAND}... ${endif} ${exec COMMAND} ${execi 10 COMMAND}
To nie sa dedykowane komendy do mocp (jak przy mpd na przyklad), mozna ich uzyc do kazdej innej komendy, miedzy innymi mocp.
Offline
vermaden napisał(-a):
endel napisał(-a):
Za czasow jak szukalem takiej funkcji, conky nie obslugiwalo mocp - dobrze wiedziec ze juz obsluguje, dzieki.
Jezeli kiedys nie obslugiwalo, to teraz tak samo nie obsluguje jak wtedy
Kod:
${if_running COMMAND}... ${endif} ${exec COMMAND} ${execi 10 COMMAND}To nie sa dedykowane komendy do mocp (jak przy mpd na przyklad), mozna ich uzyc do kazdej innej komendy, miedzy innymi mocp.
Oj, nie przyjrzalem sie Ale tak czy inaczej pomysl niezly.
Offline
#!/bin/bash font=-dejavu-*-*-r-*-*-*-*-*-*-m-*-*-* align=left possition=bottom colour=yellow info=/tmp/mocinfo osd="osd_cat -f $font -A $align -p $possition -c $colour" if [ `pgrep mocp | wc -l` -eq 0 ] then echo "MOC wyłączony" | $osd -o "-40" exit fi mocp -i > $info if [ `cat $info | grep -x "State: STOP" | wc -l` -eq 1 ] then echo "MOC zatrzymany" | $osd -o "-40" exit fi artist=`cat $info | grep Artist: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` title=`cat $info | grep SongTitle: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` album=`cat $info | grep Album: | awk '{print $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}'` ctime=`cat $info | grep CurrentTime: | awk '{print $2}'` ttime=`cat $info | grep TotalTime: | awk '{print $2}'` csec=`cat $info | grep CurrentSec: | awk '{print $2}'` tsec=`cat $info | grep TotalSec: | awk '{print $2}'` percentage=`echo "$csec*100/$tsec" | bc` if [ `cat $info | grep -x "State: PAUSE" | wc -l` -eq 1 ] then echo $artist - $title [$ctime/$ttime] - Pauza | $osd -o 10 & echo $album | $osd -o "-15" & $osd -b slider -P $percentage -o 25 exit fi if [ `cat $info | grep -x "State: PLAY" | wc -l` -eq 1 ] then echo $artist - $title [$ctime/$ttime] | $osd -o 10 & echo $album | $osd -o "-15" & $osd -b slider -P $percentage -o 25 exit fi
Status MOC w osd? Super. też bym tak chciała, jakby mi ktoś tylko powiedział jak tego użyć. Mam to po prostu wkleić do .bash_profile?
Status mpd wyświetla mi conky, ale sonata wcale nie jest lekka, a innych klientów jakoś nie lubię.
Offline
anka napisał(-a):
Status MOC w osd? Super. też bym tak chciała, jakby mi ktoś tylko powiedział jak tego użyć.
Podbindować do jakiegoś skrótu klawiaturowego i jak potrzeba użyć go, w praktyce wygląda to tak: http://azhag.fluxboxpl.org/zrzuty/moc_osd.png
Dodatkowo od testowej wersji 2.5.0 MOC może wykonywać polecenie przy zmianie utworu (tytuł, wykonawca, album etc. mogą być argumentem), dzięki czemu można wyświetlać w OSD zmiany piosenek automagicznie (zresztą nie tylko do tego służy). Instrukcja jest w przykładowym konfigu
# OnSongChange # Specify the full path (i.e. no ~) of an executable to run # Arguments will be passed, and you can use the following escapes: # %a album # %r artist # %f filename # %t title # %n track # # No pipes/redirects can be used directly, but writing a shell # script can do the job.
U mnie wygląda to tak: w ~/.moc/config znajduje się ścieżka do skryptu z argumentami:
OnSongChange = "/home/azhag/.skrypty/moc_song_change %a ||| %t ||| %r ||| %d"
a treść skryptu to:
#!/bin/zsh FOO=`echo $@ | sed 's/ ||| /\n/g'` ARTIST=`echo $FOO | sed -n '1p'` TITLE=`echo $FOO | sed -n '2p'` ALBUM=`echo $FOO | sed -n '3p'` TIME=`echo $FOO | sed -n '4p'` if [ -n "$ARTIST" ] && [ -n "$TITLE" ] && [ -n "$ALBUM" ]; then ## ## OSD ## export DISPLAY=:0.0 export XAUTHORITY=$HOME/.Xauthority font=-dejavu-*-*-r-*-*-*-*-*-*-m-*-*-* align=left possition=top colour=yellow killall osd_cat echo MOC: "$ARTIST" - "$TITLE" \["$ALBUM"\] | osd_cat -f $font -A $align -p $possition -c $colour & ## ## last.fm ## /usr/lib/lastfmsubmitd/lastfmsubmit --artist "$ARTIST" --title "$TITLE" --album "$ALBUM" --length "$TIME" fi
Jak widać za jego pomocą nie tylko wyświetlam przez OSD, ale też scrobbluję do last.fm — jeśli ktoś nie chce drugiej opcji to wystarczy zakomentować (samo scrobblowanie ze względu na konstrukcję — nie jest potrzebny pipe — można wpisać bezp. w ~/.moc/config).
Jeszcze jedna uwaga — ten skrypt jest napisany w zsh, jeśli ktoś woli basha (bo np. zsh nie używa i nie ma nawet zainstalowanego) to początek należy następująco zmienić:
#!/bin/bash FOO=`echo $@ | sed 's/ ||| /\\\n/g'` ARTIST=`echo -e $FOO | sed -n '1p'` TITLE=`echo -e $FOO | sed -n '2p'` ALBUM=`echo -e $FOO | sed -n '3p'` TIME=`echo -e $FOO | sed -n '4p'`
niestety bash jest ułomny i pewne rzeczy trzeba mu pisać na okrętkę
Ostatnio edytowany przez azhag (2007.11.29 11:49:51)
Offline
Podbindować do jakiegoś skrótu klawiaturowego i jak potrzeba użyć go
ale co wpisać po execu w ~/fluxbox/keys ? sorki ale nie wiem co tutaj należy wywołać. zrobiłeś extra poradnik krok po kroku, ale i tak głupiemu za trudno.
Offline
w keys powinien się znaleźć wpis tego typu:
Control Home :Exec ~/.skrypty/moc_osd.sh
szerzej jest to opisane w dokumentacji Fluksa: http://fluxbox.org/docbook/pl/html/c238.html
Offline
ja ten skrypt nazwałam moc_song_change. w ~/.fluxbox/keys dodałam wpis
Mod4 y :exec ~/.skrypty/moc_song_change.sh
i nic sie nie dzieje. a w skrypcie wkleiłam wszystko (nie mam pojęcia o bash i zsh...wiem, że zsh nie mam zainstalowanego, więc wkleiłam ten drugi początek).
Offline
No to zamotalem: ten drugi skrypt nie służy do wywoływania na żądanie przez skrót, tylko jest wywoływany automagicznie przez samego MOC-a (po dodaniu OnSongChange = "/ścieżka/do/moc_song_change.sh %a ||| %t ||| %r ||| %d" do konfigu; wymagana wersja 2.5.0alpha).
Do pokazywania statusu na żądanie przez skrót klawiaturowy służy ten pierwszy skrypt.
Oczywiście należy zainstalować w obu przypadkach program osd_cat.
Offline
Oczywiście należy zainstalować w obu przypadkach program osd_cat.
no właśnie...w repo nie ma. mogłabym prosić namiar na jakies źródełka...albo paczuszkę?
Offline
minio@pingwin ~ ]:-> aptitude show xosd-bin Nie można znaleźć pakietu "xosd-bin" z archiwum "Testing" Pakiet: xosd-bin Stan: niezainstalowany Wersja: 2.2.14-1.4 Priorytet: opcjonalny Sekcja: x11 Opiekun: Philipp Matthias Hahn <pmhahn@debian.org> Rozmiar rozpakowanego: 41,0k Wymaga: libc6 (>= 2.6.1-1), libx11-6, libxext6, libxinerama1, libxosd2 (>= 2.2.13) Opis: X On-Screen Display library - binary files This package contains binary files shipped with the X OSD library: osd_cat - a 'cat' like program which will display its output in an OSD-like window Homepage: http://www.ignavus.net/software.html Etykiety: interface::commandline, interface::x11, role::program, scope::utility, use::viewing, works-with::text, x11::application, x11::library
Offline
ja sie podepne do tematu, zeby nuie zakladac nowego
wszystko fajnie sobie zbindowalem i wyswietlanie informacji o moc mi dziala, z tym ze pasek, na ktorym powinien byc zaznaczony uplyw utworu stoi w miejscu
moj moc to:
Installed versions: 2.5.0_alpha3-r1(07:29:07 2008-05-13)(aac alsa flac mad musepack vorbis -curl -debug -ffmpeg -jack -libsamplerate -modplug -sid -sndfile -speex -timidity -wavpack)
aha, i jak podniesc ten komunikat o pare pikseli, nie chce go wyrzucic na gore, a tylko troche podniesc.
uwazam ze to powinno sie znalezc w howto
z gory dzieki i pozdrawiam
Ostatnio edytowany przez owoc jogobelli (2008.05.15 22:49:48)
Offline
owoc jogobelli napisał(-a):
wszystko fajnie sobie zbindowalem i wyswietlanie informacji o moc mi dziala, z tym ze pasek, na ktorym powinien byc zaznaczony uplyw utworu stoi w miejscu
pokaż przykładowy wynik: mocp -i
owoc jogobelli napisał(-a):
aha, i jak podniesc ten komunikat o pare pikseli, nie chce go wyrzucic na gore, a tylko troche podniesc.
osd_cat --help (...) -o, --offset=OFFSET Vertical Offset
Ostatnio edytowany przez azhag (2008.05.16 09:19:10)
Offline
State: PLAY File: /home/vesol/pliki/Lao Che - Gospel (2008)/02. Czarne kowboje.mpc Title: Gospel [2] :: Lao Che - Czarne kowboje Artist: Lao Che SongTitle: Czarne kowboje Album: Gospel TotalTime: 05:06 TimeLeft: 02:53 TotalSec: 306 CurrentTime: 02:13 CurrentSec: 133 Bitrate: 269Kbps AvgBitrate: 274Kbps Rate: 44KHz
aha i jeszcze jak zamykam ststem, to w konsoli widze bledy, ze "bc" nie moze wykonac czy tam bledny wpis. moze to ma z tym jakis zwiazek?
z gory dzieki i pozdrawiam
Ostatnio edytowany przez owoc jogobelli (2008.05.16 20:46:38)
Offline
nie wierze ze nikt nie potrafi pomoc
Offline
owoc jogobelli napisał(-a):
Kod:
TotalSec: 306 (...) CurrentSec: 133aha i jeszcze jak zamykam ststem, to w konsoli widze bledy, ze "bc" nie moze wykonac czy tam bledny wpis. moze to ma z tym jakis zwiazek?
z pewnością ma
pokaż wynik
echo 133*100/306 | bc
BTW, trochę przerobiłem skrypt
#!/bin/bash FONT=-dejavu-*-*-r-*-*-*-*-*-*-m-*-*-* ALIGN=left POSSITION=bottom COLOUR=yellow OSD="osd_cat -f $FONT -A $ALIGN -p $POSSITION -c $COLOUR" killall osd_cat 2>/dev/null if [ `pgrep mocp | wc -l` -eq 0 ] then echo "MOC wyłączony" | $OSD -o '-40' exit fi MOCINFO=$(mocp -i) if [ $(echo "$MOCINFO" | grep -x 'State: STOP' | wc -l) -eq 1 ] then echo "MOC zatrzymany" | $OSD -o '-40' exit fi ARTIST=$(echo "$MOCINFO" | grep ^Artist: | sed 's/^Artist: //i') TITLE=$(echo "$MOCINFO" | grep ^SongTitle: | sed 's/^SongTitle: //i') ALBUM=$(echo "$MOCINFO" | grep ^Album: | sed 's/^Album: //i') CTIME=$(echo "$MOCINFO" | grep ^CurrentTime: | sed 's/^CurrentTime: //i') TTIME=$(echo "$MOCINFO" | grep ^TotalTime: | sed 's/^TotalTime: //i') CSEC=$(echo "$MOCINFO" | grep ^CurrentSec: | sed 's/^CurrentSec: //i') TSEC=$(echo "$MOCINFO" | grep ^TotalSec: | sed 's/^TotalSec: //i') PERCENTAGE=$(echo "$CSEC*100/$TSEC" | bc) if [ $(echo "$MOCINFO" | grep -x "State: PAUSE" | wc -l) -eq 1 ] then echo $ARTIST - $TITLE [$CTIME/$TTIME] - Pauza | $OSD -o 10 & echo $ALBUM | $OSD -o '-15' & $OSD -b slider -P $PERCENTAGE -o 25 exit fi if [ $(echo "$MOCINFO" | grep -x "State: PLAY" | wc -l) -eq 1 ] then echo $ARTIST - $TITLE [$CTIME/$TTIME] | $OSD -o 10 & echo $ALBUM | $OSD -o '-15' & $OSD -b slider -P $PERCENTAGE -o 25 exit fi
wytrzebionych zostało kilka szczeniackich błędów, skrypt jest wydajniejszy i w ogóle pozytywnie wpływa na lasy deszczowe w Amazonii.
Ostatnio edytowany przez azhag (2008.05.18 16:48:56)
Offline
-su: bc: command not found
Offline
no to albo zainstaluj bc (sądziłem, że każdy go ma...), albo zmień stosowną linijkę na
PERCENTAGE=$((CSEC*100/TSEC))
aczkolwiek za tę drugą metodę nie ręczę, bash nie jest najlepszym kalkulatorem
Ostatnio edytowany przez azhag (2008.05.18 20:35:46)
Offline
Temat już troszkę stary, ale zacząłem się bawić osd w moc, bo na śmierć pokłuciłem się z mpd. Wyświetla mi się ładnie wykonawca, utwór i tytuł albumu przy każdej zmianie utworu, ale z tego co widzę w skrypcie, to powinienem mieć tez komunikaty o zapauzowaniu i zatrzymaniu moc. Czy autor, albo koledzy, którzy używają tego skryptu mają jakieś pomusły, co mogłem zrobić źle?
Edit:
A i jeszcze jedno. Jakbym chciał, żeby ten skrypt mi jednocześnie scrobblował muzykę przez lastfmsubmitd, to co powinienem do niego dokleić?
Ostatnio edytowany przez parrotlarch (2009.03.07 14:17:48)
Offline
parrotlarch napisał(-a):
A i jeszcze jedno. Jakbym chciał, żeby ten skrypt mi jednocześnie scrobblował muzykę przez lastfmsubmitd, to co powinienem do niego dokleić?
Offline
No tak. Czytałem oczywiście i modyfikowałem to na tysiąc sposobów. Pierwszy skrypt pozwala na scrobblowanie i wyświetlanie osd, ale ten drugi, rozwinięty, pozwalałby jescze wyświetlać zmiany statusu moc. Jednak w tym drugim nie umiem już dodać scrobblowania.
Offline