Archivio

Posts Tagged ‘awesome’

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:

Annunci

Cambiare il formato di data e ora in Awesome Window Manager – Ubuntu

Aw_64 Nel window manager awesome le informazioni per la visualizzazioni di data ora sono presenti nel file di configurazione rc.lua che in ubuntu è localizzato di default in /etc/xdg/awesome.

La visualizzazione di data e ora e demandata al seguente widget:

-- Create a textcloc widget
 mytextclock = awful.widget.textclock({ align = "right" })

che visualizza le impostazioni di default:

Il widget viene aggiunto al wibox in :

 -- Create the wibox
 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, 
 s == 1 and mysystray or nil,
 mytasklist[s], 
 layout = awful.widget.layout.horizontal.rightleft
 }

che visualizza le impostazioni di default:

per aggiungere ad esempio il nome del giorno e visualizzare anche i secondi e possibile ahggiungere la seguente stringa di formato:

mytextclock = awful.widget.textclock({ align = "right" },"%a %b %d, %R:%S " )

%a %b %d -> nome del giorno(%a)    mese e giorno (%b %d)

%R:%S  ->  ora minuti(%R) e  secondi (%S)

Volendo modificare il tempo di aggiornamento aggiungere un terzo parametro con i secondi. Nel esempio che segue aggiornamento è fissato ogni  2 secondi

mytextclock = awful.widget.textclock({ align = "right" },"%a %b %d, %R:%S ",2 )

Per un elenco dei formati che possono essere utilizzati per definire la data e l’ora fare riferimento alle seguenti risorse:

Widget  vicious

Volendo è possibile utilzzare il widget vicious  vicious.widgets.date. Vicious è un libreria modulare di widgets  per awesome.  Con i widgets è possibile aggiungere a qualsiasi wibox ( statusbar e titlebars)  con grande flessibilità varie informazioni relative a: sistema,  window manger e clienti X

-- Date widget awesome 3.4
datewidget = widget({ type = "textbox" })
-- Register widget
vicious.register(datewidget, vicious.widgets.date, "%b %d, %R:%S", 3)

perchè venga attivato è necessario inserirlo in un wibox

 -- Create the wibox
 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, 
   datewidget,
   s == 1 and mysystray or nil,
   mytasklist[s],
   layout = awful.widget.layout.horizontal.rightleft
 }

Risorse:

Testare awesome window manager con Xephyr

Aggiornamento dicembre 2014

Aw_64 Quando si opera con la configurazione di Awesome, un window manager in lua pulito ed essenziale, che organizza efficacemente lo spazio video ed è altamente configurabile,  risulta decisamente utile poter disporre di un ambiente di test così da evitare di perdere il controllo del sistema con ad esempio il log out automatico dal windows manager in caso di errore.

Per disporre di un ambiente di test si può far ricorso a Xephyr – X windows system server in una finestra. Xephyr è un windows system server che consente di visualizzare altre sessioni X server all’interno di finestre su un pre-esistente X display server.

Awesome in Xephyr

Awesome in Xephyr

In Debian/Ubuntu Xehpyr si installa con:

sudo apt-get install xserver-xephyr

Avviare awesome in Xephyr

Copiamo il file di configurazione di default di awesome rc.lua che in ubuntu/debian è posizionato in  /etc/xdg/awesome/rc.lua

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

se manca la directory ~/config/awesome crearla con

mkdir ~/config/awesome

Per avviare il window manager awesome in Xephyr in Ubuntu lanciare Xephyr:

Xephyr :11 -ac -br -noreset -screen 1280x1024  &

Impostare la variabile DISPLAY (il DISPLAY=:0 è il display della sessione principale ) :

DISPLAY=:11

quindi avviamo awesome nello slave X utilizzando la configurazione personalizzata presente in ~/.config/awesome/rc.lua.new:

$ awesome -c ~/.config/awesome/rc.lua.new

Per velocizzare la fase di test può utilizzare anche predisporre script .sh partendo dai seguenti comandi :

Xephyr :11 -ac -br -noreset -screen 1024x768 &
Xephyr_pid =$!
sleep 1
DISPLAY=:11
awesome -c ~/.config/awesome/rc.lua.new

per terminare Xephyr si può utilizzare il comando

kill $Xephyr_pid

oppure ricercare il processo awesome  con

ps -fax | grep “awesome/rc.lua.new”

e quindi killare il processo

