Archive for September, 2011

Regolare volume Pulseaudio

Se si necessita di un programma che regoli il volume di Pluseaudio da riga di comando, è possibile usare il seguente script:

#!/usr/bin/ruby
def current
  c = IO::popen("pacmd \"list-sinks\" | grep volume | head -1").readlines[0]
  return c.split(" ").last.sub("%", "").strip.to_i
end
 
def max
  c = IO::popen("pacmd \"list-sinks\" | grep \"volume steps\" | head -1").readlines[0]
  return c.split(" ").last.strip.to_i - 1
end
 
def index
  c = IO::popen("pacmd \"list-sinks\" | grep index | head -1").readlines[0]
  return c.split(" ").last.strip.to_i
end
 
def set(v)
  IO::popen("pacmd \"set-sink-volume #{index} #{v}\"").readlines
end
 
def muted
  c = IO::popen("pacmd \"list-sinks\" | grep muted | head -1").readlines[0]
  return c.split(" ").last.strip == "yes"
end
 
def toggle
  t = 1
  if ( muted )
    t = 0
  end
  IO::popen("pacmd \"set-sink-mute #{index} #{t}\"").readlines
end
 
interval = 5
 
if ( ARGV.size == 0 )
  puts current
elsif (ARGV[0] == "?" )
  puts muted
elsif ( ARGV[0] == "+" )
  set([current + interval, 100].min * (max / 100.0).round)
elsif ( ARGV[0] == "-" )
  set([current - interval, 0].max * (max / 100.0).round)
elsif ( ARGV[0] == "!" )
  toggle
end

Con i poteri di root, incollarlo dentro un file /usr/bin/pavol e renderlo eseguibile con:

sudo chmod +x /usr/bin/pavol

I requisiti di questo script sono l’installazione di ruby:

sudo aptitude install ruby

mentre per l’utilizzo si rispecchia la seguente sintassi:

pavol +

aumenta il volume

pavol -

diminuisce il volume

pavol !

muta

Fonte: [lm]azy

Creare un DE con Flwm

Nel caso in cui volessimo creare un desktop environment personalizzato, dedicato solamente ad uno o più programmi, senza aver il peso delle restanti funzioni presenti in Xfce o Gnome, si deve creare un file .desktop che permette una scelta aggiuntiva all’interno del login manager (Gdm di solito). Per farlo, innanzitutto creare il suddetto file di avvio con:

sudo nano /usr/share/xsessions/my_xsession.desktop

e all’interno inserire quanto segue:

[Desktop Entry]
Name=My XSession
Comment=My personal XSession
Exec=/opt/xsession.sh
X-Ubuntu-Gettext-Domain=gdm

ovviamente “name” e “comment” sono personalizzabili, come lo script di avvio “exec” può essere posto in qualsivoglia punto del disco. Editare lo script exec, dove va inserito tutto quello che la sessione dovrà eseguire in automatico. Il contenuto potrebbe essere simile a questo:

#!/bin/bash
flwm -x &
WindowManager=$!
xclock -digital -strftime "%H:%M" -fg green -bg black -geometry -0+0 &
start-pulseaudio-x11 &
xbindkeys &
vlc &
wait $WindowManager

Nel file si fa riferimento a Flwm, ovvero fast light windows manager, serve ad avere un minimo di gestione delle finestre, evitando così le sovrapposizioni tra i vari programmi. Nonché permette di avere un semplice menu con cui in caso poter aprire applicazioni non inserite nell’avvio automatico. L’implementazione del menu Flwm è alquanto semplice, bisogna creare una cartella col comando:

mkdir ~/.wmx

e all’interno di questa inserire dei link simbolici facenti capo ai vari programmi. Il risultato si ottiene usando una serie di comandi tipo:

ln -s /usr/bin/xfce4-terminal ~/.wmx/1_Terminal
ln -s /usr/bin/pavucontrol ~/.wmx/2_Pavucontrol
ln -s /usr/bin/firefox ~/.wmx/3_Firefox
ln -s /usr/bin/thunderbird ~/.wmx/4_Thunderbird

Ultima nota è data all’impostazione dei tasti multimediali, in quanto questi non sempre vengono riconosciuti al di fuori dei DE più strutturati. Un modo semplice è associare i tasti a degli script con xbindkeys, in modo che alla pressione del tasto lo script venga eseguito. Si procede creando il file di configurazione con:

touch .xbindkeysrc

una volta fatto questo, bisogna trovare i codici dei tasti multimediali interessati. Per farlo bisogna uscire dal DE ed entrare in una console con control-alt-f1, qui eseguire il comando:

xbindkeys -k

se il tasto è riconosciuto, la risposta dovrebbe essere simile alla seguente:

"(Scheme function)"
    m:0x0 + c:121
    XF86AudioMute

ora basta inserire questo codice all’interno del file .xbindkeysrc, ovviamente cambiando la riga “(Scheme function)” con il comando relativo da lanciare. Infine quindi all’interno del file .xbindkeysrc avremo la corrispondenza di tutti i tasti, in un formato molto simile a questo:

"pavol !"
    m:0x0 + c:121
    XF86AudioMute
"pavol -"
    m:0x0 + c:122
    XF86AudioLowerVolume
"pavol +"
    m:0x0 + c:123
    XF86AudioRaiseVolume