feat(slots): make predefined slots HOF

This commit is contained in:
Aire-One 2024-11-27 01:51:29 +01:00
parent d0dda9399e
commit 56e76a4baf
6 changed files with 60 additions and 38 deletions

View File

@ -2,7 +2,9 @@
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json",
"version": "0.2", "version": "0.2",
"useGitignore": true, "useGitignore": true,
"ignorePaths": [".git"], "ignorePaths": [
".git"
],
"enableGlobDot": true, "enableGlobDot": true,
"words": [ "words": [
"Aire-One", "Aire-One",
@ -14,7 +16,9 @@
"dryrun", "dryrun",
"fatalwarnings", "fatalwarnings",
"fullscreen", "fullscreen",
"halign",
"hasitem", "hasitem",
"imagebox",
"JohnnyMorganz", "JohnnyMorganz",
"keygrabber", "keygrabber",
"ldoc", "ldoc",
@ -30,6 +34,7 @@
"rockspec", "rockspec",
"rockspecs", "rockspecs",
"staticfct", "staticfct",
"stylua" "stylua",
"wibox"
] ]
} }

View File

@ -16,3 +16,15 @@ package.loaded["ruled.notification"] = {}
package.loaded["awful.keyboard"] = { package.loaded["awful.keyboard"] = {
append_client_keybindings = function() end, append_client_keybindings = function() end,
} }
package.loaded["awful.mouse"] = {}
package.loaded["beautiful"] = {}
package.loaded["wibox.widget.imagebox"] = {}
package.loaded["wibox.container.tile"] = {}
package.loaded["awful.wallpaper"] = {}
package.loaded["awful.layout"] = {}

View File

@ -1,18 +1,17 @@
local keyboard = require "awful.keyboard"
local mouse = require "awful.mouse"
local client_slots = {} local client_slots = {}
function client_slots.append_mousebindings(params) function client_slots.append_mousebindings(params)
local mouse = require "awful.mouse" return function()
mouse.append_client_mousebindings(params.mousebindings)
for _, bindings in pairs(params.mousebindings) do
mouse.append_client_mousebindings(bindings)
end end
end end
function client_slots.append_keybindings(params) function client_slots.append_keybindings(params)
local keyboard = require "awful.keyboard" return function()
keyboard.append_client_keybindings(params.keybindings)
for _, bindings in pairs(params.keybindings) do
keyboard.append_client_keybindings(bindings)
end end
end end

View File

@ -1,18 +1,17 @@
local client = require "ruled.client"
local notification = require "ruled.notification"
local ruled_slots = {} local ruled_slots = {}
function ruled_slots.append_client_rules(params) function ruled_slots.append_client_rules(params)
local client = require "ruled.client" return function()
client.append_rules(params.rules)
for _, rule in pairs(params.rules) do
client.append_rule(rule)
end end
end end
function ruled_slots.append_notification_rules(params) function ruled_slots.append_notification_rules(params)
local notification = require "ruled.notification" return function()
notification.append_rules(params.rules)
for _, rule in pairs(params.rules) do
notification.append_rule(rule)
end end
end end

View File

@ -1,22 +1,27 @@
local beautiful = require "beautiful"
local imagebox = require "wibox.widget.imagebox"
local tile = require "wibox.container.tile"
local wallpaper = require "awful.wallpaper"
local screen_slots = {} local screen_slots = {}
function screen_slots.wallpaper(screen, params) function screen_slots.wallpaper(params)
local beautiful = require "beautiful" return function(screen)
local wallpaper = require "gears.wallpaper" wallpaper {
screen = screen,
params = params or { widget = {
wallpaper = beautiful.wallpaper, {
image = params.wallpaper or beautiful.wallpaper,
upscale = true,
downscale = true,
widget = imagebox,
},
valign = "center",
halign = "center",
tiled = false,
widget = tile,
},
} }
local w = params.wallpaper
if w then
-- If wallpaper is a function, call it with the screen
if type(w) == "function" then
w = w(screen)
end
wallpaper.maximized(w, screen, true)
end end
end end

View File

@ -1,9 +1,11 @@
local layout = require "awful.layout"
local tag_slots = {} local tag_slots = {}
function tag_slots.default_layouts(params) function tag_slots.default_layouts(params)
local layout = require "awful.layout" return function()
layout.append_default_layouts(params.layouts) layout.append_default_layouts(params.layouts)
end end
end
return tag_slots return tag_slots