Per terminare il solo awesome che gira nella finestra con Xephyr basta utilizzare il comando <quit> presente nel menu di awesome stesso.

Cambiando display si possono avviare più finestre Xephyr e conseguentemente più windows manager awesome.

Le opzioni di base del comando Xephyr:

Il numero di display virtuali X server che è possibile avviare con Xephyr è condizionato esclusivamente dall’esaurimento della memoria disponibile. Di seguito un paio di comandi per avviare Xephyr con evidenziate le opzioni base di Xephyr

Xephyr : 3 -ac -screen 1280x1024 -br -reset-terminate 2> /dev/null &

:3 = indica il display usato da Xephyr.
In genere il display di default è :0 il pratica il monitor che si sta usando in condizioni normali . Qualsiasi display addizionale, reale o virtuale necessita di una nuova porta. In questo caso la scelta è caduta su :3 ma poteva anche essere :11.

-ac = disabilita le restrizioni di accesso.  L’accesso alla sessione X  può avvenire da qualsiasi host : agisce come host+, che permette di accettare X session reindirizzate.

-screen 1280×1024 = specifica le dimensioni del nuovo display virtuale: la finestra X server.

-br = imposta il colore di background della root window

-reset-terminate = consente di chiudere automaticamente Xephyr quando l’ultimo client viene terminato.

2> /dev/null = indirizza qualsiasi messaggio a /dev/null, un dispositivo che è una sorta di cestino digitale: riceve qualsiasi cosa gli venga inviato senza ritornare niente.

& = indica che Xepbyr sarà il comando viene eseguito in background questo ritorna il controllo del promt del terminale consentendo di continuare digitare comandi nella finestra.

Xephyr :11 -ac -br -kb -noreset -screen 1024x768  &

In questo caso Xephyr genera una finestra X server più piccola di 1024×768. Viene consentita la visualizzazione dei messaggi di errore. Al nuovo display virtuale viene assegnato il numero ( la porta) 11.
– kb  =  mantiene le impostazioni della tastiera della sessione che avvia xephyr. ( non sempre disponibile )
-noreset =  don’t reset after last client exists Non consente il reset

Risorse:

Awesome layout a 3 colonne – windows manager linux

Aw_64    Obiettivo: rendere disponibile in awesome v 3.4.14 un layout a 3 colonne .

awesome 3 columns layout

awesome 3 columns layout

Awesome è un window manager in lua pulito, essenziale e molto veloce.  E’ indirizzato a utenti non proprio alle prime armi spesso etichettati  Power user.  Consente una efficace organizzazione dello spazio video. Tra i suoi pregi c’è sicuramente l’alta configurabilità  che consente un elevato controllo dell’ambiente grafico. In un sistema a doppio monitor mette a disposizone di dase default 9+9  tags (“workspaces”) indipendenti.
Se si utilizzano schermi wide ad esempio 2056×1090 (21:9) può essere opportuno disporre di un layout che organizzi le finestre su tre colonne.

Awesome dispone di base dei seguenti layouts

awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier

Il layout spiral francamente non è tra i più utili pertanto può far comodo modificarlo per disporre di un layout a 3 colonne appunto.
In Ubuntu 13.04 il codice che controlla il layout spiral è spiral.lua e si trova in

/usr/share/awesome/lib/awful/layout/suit/spiral/spiral.lua

1) Facciamo una copia del file originale
2) Aggiungiamo la funzione myspyral sotto la funzione spiral ricavata proprio dalla function spiral e riportata di seguito

-- maurizio add
local function myspiral(p, spiral)
    local wa = p.workarea
    local cls = p.clients
    local n = #cls

    for k, c in ipairs(cls) do
        if k  3  then
                wa.height = wa.height / 2
            elseif  k % 3== 1 then
                wa.width = wa.width / 3
            end
        end

	 if k % 4 == 0 and spiral then
            wa.x = wa.x - wa.width
        elseif k % 2 == 0 or k % 3 == 0 or
            (k % 4 == 3 and k < n and spiral) then
            wa.x = wa.x + wa.width
        end

        c:geometry(wa)
    end
end
--end add

3) commentiamo la chiamata alla funzione  spiral e la sostituiamo con una chiamata a myspiral

--- Spiral layout
name = "spiral"
function arrange(p)
    -- return spiral(p, true)
    return  myspiral(p, true)
end

Di seguito il codice risultante finale


