Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76226cb637 |
+31
-3
@@ -247,11 +247,29 @@ function M.randomizeWallpaper()
|
|||||||
local home = os.getenv("HOME")
|
local home = os.getenv("HOME")
|
||||||
local april_dir = home .. "/images/April"
|
local april_dir = home .. "/images/April"
|
||||||
local sbm_dir = home .. "/images/Seven Beats Music"
|
local sbm_dir = home .. "/images/Seven Beats Music"
|
||||||
|
local black_png = home .. "/images/black.png"
|
||||||
|
|
||||||
-- Choose image source based on monitor count
|
-- Determine if we are on the home WiFi ("keep")
|
||||||
local img_dir = (#monitors <= 1) and april_dir or sbm_dir
|
local is_home_wifi = false
|
||||||
|
local f = io.popen("bash -c '/usr/bin/iwgetid -r 2>/dev/null || /usr/bin/nmcli -t -f active,ssid dev wifi 2>/dev/null | grep \"^yes\" | cut -d: -f2'")
|
||||||
|
if f then
|
||||||
|
local ssid = f:read("*a")
|
||||||
|
f:close()
|
||||||
|
if ssid and ssid:match("keep") then
|
||||||
|
is_home_wifi = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Select image source based on location
|
||||||
|
local img_dir = nil
|
||||||
|
if #monitors > 1 then
|
||||||
|
img_dir = sbm_dir
|
||||||
|
elseif is_home_wifi then
|
||||||
|
img_dir = april_dir
|
||||||
|
end
|
||||||
|
|
||||||
local images = {}
|
local images = {}
|
||||||
|
if img_dir then
|
||||||
local handle = io.popen('find "' .. img_dir .. '" -type f \\( -name "*.jpg" -o -name "*.png" -o -name "*.jpeg" \\) 2>/dev/null')
|
local handle = io.popen('find "' .. img_dir .. '" -type f \\( -name "*.jpg" -o -name "*.png" -o -name "*.jpeg" \\) 2>/dev/null')
|
||||||
if handle then
|
if handle then
|
||||||
for line in handle:lines() do
|
for line in handle:lines() do
|
||||||
@@ -259,9 +277,15 @@ function M.randomizeWallpaper()
|
|||||||
end
|
end
|
||||||
handle:close()
|
handle:close()
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
table.insert(images, black_png)
|
||||||
|
end
|
||||||
|
|
||||||
if #images == 0 then return end
|
if #images == 0 then return end
|
||||||
|
|
||||||
|
-- Unload old wallpapers from memory
|
||||||
|
hl.dispatch(hl.dsp.exec_cmd("hyprctl hyprpaper unload all"))
|
||||||
|
|
||||||
-- Pick a unique random image for each monitor
|
-- Pick a unique random image for each monitor
|
||||||
math.randomseed(os.time())
|
math.randomseed(os.time())
|
||||||
local used = {}
|
local used = {}
|
||||||
@@ -277,8 +301,12 @@ function M.randomizeWallpaper()
|
|||||||
end
|
end
|
||||||
attempts = attempts + 1
|
attempts = attempts + 1
|
||||||
end
|
end
|
||||||
|
if not img then img = images[1] end -- fallback if we run out of unique images
|
||||||
|
|
||||||
if img then
|
if img then
|
||||||
hl.dispatch(hl.dsp.exec_cmd('hyprctl hyprpaper reload "' .. mon.name .. ',' .. img .. '"'))
|
-- Standard hyprpaper IPC
|
||||||
|
hl.dispatch(hl.dsp.exec_cmd('hyprctl hyprpaper preload "' .. img .. '"'))
|
||||||
|
hl.dispatch(hl.dsp.exec_cmd('hyprctl hyprpaper wallpaper "' .. mon.name .. ',' .. img .. '"'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user