Advertisement
ahoka

Awesome 3.4 Spiral with padding

Aug 16th, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.13 KB | None | 0 0
  1. ---------------------------------------------------------------------------
  2. -- @author Uli Schlachter <[email protected]>
  3. -- @copyright 2009 Uli Schlachter
  4. -- @copyright 2008 Julien Danjou
  5. -- @release v3.4.15
  6. ---------------------------------------------------------------------------
  7.  
  8. -- Grab environment we need
  9. local ipairs = ipairs
  10. local tonumber = tonumber
  11. local beautiful = beautiful
  12. local math = math
  13.  
  14. module("awful.layout.suit.spiral")
  15.  
  16. local function spiral(p, spiral)
  17.     local padding = tonumber(beautiful.padding)
  18.     if padding == nil then
  19.         padding = 0
  20.     end
  21.  
  22.     local wa = p.workarea
  23.     local static_wa = wa
  24.     local cls = p.clients
  25.     local n = #cls
  26.  
  27.     for k, c in ipairs(cls) do
  28.         if k < n then
  29.             if k % 2 == 0 then
  30.                 wa.height = wa.height / 2
  31.             else
  32.                 wa.width = wa.width / 2
  33.             end
  34.         end
  35.  
  36.         if k % 4 == 0 and spiral then
  37.             wa.x = wa.x - wa.width
  38.         elseif k % 2 == 0 or
  39.             (k % 4 == 3 and k < n and spiral) then
  40.             wa.x = wa.x + wa.width
  41.         end
  42.  
  43.         if k % 4 == 1 and k ~= 1 and spiral then
  44.             wa.y = wa.y - wa.height
  45.         elseif k % 2 == 1 and k ~= 1 or
  46.             (k % 4 == 0 and k < n and spiral) then
  47.             wa.y = wa.y + wa.height
  48.         end
  49.  
  50.         local wa2 = {}
  51.         wa2.x = wa.x + padding
  52.         wa2.y = wa.y + padding
  53.         if spiral then
  54.             wa2.width = wa.width - padding * ((k ~= 2 and k ~= 3) and 1 or 2)
  55.             wa2.height = wa.height - padding * ((k == 2 or k > 4) and 1 or 2)
  56.         else
  57.             wa2.width = wa.width - padding * ((k % 2 == 1 and k ~= n) and 1 or 2)
  58.             wa2.height = wa.height - padding * ((k % 2 == 0 and k ~= n) and 1 or 2)
  59.         end
  60.  
  61.         c:geometry(wa2)
  62.     end
  63. end
  64.  
  65. --- Dwindle layout
  66. dwindle = {}
  67. dwindle.name = "dwindle"
  68. function dwindle.arrange(p)
  69.     return spiral(p, false)
  70. end
  71.  
  72. --- Spiral layout
  73. name = "spiral"
  74. function arrange(p)
  75.     return spiral(p, true)
  76. end
  77.  
  78. -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement