Čvc 17

MOCPlayer 4 – Zobrazenie práve prehrávanej skladby v stavovom riadku

Štvrtý článok v poradí venujúci sa môjmu obľúbenému audiopredrávaču MOCPlayer bude venovaný zobrazeniu práve prehrávanej skladby na status bare. Skripty, ktoré som vytvorila na 100%  fungujú s i3blocks a polybar. Oboznámime sa s nastaveniami pre oba bary slúžiace na zobrazenie rozličných výstupov..

 

 

Konfigurácia i3blocks

Viac o i3blocks v mojom článku.

Pomocou nejakého textového editoru si otvoríme základný konfiguračný súbor (cestu upravte podľa lokalizácie):

gedit ~/.config/i3/i3blocks.conf

 

Zobrazenie výstup iba z jedného skriptu:

## Media player

[mocp]
interval=1
command=echo "$($HOME/.config/i3/i3blocks/mocp) <span color='#303d44'></span>"; [[ -z "${BLOCK_BUTTON}" ]] || $HOME/.config/i3/Scripts/mocp_control_rofi &
color=#4f6571

Tí, ktorí i3blocks už upravovali vedia, že je potrebné mať všetky bloky v konfiguračnom súbore usporiadané tak, ako ich chceme vidieť vo výstupe.

interval určuje ako často sa má blok aktualizovať. Hodnota je udávaná v sekundách.
command určuje konkrétny príkaz pre spustenie vlastného skriptu alebo alebo terminálového príkazu. Ale ako v tomto prípade na úpravu farebnosti výstupu.
color určuje farbu výstupu
echo je príkaz , ktorý sa používa na výpis informácií
$($HOME/.config/i3/i3blocks/mocp) je v tomto prípade cesta ku skriptu
<span color=’#303d44′></span> určuje farbu pre konkrétny výstup. Môže sa jednať o znak, text, príkaz alebo skript.
; [[ -z “${BLOCK_BUTTON}” ]] || $HOME/.config/i3/Scripts/mocp_control_rofi & určuje, že po kliknutí na text výstupu sa vykoná akcia. V tomto prípade sa jedná o skript na ovládanie prehrávania cez rofi.
|| $HOME/.config/i3/Scripts/mocp_control_rofi & určuje, čo sa vykoná

 

Zobrazenie výstupu z viacerých skriptov:

## Media player

[mocp-r]
interval=1
command=echo "$($HOME/.config/i3/i3blocks/mocp_no-r)<span color='#303d44'></span>"; [[ -z "${BLOCK_BUTTON}" ]] || mocp -r &
color=#4f6571


[mocp-t]
interval=1
command=echo "$($HOME/.config/i3/i3blocks/mocp_no-t)<span color='#303d44'></span>"; [[ -z "${BLOCK_BUTTON}" ]] || mocp -G &
color=#4f6571


[mocp-f]
interval=1
command=echo "$($HOME/.config/i3/i3blocks/mocp_no-f)<span color='#303d44'></span>"; [[ -z "${BLOCK_BUTTON}" ]] || mocp -f &
color=#4f6571


[mocp]
interval=1
command=echo "$($HOME/.config/i3/i3blocks/mocp_no) <span color='#303d44'></span>"; [[ -z "${BLOCK_BUTTON}" ]] || $HOME/.config/i3/Scripts/mocp_control_rofi &
color=#4f6571

Tí, ktorí i3blocks už upravovali vedia, že je potrebné mať všetky bloky v konfiguračnom súbore usporiadané tak, ako ich chceme vidieť vo výstupe. mocp-r, mocp-t a mocp-f sú skripty pre zobrazenie ovládacích prvkov. Upozorňujem, ide o narýchlo riešenie. Z týchto troch skriptov uvediem iba jeden. Vyzerajú identicky až na rozdielnu ikonu. Ikony sa dajú nájsť napríklad tu.

interval určuje ako často sa má blok aktualizovať. Hodnota je udávaná v sekundách.
command určuje konkrétny príkaz pre spustenie vlastného skriptu alebo alebo terminálového príkazu. Ale ako v tomto prípade na úpravu farebnosti výstupu.
color určuje farbu výstupu
echo je príkaz , ktorý sa používa na výpis informácií
$($HOME/.config/i3/i3blocks/mocp_no-r) je v tomto prípade cesta ku skriptu
<span color=’#303d44′></span> určuje farbu pre konkrétny výstup. Môže sa jednať o znak, text, príkaz alebo skript.
; [[ -z “${BLOCK_BUTTON}” ]] || mocp -r & určuje, že po kliknutí na text výstupu sa vykoná akcia. V tomto prípade sa jedná o skript, ktorý začne prehrávať predošlú skladbu.
|| mocp -r & určuje, čo sa vykoná

 

