144 lines
3.5 KiB
Lua
144 lines
3.5 KiB
Lua
-- If LuaRocks is installed, make sure that packages installed through it are
|
|
-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
|
|
pcall(require, "luarocks.loader")
|
|
|
|
local gears = require("gears")
|
|
local awful = require("awful")
|
|
local wibox = require("wibox")
|
|
local beautiful = require("beautiful")
|
|
require("awful.autofocus")
|
|
|
|
local main = require("main")
|
|
local bindings = require("bindings")
|
|
local theme = require("theme")
|
|
local deco = require("deco")
|
|
|
|
beautiful.init(theme)
|
|
|
|
RC = {}
|
|
RC.vars = main.user_vars()
|
|
RC.layouts = main.layouts()
|
|
RC.tags = main.tags()
|
|
|
|
awful.spawn.with_shell("picom -b")
|
|
|
|
awful.layout.layouts = RC.layouts
|
|
|
|
-- {{{ Wibar
|
|
-- Create a textclock widget
|
|
mytextclock = wibox.widget.textclock()
|
|
|
|
-- Create a wibox for each screen and add it
|
|
local taglist_buttons = gears.table.join(
|
|
awful.button({}, 1, function(t)
|
|
t:view_only()
|
|
end),
|
|
awful.button({ RC.vars.modkey }, 1, function(t)
|
|
if client.focus then
|
|
client.focus:move_to_tag(t)
|
|
end
|
|
end),
|
|
awful.button({}, 3, awful.tag.viewtoggle),
|
|
awful.button({ RC.vars.modkey }, 3, function(t)
|
|
if client.focus then
|
|
client.focus:toggle_tag(t)
|
|
end
|
|
end),
|
|
awful.button({}, 4, function(t)
|
|
awful.tag.viewnext(t.screen)
|
|
end),
|
|
awful.button({}, 5, function(t)
|
|
awful.tag.viewprev(t.screen)
|
|
end)
|
|
)
|
|
|
|
local tasklist_buttons = gears.table.join(
|
|
awful.button({}, 1, function(c)
|
|
if c == client.focus then
|
|
c.minimized = true
|
|
else
|
|
c:emit_signal("request::activate", "tasklist", { raise = true })
|
|
end
|
|
end),
|
|
awful.button({}, 3, function()
|
|
awful.menu.client_list({ theme = { width = 250 } })
|
|
end),
|
|
awful.button({}, 4, function()
|
|
awful.client.focus.byidx(1)
|
|
end),
|
|
awful.button({}, 5, function()
|
|
awful.client.focus.byidx(-1)
|
|
end)
|
|
)
|
|
|
|
local function set_wallpaper(s)
|
|
gears.wallpaper.maximized(RC.vars.wallpaper, s, true)
|
|
end
|
|
|
|
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
|
|
screen.connect_signal("property::geometry", set_wallpaper)
|
|
|
|
awful.screen.connect_for_each_screen(function(s)
|
|
-- Wallpaper
|
|
set_wallpaper(s)
|
|
|
|
-- Create a promptbox for each screen
|
|
s.mypromptbox = awful.widget.prompt()
|
|
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
|
|
-- We need one layoutbox per screen.
|
|
s.mylayoutbox = awful.widget.layoutbox(s)
|
|
s.mylayoutbox:buttons(gears.table.join(
|
|
awful.button({}, 1, function()
|
|
awful.layout.inc(1)
|
|
end),
|
|
awful.button({}, 3, function()
|
|
awful.layout.inc(-1)
|
|
end),
|
|
awful.button({}, 4, function()
|
|
awful.layout.inc(1)
|
|
end),
|
|
awful.button({}, 5, function()
|
|
awful.layout.inc(-1)
|
|
end)
|
|
))
|
|
-- Create a taglist widget
|
|
s.mytaglist = awful.widget.taglist({
|
|
screen = s,
|
|
filter = awful.widget.taglist.filter.all,
|
|
buttons = taglist_buttons,
|
|
})
|
|
|
|
-- Create a tasklist widget
|
|
s.mytasklist = awful.widget.tasklist({
|
|
screen = s,
|
|
filter = awful.widget.tasklist.filter.currenttags,
|
|
buttons = tasklist_buttons,
|
|
})
|
|
|
|
-- Create the wibox
|
|
s.mywibox = awful.wibar({ position = "top", screen = s })
|
|
|
|
-- Add widgets to the wibox
|
|
s.mywibox:setup({
|
|
layout = wibox.layout.align.horizontal,
|
|
{ -- Left widgets
|
|
layout = wibox.layout.fixed.horizontal,
|
|
s.mytaglist,
|
|
s.mypromptbox,
|
|
},
|
|
s.mytasklist, -- Middle widget
|
|
{ -- Right widgets
|
|
layout = wibox.layout.fixed.horizontal,
|
|
wibox.widget.systray(),
|
|
mytextclock,
|
|
s.mylayoutbox,
|
|
},
|
|
})
|
|
end)
|
|
-- }}}
|
|
|
|
-- Set keys
|
|
root.buttons(bindings.global_buttons())
|
|
root.keys(bindings.global_keys())
|
|
awful.rules.rules = main.rules(bindings.client_keys(), bindings.client_buttons())
|