6.2 KiB
6.2 KiB
🎇 Wallpaper Easy Setup
This is a simple-to-use, extensible, declarative wallpaper manager.
Practical Examples
-- A default Awesome wallpaper
bling.module.wallpaper.setup()
-- A slideshow with pictures from different sources changing every 30 minutes
bling.module.wallpaper.setup {
wallpaper = {"/images/my_dog.jpg", "/images/my_cat.jpg"},
change_timer = 1800
}
-- A random wallpaper with images from multiple folders
bling.module.wallpaper.setup {
set_function = bling.module.wallpaper.setters.random,
wallpaper = {"/path/to/a/folder", "/path/to/another/folder"},
change_timer = 631, -- prime numbers are better for timers
position = "fit",
background = "#424242"
}
-- wallpapers based on a schedule, like awesome-glorious-widgets dynamic wallpaper
-- https://github.com/manilarome/awesome-glorious-widgets/tree/master/dynamic-wallpaper
bling.module.wallpaper.setup {
set_function = bling.module.wallpaper.setters.simple_schedule,
wallpaper = {
["06:22:00"] = "morning-wallpaper.jpg",
["12:00:00"] = "noon-wallpaper.jpg",
["17:58:00"] = "night-wallpaper.jpg",
["24:00:00"] = "midnight-wallpaper.jpg",
},
position = "maximized",
}
-- random wallpapers, from different folder depending on time of the day
bling.module.wallpaper.setup {
set_function = bling.module.wallpaper.setters.simple_schedule,
wallpaper = {
["09:00:00"] = "~/Pictures/safe_for_work",
["18:00:00"] = "~/Pictures/personal",
},
schedule_set_function = bling.module.wallpaper.setters.random
position = "maximized",
recursive = false,
change_timer = 600
}
-- setup for multiple screens at once
-- the 'screen' argument can be a table of screen objects
bling.module.wallpaper.setup {
set_function = bling.module.wallpaper.setters.random,
screen = screen, -- The awesome 'screen' variable is an array of all screen objects
wallpaper = {"/path/to/a/folder", "/path/to/another/folder"},
change_timer = 631
}
Details
The setup function will do 2 things: call the set-function when awesome requests a wallpaper, and manage a timer to call set_function
periodically.
Its argument is a args table that is passed to ohter functions (setters and wallpaper functions), so you define everything with setup.
The set_function
is a function called every times a wallpaper is needed.
The module provides some setters:
bling.module.wallpaper.setters.awesome_wallpaper
: beautiful.theme_assets.wallpaper with defaults from beautiful.bling.module.wallpaper.setters.simple
: slideshow from thewallpaper
argument.bling.module.wallpaper.setters.random
: same as simple but in a random way.bling.module.wallpaper.setters.simple_schedule
: takes a table of["HH:MM:SS"] = wallpaper
arguments, where wallpaper is thewallpaper
argument used byschedule_set_function
.
A wallpaper is one of the following elements:
- a color
- an image
- a folder containing images
- a function that sets a wallpaper
- everything gears.wallpaper functions can manage (cairo surface, cairo pattern string)
- a list containing any of the elements above
To set up for multiple screens, two possible methods are:
- Call the
setup
function for each screen, passing the appropriate configuration andscreen
arg - Call the
setup
function once, passing a table of screens as thescreen
arg. This applies the same configuration to all screens in the table Note: Multiple screen setup only works for thesimple
andrandom
setters
-- This is a valid wallpaper definition
bling.module.wallpaper.setup {
wallpaper = { -- a list
"black", "#112233", -- colors
"wall1.jpg", "wall2.png", -- files
"/path/to/wallpapers", -- folders
-- cairo patterns
"radial:600,50,100:105,550,900:0,#2200ff:0.5,#00ff00:1,#101010",
-- or functions that set a wallpaper
function(args) bling.module.tiled_wallpaper("\\o/", args.screen) end,
bling.module.wallpaper.setters.awesome_wallpaper,
},
change_timer = 10,
}
The provided setters simple
and random
will use 2 internal functions that you can use to write your own setter:
bling.module.wallpaper.prepare_list
: return a list of wallpapers directly usable byapply
(for now, it just explores folders)bling.module.wallpaper.apply
: a wrapper for gears.wallpaper functions, using the args table of setup
Here are the defaults:
-- Default parameters
bling.module.wallpaper.setup {
screen = nil, -- the screen to apply the wallpaper, as seen in gears.wallpaper functions
screens = nil, -- an array of screens to apply the wallpaper on. If 'screen' is also provided, this is overridden
change_timer = nil, -- the timer in seconds. If set, call the set_function every change_timer seconds
set_function = nil, -- the setter function
-- parameters used by bling.module.wallpaper.prepare_list
wallpaper = nil, -- the wallpaper object, see simple or simple_schedule documentation
image_formats = {"jpg", "jpeg", "png", "bmp"}, -- when searching in folder, consider these files only
recursive = true, -- when searching in folder, search also in subfolders
-- parameters used by bling.module.wallpaper.apply
position = nil, -- use a function of gears.wallpaper when applicable ("centered", "fit", "maximized", "tiled")
background = beautiful.bg_normal or "black", -- see gears.wallpaper functions
ignore_aspect = false, -- see gears.wallpaper.maximized
offset = {x = 0, y = 0}, -- see gears.wallpaper functions
scale = 1, -- see gears.wallpaper.centered
-- parameters that only apply to bling.module.wallpaper.setter.awesome (as a setter or as a wallpaper function)
colors = { -- see beautiful.theme_assets.wallpaper
bg = beautiful.bg_color, -- the actual default is this color but darkened or lightned
fg = beautiful.fg_color,
alt_fg = beautiful.fg_focus
}
}
Check documentation in module/wallpaper.lua for more details.