Konfigurácia polybar

Viac o polybar v mojej sérii článkov. Výstupy sú identické ako pre i3blocks.

Pomocou nejakého textového editoru si otvoríme konfiguračný súbor, v ktorom sú zadefinované nastavenia pre jednotlivé moduly:

gedit ~/.config/polybar/config

Vytvoríme (alebo vyhľadáme) si potrebnú sekciu:

[module/mocp]
type = custom/script
interval = 1
format = <label>
format-prefix-font = 5
format-prefix-padding-left = 0
format-prefix-padding-right = 0
;format-prefix = "  "
format-prefix-background = ${colors.background}
format-prefix-foreground = ${colors.background-alt}
label-background = ${colors.background}
label-foreground = ${colors.background-alt}
exec = ~/.config/polybar/Scripts/mocp
click-left = $HOME/.config/polybar/Scripts/mocp__control_rofi &

[module/mocp] určuje o aký modul sa jedná. Taktiež určuje názov, pod ktorým ho budeme definovať.
type = custom/script určuje, že sa jedná o vlastný skript.
interval = 1 určuje interval obnovenia v sekundách.
format = <label> určuje formát výstupu na label. V tomto prípade sa výstup berie zo skriptu.
format-prefix-font = 5 určuje písmo predpony.
format-prefix-padding = 0 určuje zarovnanie predpony.
;format-prefix = ”  “ určuje označenie predpony. Jedná sa o zakomentovaný parameter.
format-prefix-background = ${colors.background} určuje farbu pozadia predpony.
format-prefix-foreground = ${colors.background-alt} určuje farbu popredia predpony.
label-background = ${colors.background} určuje farbu pozadia výstupu.
label-foreground = ${colors.background-alt} určuje farbu popredia výstupu.
exec = ~/.config/polybar/Scripts/mocp určuje cestu u skriptu s výstupom.
click-left = $HOME/.config/polybar/Scripts/mocp__control_rofi & určuje akciu pre ľavý klik. V tomto prípade sa spustí skript na kontrolu ovládania cez rofi.

Ak chceme zobraziť výstup z viacerých skriptov, musíme ich samozrejme zadefinovať každý zvlášť. Uvedieme si jeden príklad za všetky:

[module/mocp-r]
type = custom/script
interval = 1
format-prefix-font = 5
format-prefix-padding = 0
format-prefix = " "
format-prefix-background = ${colors.background}
format-prefix-foreground = ${colors.background-alt}
label-background = ${colors.background}
label-foreground = ${colors.background-alt}
exec = ~/.config/polybar/Scripts/mocp-no
click-left = mocp -r

 

Na to, aby sa nám moduly zobrazili, ich musíme zapísať v inej sekcii základného konfiguračného súboru (alebo súboru, v ktorom sa nachádza):

gedit ~/.config/polybar/config

Vyhľadáme si:

modules-left = 
modules-center = 
modules-right =

A moduly pridáme na požadovanú stranu. left ich umiestní vľavo, center uprostred a right vpravo.

 

Jednotlivé skripty

mocp_no (skript, ktorý nezobrazí informácie, iba to, či sa prehráva alebo je pozastavené):

#!/bin/bash

STATUS=$(mocp -i | grep "State:" | sed -e "s/^.*: //")
TITLE=$(mocp -i | grep "^Title:" | sed -e "s/^.*: //")
ARTIST=$(mocp -i | grep "Artist:" | sed -e "s/^.*: //")
SONGTITLE=$(mocp -i | grep "SongTitle:" | sed -e "s/^.*: //")


if [[ $STATUS == PLAY ]]; then
 echo -e "  Prehráva sa "
fi

if [[ $STATUS == PAUSE ]]; then
 echo -e "  Pozastavené "
fi

if [[ ! -z $(pidof mocp) ]] &>/dev/null 2>&1; then
 echo -e " "
else echo -e " "
fi

 

mocp_no-r (skript pre i3blocks na začatie prehrávania predchádzajúcej skladby):
mocp_no-f (skript pre i3blocks na začatie prehrávania nasledujúcej skladby):
mocp_no-t (skript pre i3blocks na opakované pozastavenie a prehratie skladby):

#!/bin/bash