---------------------------------------------------------------------------
-- @author Uli Schlachter <psychon@znc.in>
-- @copyright 2009 Uli Schlachter
-- @copyright 2008 Julien Danjou
-- @release v3.4.14
---------------------------------------------------------------------------

-- Grab environment we need
local ipairs = ipairs

module("awful.layout.suit.spiral")

local function spiral(p, spiral)
    local wa = p.workarea
    local cls = p.clients
    local n = #cls

    for k, c in ipairs(cls) do        
        if k < n then
            if k % 2 == 0 then
                wa.height = wa.height / 2
            else
                wa.width = wa.width / 2
            end
        end

        if k % 4 == 0 and spiral then
            wa.x = wa.x - wa.width
        elseif k % 2 == 0 or
            (k % 4 == 3 and k < n and spiral) then
            wa.x = wa.x + wa.width
        end

        if k % 4 == 1 and k ~= 1 and spiral then
            wa.y = wa.y - wa.height
        elseif k % 2 == 1 and k ~= 1 or
            (k % 4 == 0 and k < n and spiral) then
            wa.y = wa.y + wa.height
        end

        c:geometry(wa)
    end
end

-- maurizio add
local function myspiral(p, spiral)
    local wa = p.workarea
    local cls = p.clients
    local n = #cls

    for k, c in ipairs(cls) do
        if k  3  then
                wa.height = wa.height / 2
            elseif  k % 3== 1 then
                wa.width = wa.width / 3
            end
        end

	 if k % 4 == 0 and spiral then
            wa.x = wa.x - wa.width
        elseif k % 2 == 0 or k % 3 == 0 or
            (k % 4 == 3 and k < n and spiral) then
            wa.x = wa.x + wa.width
        end

        c:geometry(wa)
    end
end
-- end add

--- Dwindle layout
dwindle = {}
dwindle.name = "dwindle"
function dwindle.arrange(p)
    return spiral(p, false)
end

--- Spiral layout
name = "spiral"
function arrange(p)
    -- return spiral(p, true)
    return  myspiral(p, true)
end

-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80

Risorse:

Xephyr – X window system server in una finestra

In tutte le distruzioni linux è abbastanza agevole avviare sulla stessa macchina sessioni grafiche X server distinte con utenti diversi. Normalmente però si può avere attiva sul display una sola sessione alla volta e il passaggio tra i display delle sessioni avviene con i tasti Ctrl-Alt-Fn(con n>7). Xephyr è un window system server che consente di superare questo limite permettendo di visualizzare altre sessioni X server all’interno di finestre su un pre-esistente X display server.

I potenziali utilizzi di Xephyr sono ad esempio:

  • visualizzare desktop environment remoti in locale su ssh senza ricorrere a vnc.
  • aprire X session con lo stesso user o altro user per test vari ( ad esempio di altri desktop environment, visualizzione di applicazioni con risoluzioni diverse, ssh in chroot/server …) .

Di seguito alcuni screenshot di Xephyr in locale. Nella prima immagine il window manager awesome avviato in locale in una finestra 1024×768. Nella seconda il dettaglio della finestra xephyr ospitante awesome si nota in alto a sinistra la dvb-tv visualizzata con vlc.

Xephir con awesome in Ubuntu 12.10 con lxde

debian awesome in Xephyr in Ubuntu 12.10 con lxde

awesome in Xephyr

dettaglio della finestra Xephyr con awesome in debian 6.0

.
.

Xephyr X window system server annidato

Xephyr, il server X annidato leggero, consente, come gia detto, di creare finestre che agiscono come schermi aggiuntivi, fornendo un servizio di visualizzazione grafica ai programmi client, che possono essere applicazioni o interi desktop manager, anche di computer remoti. Xephyr ha il vantaggio di supportare le ultime estensioni di X e poichè è un X server reale non limitato dalle caratteristiche del X server host che viene usato come “framebuffer”.  Xephyr si basa su kdrive una versione ridotta di X.org.

Xephyr in ubuntu si installa con

sudo apt-get install xserver-xephyr

Avviare un desktop environment remoto in ubuntu con xephyr

a) Xephyr gira sulla macchina locale.

In questo esempio Xephyr funzionerà sulla macchina locale e visulizzerà il window manager fluxbox di una macchina debian 6.0 remota. Per fare questo creiamo un nuovo display (screen) in Ubuntu 12.10 con Xephyr utilizzando il comando base:

Xephyr :12 -screen 1024x768 -ac &

