Home > Linux, Ubuntu > Awesome layout a 3 colonne – windows manager linux

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:

Annunci
  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: