【发布时间】:2020-04-26 03:23:32
【问题描述】:
我在 Manjaro Linux (Arch) 上使用 Awesome 4.3 我从 KDE 桌面更改为 XFCE 桌面。我写了一个壁纸切换器,它会在四个独立的屏幕上随机改变壁纸。出于开发目的,我在标准 Lua 文件中编写了随机化例程。我将它添加到 rc.lua,但 Lua 计时器(luv)似乎没有在 rc.lua 中运行。我分别检查了所有方法以从我的随机例程中加载壁纸,当我直接为四个屏幕调用一组文件时,它们完美地工作。一旦我添加了间隔计时器,什么都没有发生,没有错误,什么都没有。
这是简化为仅加载一个屏幕的代码,我是否遗漏了什么,取出了令人敬畏的对象并替换为打印语句,它在标准 Lua 文件中完美运行
感谢任何帮助
local lfs = require('lfs') -- lua file system
local uv = require('luv') -- lua timer
local dir = "/home/jerry/Documents/wallpaper"
local images = {} -- images collection
local idx = 0
math.randomseed(os.time())
local function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
local function readImages(path)
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
images[idx] = path .. '/' .. file
idx = idx + 1
end
end
end
readImages(dir);
imageCount = tablelength(images)
local function getImage()
number = math.random(1, imageCount)
return images[number]
end
local function setInterval(interval, callback)
local timer = uv.new_timer()
uv.timer_start(timer, 0, interval, callback)
return timer
end
local function cb()
local path = getImage()
gears.wallpaper.maximized(path, screen[1], true)
end
timer1 = setInterval(1000, cb)
local function cb(gears, getImage, screen, screenIndex)
return function()
print(gears)
print(getImage())
print(screen)
print("Screen " .. screenIndex)
return gears.wallpaper.maximized(getImage(), screen[screenIndex], true)
end
end
【问题讨论】:
标签: lua awesome-wm