local function start() local desktop = { widgets = { tasklist = require("core.tasklist"), textclock = require("core.textclock"), keymap = modules.ibus.widgets.ibus, volume = modules.volume.widgets.volume, launcher = modules.launcher.widgets.launcher, shortcut = require("core.shortcut"), 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 } } -- Manages tag grid and widget local tagger = require("core.tagger.tagger") -- Makes a layout indicator. -- make_layoutbox(screen) will return a widget for the given screen. local make_layoutbox = require("core.layouts.widget") -- Load conditional modules if conf.backlight_enabled then desktop.widgets.backlight = modules.backlight.widgets.backlight end if conf.battery_enabled then desktop.widgets.battery = modules.battery.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 screens awful.screen.connect_for_each_screen( function(s) -- s: the screen this function is being called for -- Create tag table s.tagger = tagger:new(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 local 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.tagger.widget, make_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 ) end return start