:12 è il display generato ovviamente sarà diverso dal display di default ( :0 normalemnte )
-screen 1024×768 le dimensioni dello screen
-ac disabilita le restrizioni di accesso ( consente in pratica la trasmissione di X)

connettiamoci ad un server remoto Debian 6.0 con ad esempio

ssh -XC user-name@192.168.1.14

-X = abilita il reindirizzamento X. Enables X11 forwarding.
-C = utilizza la compressione

adesso reindirizziamo il display della macchina Debian 6.0 verso il display virtuale :12 della macchina Ubuntu (192.168.1.3)   e avviamo il window manager fluxbox

DISPLAY=192.168.1.3:12  fluxbox

Nello screenshot seguente  il risultato

Xephyr in locale fluxbox in  debian 6.0 remoto

Xephyr in locale fluxbox in debian 6.0 remoto

Possiamo controllare i servizi Xephyr attivi nella macchina locale con

maurizio@Lub12120:~$ ps fax | grep "Xephyr"
24879 pts/11   S+     0:00  |   \_ grep --color=auto Xephyr
12111 pts/1    S      2:08      \_ Xephyr :12 -screen 1024x768 -ac

Nello screenshot la finestra xterm evidenzia il comando sopra riportato che però da esisto diverso evidenziando come nella macchina remota non sia attivo nessun X server Xephyr.

In generale per esportare il display il comando base è il seguente

DISPLAY=ip-target-machine:num-display desktop-environment

si possono ricercare i desktop environment avviabili con

