local abutton = require "awful.button" local atitlebar = require "awful.titlebar" local beautiful = require "beautiful" local lalign = require "wibox.layout.align" local lfixed = require "wibox.layout.fixed" local lflex = require "wibox.layout.flex" local naughty = require "naughty" local slots = {} function slots.wallpaper(screen) local awallpaper = require "awful.wallpaper" local beautiful = require "beautiful" local gcolor = require "gears.color" local gsurface = require "gears.surface" local imagebox = require "wibox.widget.imagebox" local cairo = require("lgi").cairo local screen_geo = screen.geometry local source = cairo.ImageSurface( cairo.Format.RGB32, screen_geo.width, screen_geo.height ) local cr = cairo.Context(source) -- Load base image local image_surface = gsurface.load_uncached(beautiful.wallpaper) local w, h = gsurface.get_size(image_surface) cr:scale(screen_geo.width / w, screen_geo.height / h) cr:set_source_surface(image_surface, 0, 0) cr:paint() -- Add color layer local color_pattern = gcolor.create_linear_pattern { from = { 0, 0 }, to = { screen.width, screen.height }, stops = { { 0, "#26323840" }, }, } cr:set_source(color_pattern) cr:paint() awallpaper { screen = screen, widget = { image = source, widget = imagebox, }, } end function slots.create_tags(screen) local atag = require "awful.tag" local home_layout = require "MyTagLayout.home_layout" local first_tag = atag.add("home", { screen = screen, icon = beautiful.icon_hometag, layout = home_layout, master_width_factor = beautiful.hometag_master_width_factor, }) first_tag:view_only() end function slots.build_desktop_decoration(screen) local desktop_bar = require "rc.ui.desktop_decoration.bar" desktop_bar(screen) end function slots.build_client_titlebars(client) -- Mouse buttons bindings for the titlebar local buttons = { abutton({}, 1, function() client:activate { context = "titlebar", action = "mouse_move" } end), abutton({}, 3, function() client:activate { context = "titlebar", action = "mouse_resize" } end), } -- Titlebar UI atitlebar(client).widget = { { -- Left atitlebar.widget.iconwidget(client), buttons = buttons, layout = lfixed.horizontal, }, { -- Middle { -- Title align = "center", widget = atitlebar.widget.titlewidget(client), }, buttons = buttons, layout = lflex.horizontal, }, { -- Right atitlebar.widget.floatingbutton(client), atitlebar.widget.maximizedbutton(client), atitlebar.widget.stickybutton(client), atitlebar.widget.ontopbutton(client), atitlebar.widget.closebutton(client), layout = lfixed.horizontal(), }, layout = lalign.horizontal, } end function slots.naughty_display(notification) naughty.layout.box { notification = notification } end return slots