STATUS=$(mocp -i | grep "State:" | sed -e "s/^.*: //")
TITLE=$(mocp -i | grep "^Title:" | sed -e "s/^.*: //")
ARTIST=$(mocp -i | grep "Artist:" | sed -e "s/^.*: //")
SONGTITLE=$(mocp -i | grep "SongTitle:" | sed -e "s/^.*: //")

if [[ $STATUS == PLAY ]]; then
 echo -e ""
fi

if [[ $STATUS == PAUSE ]]; then
 echo -e ""
fi

if [[ ! -z $(pidof mocp) ]] &>/dev/null 2>&1; then
 echo -e " "
else echo -e " "
fi

 

Skript bez dodatočných “ovládacích prvkov” a s ovládaním pomocou troch klikov myšou:

#!/bin/bash

STATUS=$(mocp -i | grep "State:" | sed -e "s/^.*: //")
TITLE=$(mocp -i | grep "^Title:" | sed -e "s/^.*: //")
ARTIST=$(mocp -i | grep "Artist:" | sed -e "s/^.*: //")
SONGTITLE=$(mocp -i | grep "SongTitle:" | sed -e "s/^.*: //")

#if [[ $STATUS == PLAY ]]; then
# if [[ $TITLE != "" ]]; then
# if [[ $ARTIST != "" ]]; then ARTIST="$ARTIST -"; fi
# echo -e " $ARTIST $SONGTITLE"
# else echo -e " Prehráva sa "
# fi
#fi

if [[ $STATUS == PLAY ]]; then
 echo -e "  Prehráva sa "
fi

if [[ $STATUS == PAUSE ]]; then
 echo -e "  Pozastavené "
fi

case $BLOCK_BUTTON in
 1) mocp -f ;; # left click = next song
 2) mocp -G ;; # middle click = toggle pause - play
 3) mocp -r ;; # right click = previous song
esac
exit 0

if [[ ! -z $(pidof mocp) ]] &>/dev/null 2>&1; then
 echo -e " "
else echo -e " "
fi

case $BLOCK_BUTTON in určuje, že sa nad výstup dajú vykonávať akcie myšou. Rozoznávame 5 druhov akcií. 1 patrí ľavému kliku. 2 patrí kliku kolečkom. 3 patrí pravému kliku. 4 patrí skrolovaniu hore. 5 patrí skrolovaniu dole.

 

Skript bez dodatočných “ovládacích prvkov”, s maximálnym počtom znakov a s oládaním pomocou troch klikov myšou:

#!/bin/bash

STATUS=$(mocp -i | grep "State:" | sed -e "s/^.*: //")
TITLE=$(mocp -i | grep "^Title:" | sed -e "s/^.*: //")
ARTIST=$(mocp -i | grep "Artist:" | sed -e "s/^.*: //")
SONGTITLE=$(mocp -i | grep "SongTitle:" | sed -e "s/^.*: //")
MAX=40
LENGHT="$(echo "$SONGTITLE" | wc -c)"
offset="$MAX"
#let offset=offset-2

if [[ "$LENGHT" -gt "$MAX" ]]; then
 SONGTITLE_SHORT="$(echo $SONGTITLE | cut -b 1-${offset})..."
 SONGTITLE="${SONGTITLE_SHORT}"
fi

if [[ $STATUS == PLAY ]]; then
 if [[ $TITLE != "" ]]; then
 if [[ $ARTIST != "" ]]; then ARTIST="$ARTIST -"; fi
 echo -e " $ARTIST $SONGTITLE"
 else echo -e " Prehráva sa "
 fi
fi

if [[ $STATUS == PAUSE ]]; then
 echo -e "  Pozastavené "
fi

case $BLOCK_BUTTON in
 1) mocp -f ;; # left click = next song
 2) mocp -G ;; # middle click = toggle pause - play
 3) mocp -r ;; # right click = previous song
esac
exit 0

if [[ ! -z $(pidof mocp) ]] &>/dev/null 2>&1; then
 echo -e " "
else echo -e " "
fi

case $BLOCK_BUTTON in určuje, že sa nad výstup dajú vykonávať akcie myšou. Rozoznávame 5 druhov akcií. 1 patrí ľavému kliku. 2 patrí kliku kolečkom. 3 patrí pravému kliku. 4 patrí skrolovaniu hore. 5 patrí skrolovaniu dole.

 

Po každej úprave konfigurácie je potrebné i3wm reštartovať pomocou klávesovej skratky:

$mod+Shift+r

 

Napsat komentář

Your email address will not be published.

%d blogerům se to líbí: