124 lines
3.5 KiB
Lua
124 lines
3.5 KiB
Lua
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 gtimer = require "gears.timer"
|
|
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,
|
|
})
|
|
|
|
gtimer.delayed_call(function()
|
|
local spawn = require "awful.spawn"
|
|
local apps = require "configuration.applications"
|
|
|
|
first_tag:view_only()
|
|
spawn(apps.open_terminal(), { screen = screen, tag = first_tag })
|
|
end)
|
|
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
|