awesomewm/tags.lua
2026-08-12 18:09:07 +02:00

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