awesomewm/tags.lua
2024-02-06 17:25:23 +01:00

135 lines
2.8 KiB
Lua

-- tags
local awful = require("awful")
local conf = require("localconf")
local modkey = conf.modkey or "Mod4"
local tags={}
awful.layout.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,
-- awful.layout.suit.magnifier,
-- awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
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], awful.util.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 = awful.util.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 = awful.util.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