grep "^Exec" /usr/share/xsessions/*
b) Xephyr gira sulla macchina remota.

In questo caso Xephyr viene fatto girare sulla macchina debian remota e trasmesso sulla macchina locale. Le performance sono inferiori.
Connettiamoci con ssh alla macchina remota consentendo il forward delle

ssh -XC user-name@192.168.1.14

quindi avviamo Xephyr

Xephyr :9 -ac -screen 800x600 &
DISPLAY=:9  fluxbox

Questa volta la finestra xterm dello screenshot evidenzia come nella macchina remota debian stia girando Xephyr nel display :9. Nella macchina locale il risultato non cambia è attivo solo il precedente Xephyr

maurizio@Lub12120:~$ ps fax | grep [X]ephyr
12111 pts/1    S      2:08      \_ Xephyr :12 -screen 1024x768 -ac
Xephyr remoto con fluxbox in debian remoto

Xephyr remoto con fluxbox in debian remoto

Le performance in questo seconda situazione sono inevitabilmente inferiori.

Disporre di una tale opportunità può risultare utile in caso si vogliano testare windows managere o desktop environemtne diversi senza chiudere e aprire sessioni.

Avviare awesome in Xephyr

Awesome è un window manager in lua pulito ed essenziale. Organizza efficacemente lo spazio video ed è altamente configurabile. Su doppio monitor mette a disposizone di default 9+9 “schermi virtuali” indipendenti. Avviare awesome in Xephyr rappresenta un buon metodo per testare le modifiche apportate al file di configuazione rc.lua evitando di perdere il controllo del sistema in caso di errore.

Di seguito come avviare il window manager awesome in Xephyr in Ubuntu 12.04 e 12.10 in modo da testare le modifiche del file di configurazione.

Avviamo Xephyr

Xephyr :1 -ac -br -noreset -screen 1280x1024  &

Impostare la variabile DISPLAY:

DISPLAY=:1

avviamo awesome nello slave X utilizzando la configuazione personalizzata presente in ~/.config/awesome/rc.lua.new:

 $ awesome -c ~/.config/awesome/rc.lua.new

Per velocizzare la fase di test può utilizzare anche predisporre script .sh con :

 Xephyr :1 -ac -br -noreset -screen 1024x768 &
sleep 1
DISPLAY=:1 awesome -c ~/.config/awesome/rc.lua.new

Using Xephyr – awesome

Le opzioni di base del comando Xephyr:

Il numero di display virtuali X server che è possibile avviare con Xephyr è condizionato esclusivamente dall’esaurimento della memoria disponibile. Di seguito un paio di comandi per avviare Xephyr con evidenziate le opzioni base di Xephyr

Xephyr : 3 -ac -screen 1280x1024 -br -reset-terminate 2> /dev/null &

:3 = indica il display usato da Xephyr.
In genere il display di default è :0 il pratica il monitor che si sta usando in condizioni normali . Qualsiasi display addizionale, reale o virtuale necessita di una nuova porta. In questo caso la scelta è caduta su :3 ma poteva anche essere :11.

-ac = disabilita le restrizioni di accesso.  L’accesso alla sessione X  può avvenire da qualsiasi host : agisce come host+, che permette di accettare X session reindirizzate.

-screen 1280×1024 = specifica le dimensioni del nuovo display virtuale: la finestra X server.

-br = imposta il colore di background della root window

-reset-terminate = consente di chiudere automaticamente Xephyr quando l’ultimo client viene terminato.

2> /dev/null = indirizza qualsiasi messaggio a /dev/null, un dispositivo che è una sorta di cestino digitale: riceve qualsiasi cosa gli venga inviato senza ritornare niente.

& = indica che Xepbyr sarà il comando viene eseguito in background questo ritorna il controllo del promt del terminale consentendo di continuare digitare comandi nella finestra.

Xephyr :11 -ac -br -kb -noreset -screen 1024x768  &

In questo caso Xephyr genera una finestra X server più piccola di 1024×768. Viene consentita la visualizzazione dei messaggi di errore. Al nuovo display virtuale viene assegnato il numero ( la porta) 11.
– kb  =  mantiene le impostazioni della tastiera della sessione che avvia xephyr. ( non sempre disponibile )
-noreset =  don’t reset after last client exists Non consente il reset

Risorse:

freedesktop.org – Software/Xephyr

Multiseat Configuration/Xephyr – Wikibooks, open books for an open world

X.Org Wiki – Home

Window Manager per linux ubuntu debian

Linux – Desktop Manager e Windows Managers

Window Manager per linux ubuntu debian

ottobre 17, 2012 1 commento

Una delle componenti software inevitabilmente più utilizzata da un utente di sistemi linux è il window manager o gestore di finestra. Questo fondamentale componente dell’interfaccia grafica gestisce il posizionamento e l’aspetto delle finestre nel desktop manger. Nel mondo linux sono veramente molti circa 200 i window managers disponibili alcuni hanno caratteristiche tali che, pur non raggiungendo il livello di un desktop manager, sicuramente possono rappresentare degli adeguati ambienti desktop.
Ovviamente ogni Desktop Manager ha una proprio window manager ad esempio metacity è utilizzato Gnome, kwin in KDE, openbox in LXDE, xfwm in Xfce.

Determinare il Window Manager in uso

Qualora il window manager sia compatibile con le specifice EWMH o NetWM, X window standard per Window Manager, un modo efficace per determinare il window manager in uso è utilizzare il comando wmctrl.

wmctrl -m

per installare wmctrl

sudo apt-get install wmctrl

wmctrl fa anche molto altro ecco solo un esempio: come spostarsi sul desktop con la finestra gnumeric
wmctrl -i -a $(wmctrl -l | grep gnumeric | awk ‘{ print $1 }‘)

Ogni distribuzione utilizza propri comandi per evidenziare il window manager ( WM ) o i WMs disponibili.
In debian/ubuntu si può usare update-alternative –list x-window-manager per elencare i window manager disponibili

update-alternatives --list x-window-manager 
/usr/bin/awesome
/usr/bin/enlightenment_start
/usr/bin/i3
/usr/bin/openbox
/usr/bin/startfluxbox

Conseguentemente per determinare il window manager in uso

 
pgrep -l $(update-alternatives --list x-window-manager | cut -d "/" -f 4 | tr '\n' '|'| sed 's/|$/\n/g')

Sempre per elencare i WMs installati

grep -l "section=.Window Managers." /usr/share/menu/*

per elencare non solo i WMs ma  le Xsessions installate e avviabili

grep "^Exec" /usr/share/xsessions/*

Cambiare default x-session-manager ( desktop manager )

Impostare un diverso x-session-manager /desktop manager )  usando alternatives

sudo update-alternatives --config x-session-manager

I window Manager possono essere classificati a seconda di come vengono generate le finestre in   stacking window manager,  compositing window manager , tiling window manager .

Al momento i miei WM preferiti sono

awesome dual monitor screenshoot

awesome dual monitor screenshot

awesome   (tiling) [ in C e Lua ]  un window manager per utenti non alle prima armi che in certi frangeti non fa rimpiangere assolutamente un desktop manager. Pulito ed essenziale con doppio monitor presenta di default 9 + 9 “schermi virtuali” indipendenti. Altamente configurabile è il massimo quando si devono gestire un numero elevato di finestre consentendo la loro organizzazione in modalità tile, libera …

openbox  (stacking) [ in C] il WM di LXDE pulito, essenziale,  stabile ed efficace.

enlightenment  (E17) più di un window manager di fatto usato come sostituto di un desktop manager. Indubbiamente elegante è adatto anche ai cellulari – il motto beauty at your fingertips

FVWM e IceWM  rappresentano  la storia dei WM in alcune situazioni possono risultare ancora utili la mia preferenza va al primo.

Lista dei principali window manager  che supportano completamente  o parzialmente Extended Window Manager Hints EWMH o NetWM:  X window standard per window manager.

Altri post 

Risorse:

Window manager Awesome layouts e tags

Aw_64   Awesome è un window manager in lua pulito ed essenziale. Organizza efficacemente lo spazio video ed è altamente configurabile.  Su doppio monitor mette a disposizone di base default 9+9 “workspaces”  indipendenti anche se il termine corretto è tags .  L’uso dei tags consente di porre i clients ( finestre ) su diversi tags e di visualizzare tags diversi allo stesso tempo.

Per personalizzare l’ambiente di lavoro può risultare opportuno assegnare all’avvio a ciscuno dei 9 tags “schermi virtuali” un layout predefinito.

Per fare questo si agisce sul file di configurazione di awesome  rc.lua. In ubuntu 12.xx il file si trova in

/etc/xdg/awesome/rc.lua

La versione base del file di configurazione genera 9 tags “schermi virtuali” e a ciascuno assegna il layout floating indice n.1. Grazie al seguente codice.

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
for s = 1, screen.count() do
     -- Each screen has its own tag table.
     tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
end
-- }}}

Avvertenza Poichè awesome è molto sensibile agli errori, prima di riavviare awesome con la combinazione [Mod4]  + [R]  ( [Mod4]  è anche conosciuto con [Windows logo] ) conviene  fare un check del file rc.lua salvato con awesome -k.

Modificare nome dei tabs e assegnare layout

E’ possibile modificare sia il nome dei tags che il layout di ciascuno modificando le precedenti righe nel modo seguente

-- {{{ Tags
-- Define a tag table which hold all screen tags.
 tags = {
   names  = { "Aw",2, "EH", "www",  5, "Net", 7, "F", 9 },
   layout = { layouts[9], layouts[2], layouts[1], layouts[5], layouts[12],
              layouts[10], layouts[9], layouts[9], layouts[10]
 }}
 for s = 1, screen.count() do
     -- Each screen has its own tag table.
     tags[s] = awful.tag(tags.names, s, tags.layout)
 end
-- }}}

Grazie a names è possbile assegnare un nome  a ciscun tags mentre layout  consente di assegnare uno specifico layout a ciscun tags

Normalente è possibile modificare il layout di un tab cliccando in altro a destra sull’icona che evidenzia il tipo di  layout attivo oppure utilizzando i tasti  [Mod4] + [space] o [Mod4] + [barra spazio]  + [Shift] .

Awesome offre alcune combinazioni di tasti per agire sui tags e sui clients ( finestre)  ad esempio

  • Selezionare uno specifico dei 9 tags con  Mod4  + 1-9  (numero tag )
  • Spostare la finestra attiva in un tag specifico con  Mod 4  + Shift + 1-9 ( numero tag destinazione)
  • Riunire  le finestre presenti in tags diversi (banalizzando “workspaces”)   Mod4  + Control + 1-9.    è possibile selezionare e quindi  riunire  tutti i 9 screen

Combinazione di tasti per selezionare uno specifico layout

Nella confirazione di base manca una combinazione di tasti che consenta di applicare uno specifico layout al tag attivo. Del resto considerato che il mouse non risulta decisivo

Per risolvere questa esigenza si possono inserire nella sezione  Key bindings

— {{{ Key bindings

righe del tipo seguente  che assegnano alle combinazioni [Control] + [Mod1] + [1-9] ]  l’avviazione di uno specifico layout grazie alla funzione layout.set()   

awful.key({ "Control", "Mod1" }, "1", function () awful.layout.set(layouts[1]) end),
 awful.key({ "Control", "Mod1" }, "2", function () awful.layout.set(layouts[2]) end),
...
 awful.key({ "Control", "Mod1" }, "9", function () awful.layout.set(layouts[9]) end),

Screenshot del window manager awesome

awesome dual monitor screenshoot

awesome dual monitor screenshot

Awesome dispone di base dei seguenti layout

awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier

Risorse: