128 lines
2.7 KiB
Lua
128 lines
2.7 KiB
Lua
-- tags
|
|
local awful = require("awful")
|
|
local gears = require("gears")
|
|
local conf = require("localconf")
|
|
local modkey = conf.modkey or "Mod4"
|
|
|
|
local tags = {}
|
|
|
|
awful.layout.append_default_layouts({
|
|
awful.layout.suit.fair,
|
|
awful.layout.suit.fair.horizontal,
|
|
awful.layout.suit.tile,
|
|
awful.layout.suit.tile.bottom,
|
|
awful.layout.suit.max,
|
|
awful.layout.suit.max.fullscreen,
|
|
awful.layout.suit.floating,
|
|
})
|
|
|
|
local function getfunc_viewonly(i)
|
|
return function()
|
|
local screen = awful.screen.focused()
|
|
local tag = screen.tags[i]
|
|
if tag then
|
|
tag:view_only()
|
|
end
|
|
end
|
|
end
|
|
|
|
local function getfunc_viewtoggle(i)
|
|
return function()
|
|
local screen = awful.screen.focused()
|
|
local tag = screen.tags[i]
|
|
if tag then
|
|
awful.tag.viewtoggle(tag)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function getfunc_moveto(i)
|
|
return function()
|
|
if client.focus then
|
|
local tag = client.focus.screen.tags[i]
|
|
if tag then
|
|
client.focus:move_to_tag(tag)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function getfunc_clienttoggle(i)
|
|
return function()
|
|
if client.focus then
|
|
local tag = client.focus.screen.tags[i]
|
|
if tag then
|
|
client.focus:toggle_tag(tag)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local tagdef = {
|
|
{ "1" },
|
|
{ "2", { layout = awful.layout.suit.max } },
|
|
{ "3" },
|
|
{ "4", { layout = awful.layout.suit.max } },
|
|
{ "5" },
|
|
{ "6" },
|
|
{ "7" },
|
|
{ "8" },
|
|
{ "9" },
|
|
{ "0" },
|
|
{ "F1", { layout = awful.layout.suit.max } },
|
|
{ "F2" },
|
|
{ "F3" },
|
|
{ "F4", { layout = awful.layout.suit.max } },
|
|
}
|
|
|
|
local function defaultlayout(s)
|
|
if s.geometry.width > s.geometry.height then
|
|
return awful.layout.suit.fair
|
|
else
|
|
return awful.layout.suit.fair.horizontal
|
|
end
|
|
end
|
|
|
|
function tags.setup()
|
|
awful.screen.connect_for_each_screen(function(s)
|
|
for _, t in ipairs(tagdef) do
|
|
awful.tag.add(t[1], gears.table.join({ screen = s }, t[2] or { layout = defaultlayout(s) }))
|
|
end
|
|
s.tags[1]:view_only()
|
|
end)
|
|
end
|
|
|
|
function tags.create_bindings()
|
|
local tagkeys = {}
|
|
local k
|
|
|
|
-- Bind all number keys and F-keys to tags
|
|
for i = 1, 21 do
|
|
if i < 10 then
|
|
k = "#" .. i + 9 -- number keys 1-9
|
|
elseif i == 10 then
|
|
k = "#19" -- zero
|
|
else --if i > 10 then
|
|
k = "F" .. i - 10 -- F keys
|
|
end
|
|
tagkeys = gears.table.join(
|
|
tagkeys,
|
|
awful.key({ modkey }, k, getfunc_viewonly(i)),
|
|
awful.key({ modkey, "Control" }, k, getfunc_viewtoggle(i)),
|
|
awful.key({ modkey, "Shift" }, k, getfunc_moveto(i)),
|
|
awful.key({ modkey, "Control", "Shift" }, k, getfunc_clienttoggle(i))
|
|
)
|
|
end
|
|
|
|
-- keys for all tags
|
|
tagkeys = gears.table.join(
|
|
tagkeys,
|
|
awful.key({ modkey }, "u", awful.client.urgent.jumpto),
|
|
awful.key({ modkey }, "Left", awful.tag.viewprev),
|
|
awful.key({ modkey }, "Right", awful.tag.viewnext),
|
|
awful.key({ modkey }, "Escape", awful.tag.history.restore)
|
|
)
|
|
return tagkeys
|
|
end
|
|
|
|
return tags
|