所以我想复制Mac os上的桌面壁纸更改为时间的内容
我将 Manjaro 与 KDE 一起使用
以下代码将使用给定的图片路径更改 KDE 上的壁纸
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "<<<<PATH>>>>")}'
这是从另一个地方复制的,它使用多个图片此代码只需在终端上运行即可工作
所以我想创建其中 5 个,并将壁纸更改为各自的时间
将它们命名为 noon.sh Morning.sh 等等
这些文件已创建并授予其所需的权限
chmod u+x <filename>
在让那些甚至抨击他们的作品之后
./noon.sh
我不能对此使用 crontab,因为据我所知,它不会安排到特定时间(我可能是错的)
所以现在我有了文件并在终端中输入了 ./PATH/noon | 11:00
这确实有效并在给定时间内更改了壁纸
所以现在我有另一个文件,其中 24 个 em 每隔 1 小时更改一次壁纸
像这样
#!/bin/sh
echo "./Documents/WallpaperScript/night.sh\n" | at 00:00
echo "./Documents/WallpaperScript/night.sh\n" | at 01:00
echo "./Documents/WallpaperScript/night.sh\n" | at 02:00
echo "./Documents/WallpaperScript/night.sh\n" | at 03:00
echo "./Documents/WallpaperScript/night.sh\n" | at 04:00
echo "./Documents/WallpaperScript/night.sh\n" | at 05:00
echo "./Documents/WallpaperScript/morning.sh\n" | at 06:00
echo "./Documents/WallpaperScript/morning.sh\n" | at 07:00
echo "./Documents/WallpaperScript/morning.sh\n" | at 08:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 09:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 10:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 11:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 12:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 13:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 14:00
echo "./Documents/WallpaperScript/noon.sh\n" | at 15:00
echo "./Documents/WallpaperScript/evening.sh\n" | at 16:00
echo "./Documents/WallpaperScript/evening.sh\n" | at 17:00
echo "./Documents/WallpaperScript/dusk.sh\n" | at 18:00
echo "./Documents/WallpaperScript/night.sh\n" | at 19:00
echo "./Documents/WallpaperScript/night.sh\n" | at 20:00
echo "./Documents/WallpaperScript/night.sh\n" | at 21:00
echo "./Documents/WallpaperScript/night.sh\n" | at 22:00
echo "./Documents/WallpaperScript/night.sh" | at 23:00
并在设置页面的帮助下
我用它作为启动脚本
似乎不起作用
但是如果我运行atq
命令,我可以看到 at 进程被调度的输出
但它不起作用
有人可以帮忙吗:3
PS 抱歉我的英语不好,而且我还是 Linux 新手
答案1
你可以设置 cron 在特定时间运行,也许它不精确到秒或小数,但你真的会注意到吗?
这是我的建议/etc/crontab
:
00 * * * * *user* /home/*user*/Documents/WallpaperScript/setWallpaper.sh
在脚本内部,您可以有一个变量,例如HH=$(date +%H)
知道现在是什么时间以及要使用哪个图像。
它仍然无法通过 cron 工作,因为 cron 在后台运行并且不知道您的显示。
我不知道at,但我认为是一样的。
尝试DISPLAY=:0
在致电之前添加qdbus
。
所以这是你应该运行的:
DISPLAY=:0 qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops(); print (allDesktops); for (i=0;i<allDesktops.length;i++) {d = allDesktops[i]; d.wallpaperPlugin = "org.kde.image"; d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General"); d.writeConfig("Image", "<<<<PATH>>>>")}'
作为奖励(我从 cron 运行相同的脚本),您还可以将锁屏设置为相同的图像:
DISPLAY=:0 kwriteconfig5 --file /home/*user*/.config/kscreenlockerrc --group Greeter --group Wallpaper --group org.kde.image --group General --key Image "file://<<<<PATH>>>>"