Home > Linux, Ubuntu > Volume Widget per Awesome 3.4 Windows Manager in Ubuntu 14.04 e 14.10

Volume Widget per Awesome 3.4 Windows Manager in Ubuntu 14.04 e 14.10

Aw_64   Awesome è un window manager in lua pulito ed essenziale che organizza efficacemente lo spazio video ed è altamente configurabile.

Per aumentarne la flessibilità si fa normalmente ricorso ai widgets oggetti che consentono di ottenere informazioni e interagire con sistema, window manager e X clients. Particolarmente comodo può risultare disporre di un widget per visualizzare  e controllare il volume. Di seguito viene riportato il codice presente in  Farhavens volume widget  modificato per funzionare in Ubuntu 14.04 e Ubuntu 14.10 con awesome 3.4 e pulseaudio.

Quando si opera con i widgets e in generale si modifica la configurazione di awesome è bene utilizzare un ambiente di test evitanto fastidiosi logout . L’ambiente di test può essere agevolmente predisposto grazie  a Xephyr. Xephyr è window system server che permette di avere sessioni X server all’interno di  finestre: Xephyr – X window system server in una finestra . In questo ulteriore post Testare awesome window manager con Xephyr  le indicazioni per la predisposizione dell’ambiente di test.

volumecfg.widget

Per disporre di un widget che consenta di visualizzare e controllare il volume in awesome 3.4 installato in Ubuntu 14.xx  si può seguire la seguente procedura:

Il codice del widget che segue andrà salvato nella propria home e precisamente nella cartella

.config/awesome

se la cartella  .config/awesome non esiste è necessario crearla.

da terminale si può utilizzare il comando:
> mkdir .config/awesome

Il codice del widget (volumecfg.widget) verrà salvato nel file volumecfg.lua. il percorsa completo risulterà:

.config/awesome/volumecfg.lua

Per quanto attiene al codice, la modifica sostanziale, in colore, consiste nell’utilizzo di un comando specifico per controllare il mute quando si opera in Ubuntu 14.xx e si ha installato il server audio pulseaudio.

Attenzione! Se si dispone di più schede audio, perchè il codice operi correttamente potrebbe essere necessario modificare la volume.cardid.  In questo caso la cardid = 0  è tipica di un  sistema con una sola interfaccia audio e da riferimento ovviamente a quella di default.

-- start widget
-- https://awesome.naquadah.org/wiki/Farhavens_volume_widget
-- Pavel's mod widget

-- Volumecfg.widget
volumecfg = {}
volumecfg.cardid  = 0
volumecfg.channel = "Master"
volumecfg.widget = widget({ type = "textbox", name = "volumecfg.widget", align = "right" })

-- command must start with a space!
volumecfg.mixercommand = function (command)
        local fd 
	fd = io.popen("amixer -c " .. volumecfg.cardid .. command)
        local status = fd:read("*all")
        fd:close()

       local volume = string.match(status, "(%d?%d?%d)%%")
       volume = string.format("% 3d", volume)
       status = string.match(status, "%[(o[^%]]*)%]")
       if string.find(status, "on", 1, true) then
               volume = volume .. "%"
       else   
               volume = volume .. "M"
       end
       volumecfg.widget.text = volume
end
volumecfg.update = function ()
       volumecfg.mixercommand(" sget " .. volumecfg.channel)
end
volumecfg.up = function ()
       volumecfg.mixercommand(" sset " .. volumecfg.channel .. " 2%+")
end
volumecfg.down = function ()
       volumecfg.mixercommand(" sset " .. volumecfg.channel .. " 2%-")
end
volumecfg.toggle = function ()
        -- alsa 
        -- volumecfg.mixercommand(" sset " .. volumecfg.channel .. " 1+ toggle")
	-- ubuntu 14.xx pulseaudio 
	local fd = io.popen( "amixer -D pulse set Master 1+ toggle" )
        local status = fd:read("*all")
        fd:close()
	volumecfg.mixercommand(" sget " .. volumecfg.channel)
end
volumecfg.widget:buttons(awful.util.table.join(
       awful.button({ }, 4, function () volumecfg.up() end),
       awful.button({ }, 5, function () volumecfg.down() end),
       awful.button({ }, 1, function () volumecfg.toggle() end)
))
volumecfg.update() 
-- end widget

Una  volta salvato il file è necessario attivare il widget.

Il widget viene attivato modificando opportunamente il file dell’ambiente di test

.config/awesome/rc.lua.new  

come descritto in  Testare awesome window manager con Xephyr

/etc/xdg/awesome/rc.lua

da terminale si può utilizzare nano un editor semplice ed efficace  oppure editor GUI come scite …

sudo nano .config/awesome/rc.lua.new  

Nella parte iniziale del file dove sono presenti i require aggiungere un require(“volumecfg”) per richiamare il widget.

-- Standard awesome library
  require("awful")
  ...
-- Load Debian menu entries
  require("debian.menu")

--   Load volumecfg.widget
  require("volumecfg")

quindi attivare il widget inserendo nella sezione mywibox[s]. widgets l’item volume.widget

mywibox[s] = awful.wibox({ position = "top", screen = s })
 -- Add widgets to the wibox - order matters
 mywibox[s].widgets = {
    {
       mylauncher,
       mytaglist[s],
       mypromptbox[s],
       layout = awful.widget.layout.horizontal.leftright
    },
    mylayoutbox[s],
    mytextclock, separator,
    volumecfg.widget,

Se si dispone di una tastiera estesa si possono usare anche i tasti speciali per controllare il volume:

La sezione da utilizzare sarà quella per il binding dei tasti che inizia con

-- {{{ Key bindings
globalkeys = awful.util.table.join(
 awful.key({ modkey, }, "Left", awful.tag.viewprev ),
... 
...
...
-- Finally add the keyboard keys for controlling/muting your volume:
 awful.key({ }, "XF86AudioRaiseVolume", function ()
 awful.util.spawn("amixer set Master 9%+") end),
 awful.key({ }, "XF86AudioLowerVolume", function ()
 awful.util.spawn("amixer set Master 9%-") end),
 awful.key({ }, "XF86AudioMute", function ()
 awful.util.spawn("amixer -D pulse set Master 1+ toggle", false) end),

Completati i  tests e possibile salvare il nuovo file rc.lua.new nella posizione finale che in ubuntu è /etc/xdg/awesome/rc.lua da terminale

sudo cp  .config/awesome.rc.lua.new  /etc/xdg/awesome/rc.lua

e operare il restart di awesome anche grazie al comando presente nel menu awesome

Risorse:

  1. Non c'è ancora nessun commento.
  1. No trackbacks yet.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: