awesomewm/desktop/init.lua

227 lines
5.3 KiB
Lua
Executable File

local desktop = {
Tagger = require("desktop.tagger"),
widgets = {
tasklist = require("desktop.widgets.tasklist"),
textclock = require("desktop.widgets.textclock"),
layoutbox = require("desktop.widgets.layoutbox"),
keymap = modules.ibus.widgets.ibus,
volume = modules.volume.widgets.volume,
tagindicator = require("desktop.widgets.tagindicator"),
launcher = require("desktop.widgets.launcher"),
shortcut = require("desktop.widgets.shortcut"),
--winstat = require("desktop.widgets.window_status"),
space = function(size)
return wibox.widget {
{
widget = wibox.widget.separator,
color = beautiful.color.transparent,
forced_width = beautiful.dpi(size)
},
layout = wibox.container.background,
}
end,
separator = function(size, margin_h, margin_v)
return wibox.widget {
{
widget = wibox.widget.separator,
color = "#FFFFFF55",
forced_width = beautiful.dpi(size),
thickness = beautiful.dpi(size)
},
layout = wibox.container.margin,
top = beautiful.dpi(margin_v),
bottom = beautiful.dpi(margin_v),
left = beautiful.dpi(margin_h),
right = beautiful.dpi(margin_h)
}
end
}
}
-- Load conditional modules
if conf.backlight_enabled then
desktop.widgets.backlight = require("desktop.widgets.backlight")
end
if conf.battery_enabled then
desktop.widgets.battery = require("desktop.widgets.battery")
end
if conf.mpc_enabled then
desktop.widgets.mpc = modules.mpc.widgets.mpc
end
-- If timed wallpaper is enabled, load timed manager
if (type(beautiful.wallpaper) == "table") then
desktop.wallpaper = require("desktop.wallpaper")
screen.connect_signal("property::geometry", desktop.wallpaper.update)
desktop.wallpaper.update()
desktop.wallpaper.start()
else
-- Otherwise, set static wallpaper on each screen
-- We loop over screens to prevent the wallpaper from being stretched over
-- all displays. If, for some reason, you want that to happen, use a single
-- call of "gears.wallpaper.maximized(beautiful.wallpaper)" instead of
-- this loop.
for s in screen do
gears.wallpaper.maximized(beautiful.wallpaper, s)
end
end
-- Set a timer that will update the tag indicators of all screens.
-- Even if we do not want continuous updates, we still need a timer:
-- there must be a significant delay (1ish second) before awesome prepares
-- all clients
desktop.screen_timer = gears.timer {
timeout = 2,
call_now = false,
autostart = true,
single_shot = not conf.continuous_tag_updates,
callback = function()
for s in screen do
s.tagger:update_widget()
end
end
}
-- Prepare each screen
awful.screen.connect_for_each_screen(
function(s)
-- s: the screen this function is being called for
-- Create tag table
s.tagger = desktop.Tagger:new(s)
desktop.widgets.tagindicator(s)
-- Create a promptbox for each s
s.mypromptbox = awful.widget.prompt()
-- Create the bar
s.bar = awful.wibar({
position = conf.bar_position,
screen = s,
--bg = "#00000000",
bg = beautiful.color.bar.color,
border_width = 0,
height = beautiful.dpi(conf.bar_height),
type = "desktop"
})
s.systray = wibox.widget.systray()
s.systraysep = desktop.widgets.separator(2, 5, 3)
s.bar:connect_signal("button::press",
function(_, _, _, button, mods)
-- Middle-click
if (button == 2) then
s.systray.visible = not s.systray.visible
s.systraysep.visible = s.systray.visible
end
end)
-- Create shortcut list from config value
if (#conf.bar_shortcuts > 0) then
s.shortcuts = {
layout = wibox.layout.fixed.horizontal,
desktop.widgets.separator(2, 5, 3),
desktop.widgets.space(6)
}
for k, v in pairs(conf.bar_shortcuts) do
s.shortcuts[#s.shortcuts + 1] = desktop.widgets.shortcut:new(v[1], v[2])
end
end
-- Assemble left bar widgets
rightside = {
layout = wibox.layout.fixed.horizontal,
spacing = 0
}
rightside = gears.table.join(rightside, {
desktop.widgets.space(10),
s.systraysep,
desktop.widgets.space(10),
{
s.systray,
top = beautiful.dpi(3),
bottom = beautiful.dpi(3),
left = 0, right = 0,
layout = wibox.container.margin,
},
desktop.widgets.separator(2, 5, 3),
desktop.widgets.space(10),
})
if (conf.mpc_enabled) then
rightside = gears.table.join(rightside, {
desktop.widgets.mpc,
desktop.widgets.space(5),
desktop.widgets.separator(2, 5, 3),
desktop.widgets.space(15),
})
end
rightside = gears.table.join(rightside, {
desktop.widgets.textclock,
desktop.widgets.space(8),
desktop.widgets.battery,
desktop.widgets.backlight,
desktop.widgets.volume,
desktop.widgets.space(8),
desktop.widgets.keymap,
desktop.widgets.space(8),
})
s.bar:setup {
layout = wibox.container.margin,
margins = beautiful.dpi(conf.bar_margin),
{
layout = wibox.layout.align.horizontal,
{
layout = wibox.layout.fixed.horizontal,
desktop.widgets.space(8),
desktop.widgets.launcher,
desktop.widgets.space(18),
s.tagindicator,
desktop.widgets.layoutbox(s),
s.shortcuts,
desktop.widgets.space(6),
desktop.widgets.separator(2, 5, 3),
desktop.widgets.space(18),
desktop.widgets.tasklist(s),
},
s.mypromptbox,
rightside
}
}
end
)
return desktop