-- tags and layouts local awful = awful local conf = conf local modkey = conf.modkey or "Mod4" local tags={ mt={} } local layouts = layouts local function funcViewOnly(i) return function () local screen = mouse.screen if tags[screen][i] then awful.tag.viewonly(tags[screen][i]) end end end local function funcViewToggle(i) return function () local screen = mouse.screen if tags[screen][i] then awful.tag.viewtoggle(tags[screen][i]) end end end local function funcMoveTo(i) return function () if client.focus and tags[client.focus.screen][i] then awful.client.movetotag(tags[client.focus.screen][i]) end end end local function funcToggle(i) return function () if client.focus and tags[client.focus.screen][i] then awful.client.toggletag(tags[client.focus.screen][i]) end end end local defaultsetup = { {"1:⚙"}, { name = "2:⌘", layout = layouts[5] }, { name = "3:☻", layout = layouts[3], mwfact = 0.20 }, { name = "4:✉", layout = layouts[5] }, {"5:☑"}, {"6:♫"}, {"7:☣"}, {"8:☕"}, {"9:⚂"}, {"0:☠"}, {"F1:☭"}, {"F2:♚"}, {"F3:♛"}, {"F4:♜"}--, -- { name = "F5:♝", layout = layouts[1] }, -- { name = "F6:♞", layout = layouts[1] }, -- { name = "F7:♟", layout = layouts[1] }, -- { name = "F8:⚖", layout = layouts[1] }, -- { name = "F9:⚛", layout = layouts[1] }, -- { name = "F10:⚡", layout = layouts[1] }, -- { name = "F11:⚰", layout = layouts[1] }, -- { name = "F12:⚙", layout = layouts[1] } } local list = {} function tags.setup(setuptable) local setup = setuptable or defaultsetup for s = 1, screen.count() do list[s] = {} for i, t in ipairs(setup) do local layout = t.layout or layouts[1] local name = t.name or t[1] list[s][i] = awful.tag.new({name}, s, layout)[1]; list[s][i].selected = false if(t.mwfact) then awful.tag.setmwfact(t.mwfact,list[s][i]) end end list[s][1].selected = true end end function tags.extend_key_table(globalkeys) -- Compute the maximum number of digit we need, limited to 22 keynumber = 0 for s = 1, screen.count() do keynumber = math.min(22, math.max(#(list[s]), keynumber)); end local inspect = require("inspect") local tagkeys = globalkeys or {} -- Bind all key numbers to tags, using keycodes for i = 1, keynumber do if i < 10 then k = "#" .. i + 9 -- number keys 1-9 elseif i == 10 then k = "#19" -- zero elseif i > 10 then k = "F" .. i - 10 -- F keys end tagkeys = awful.util.table.join(tagkeys, awful.key( { modkey }, k, funcViewOnly(i)), awful.key( { modkey, "Control" }, k, funcViewToggle(i)), awful.key( { modkey, "Shift" }, k, funcMoveTo(i)), awful.key( { modkey, "Control", "Shift" }, k, funcToggle(i)) ) end return tagkeys; end tags.mt.__index = list tags.mt.__newindex = list return setmetatable(tags, tags.mt)