102 lines
3.7 KiB
Lua
102 lines
3.7 KiB
Lua
|
-- ██╗ ██╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ██████╗ ███████╗██████╗
|
||
|
-- ██║ ██║██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗
|
||
|
-- ██║ █╗ ██║███████║██║ ██║ ██████╔╝███████║██████╔╝█████╗ ██████╔╝
|
||
|
-- ██║███╗██║██╔══██║██║ ██║ ██╔═══╝ ██╔══██║██╔═══╝ ██╔══╝ ██╔══██╗
|
||
|
-- ╚███╔███╔╝██║ ██║███████╗███████╗██║ ██║ ██║██║ ███████╗██║ ██║
|
||
|
-- ╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝
|
||
|
|
||
|
-- ===================================================================
|
||
|
-- Imports
|
||
|
-- ===================================================================
|
||
|
|
||
|
|
||
|
local awful = require("awful")
|
||
|
local gears = require("gears")
|
||
|
local naughty = require("naughty")
|
||
|
|
||
|
|
||
|
-- ===================================================================
|
||
|
-- Initialization
|
||
|
-- ===================================================================
|
||
|
|
||
|
|
||
|
local is_blurred = false;
|
||
|
|
||
|
local wallpaper_dir = gears.filesystem.get_configuration_dir() .. "/wallpaper"
|
||
|
local wallpaper = wallpaper_dir .. "/wallpaper.png"
|
||
|
local blurred_wallpaper = wallpaper_dir .. "/blurredWallpaper.png"
|
||
|
|
||
|
awful.spawn.with_shell("feh --bg-fill " .. wallpaper)
|
||
|
|
||
|
--- Check if a file or directory exists in this path
|
||
|
local function exists(file)
|
||
|
local ok, err, code = os.rename(file, file)
|
||
|
if not ok then
|
||
|
if code == 13 then
|
||
|
-- Permission denied, but it exists
|
||
|
return true
|
||
|
end
|
||
|
end
|
||
|
return ok, err
|
||
|
end
|
||
|
|
||
|
-- check if blurred wallpaper needs to be created
|
||
|
if not exists(blurred_wallpaper) then
|
||
|
naughty.notify({
|
||
|
preset = naughty.config.presets.normal,
|
||
|
title = "Wallpaper",
|
||
|
text = "Generating blurred wallpaper..."
|
||
|
})
|
||
|
-- uses image magick to create a blurred version of the wallpaper
|
||
|
awful.spawn.with_shell("convert -filter Gaussian -blur 0x30 " .. wallpaper .. " " .. blurred_wallpaper)
|
||
|
end
|
||
|
|
||
|
|
||
|
-- ===================================================================
|
||
|
-- Functionality
|
||
|
-- ===================================================================
|
||
|
|
||
|
|
||
|
-- changes to blurred wallpaper
|
||
|
local function blur()
|
||
|
if not is_blurred then
|
||
|
awful.spawn.with_shell("feh --bg-fill " .. blurred_wallpaper)
|
||
|
is_blurred = true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- changes to normal wallpaper
|
||
|
local function unblur()
|
||
|
if is_blurred then
|
||
|
awful.spawn.with_shell("feh --bg-fill " .. wallpaper)
|
||
|
is_blurred = false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- blur / unblur on tag change
|
||
|
tag.connect_signal("property::selected", function(t)
|
||
|
-- check if tag has any clients
|
||
|
for _ in pairs(t:clients()) do
|
||
|
blur()
|
||
|
return
|
||
|
end
|
||
|
-- unblur if tag has no clients
|
||
|
unblur()
|
||
|
end)
|
||
|
|
||
|
-- check if wallpaper should be blurred on client open
|
||
|
client.connect_signal("manage", function(c)
|
||
|
blur()
|
||
|
end)
|
||
|
|
||
|
-- check if wallpaper should be unblurred on client close
|
||
|
client.connect_signal("unmanage", function(c)
|
||
|
local t = awful.screen.focused().selected_tag
|
||
|
-- check if tag has any clients
|
||
|
for _ in pairs(t:clients()) do
|
||
|
return
|
||
|
end
|
||
|
-- unblur if tag has no clients
|
||
|
unblur()
|
||
|
end)
|