To, co si nechávám v Conky zobrazovat, je vidět na úvodním obrázku. Na prvním řádku je vypsán právě aktivní výstup ALSA, včetně bitové hloubky převodníku a momentálně používané vzorkovací frekvence. To je info z kernelu. Pokud bude těch výstupů aktivních více (na mém systému jsou 3 zvukovky a PA je schopno posílat různé zdroje na různé výstupy), budou pod sebou všechny.
Pod čarou je výchozí zvuková karta PA, včetně aktuálních parametrů. Najdete tam v jakém se nachází stavu, hlasitost všech kanálů, aktuální latenci a aktuální (nebo poslední, pokud je neaktivní) parametry zvuku na mixeru. Na konci je výčet právě přehrávaných zdrojů na vstupu PA, včetně výstupních zařízení, na které jsou směrovány.
Tím jsem tedy pokryl mé konkrétní požadavky na informace o zvukovém systému, ze kterých vyčtu vše potřebné od vstupu po výstup.
painfo umí ještě vypsat všechny registrované zvukové karty v systému.
A samotný skript painfo vypadá následovně, obsahuje i nápovědu, takže pokud dostane neznámý, nebo žádný argument, napoví. Krom výše zmíněného umí ještě vypsat všechny registrované zvukové karty v systému.
painfo
#!/bin/bash list_running_outputs() { egrep -r "rate:" /proc/asound/card*/pcm*p | sed 's/.*\(card[0-9]\/pcm[0-9]p\).* \([0-9]\+\) (.*/\1\n\2/'|\ while read card; do id=$(cat /proc/asound/$card/info | sed -n '/^name:/s/name: \(.*\)/\1/p'); format=$(awk '/^format/{print $2}' /proc/asound/$card/sub0/hw_params|sed 's/.*\([0-9]\{2\}\).*/\1/'); read freq; freq=$(echo "$freq/1000"|bc); echo $id ${format}bit/${freq}kHz done } list_running_outputs_conky() { list_running_outputs | while read line; do [[ -z $l ]] && echo -n "Using: "; l=1; echo $line | sed 's/^/${alignr}/'; done } get_default_card_name() { pacmd list-sinks | sed -n '/*/,/alsa.name/s/.*alsa.name.*"\([^"]\+\).*/\1/p' } list_default_card_parameters() { pacmd list-sinks | sed -n '/*/,/sample spec:/p' |\ sed -n '/state:\|[^ ]volume:\|current latency:\|sample spec:/p' |\ sed 's/^\W*//; s/^./\u&/' } list_default_card_parameters_conky() { list_default_card_parameters | sed 's/: \| = /:${alignr}/' } list_cards() { cat /proc/asound/cards } list_cards_conky() { list_cards | sed -n '/[0-9]/s/\( [0-9]\).*: \(.*\)/Card \1:${alignr}\2/p' } list_input_streams() { pacmd list-sink-inputs |\ sed -n 's/.*sink: \([0-9]\+\).*/\1/p; s/.*application.name = "\([^"]\+\)./\1/p'|\ while read index; do name=$(pacmd list-sinks | sed -n "/index: $index/,/alsa.name/s/.*alsa.name = \"\([^\"]\+\).*/\1/p"); read app; echo "$app - $name"; done } list_input_streams_conky() { list_input_streams | sed -n 's/^/${alignr}/p' | grep '^' || echo '${alignr}none' } print_help() { exec 3>&1>&2 echo "Usage: painfo [Option]" echo "Options:" echo -e "\t list-cards (lc)" echo -e "\t list-input-streams (lis)" echo -e "\t list-running-outputs (lro)" echo -e "\t get-default-card (gdc)" echo -e "\t list-default-card-parameters (ldcp)" echo "For Conky formated output append '-conky' ('c') at the end of option string" exec >&3- } case $1 in list-running-outputs|lro) list_running_outputs;; get-default-card|gdc) get_default_card_name;; list-default-card-parameters|ldcp) list_default_card_parameters;; list-cards|lc) list_cards;; list-input-streams|lis) list_input_streams;; list-running-outputs-conky|lroc) list_running_outputs_conky;; list-default-card-parameters-conky|ldcpc) list_default_card_parameters_conky;; list-cards-conky|lcc) list_cards_conky;; list-input-streams-conky|lisc) list_input_streams_conky;; *) print_help;; esac
Skript mám uložený v ~/bin, abych při jeho volání nemusel zadávat cestu, a volat ho lze s dlouhými, nebo zkrácenými parametry, jak je uvedeno v nápovědě. Pro vypsání výběru parametrů výchozí karty můžete použít
painfo list-default-card-parameters
nebo
painfo ldcp
Pro verzi formátovanou pro (mé) Conky, pak jen doplníte argument
painfo list-defult-card-parameters-conky
nebo
painfo ldcpc
atd.
V Conky to pak u mě vypadá následovně, používám dlouhé argumenty pro srozumitelnost i po delší době.
${color1}${font sans:size=10:bold}Sound$color$font${alignr}${execp painfo list-running-outputs-conky}
${voffset -6}$color3$hr$color$font
Default Card:$alignr${exec painfo get-default-card}
${execp painfo list-default-card-parameters-conky}
Inputs:${execp painfo list-input-streams-conky}
${voffset -6}$color3$hr$color$font
Default Card:$alignr${exec painfo get-default-card}
${execp painfo list-default-card-parameters-conky}
Inputs:${execp painfo list-input-streams-conky}
Tak to jen pro zajímavost a abych si to měl odkud zkopírovat, až si zas za týden omylem smažu /home při reinstalaci nové verze systému. Mimochodem, už se mi to Conky pomalu nevejde na obrazovku mého monitoru... Za což tedy mohou především početné filesystémy.
Žádné komentáře:
Okomentovat
Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.
Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.