创建一个不时变化的壁纸脚本(所需时间)

创建一个不时变化的壁纸脚本(所需时间)

所以我想复制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>>>>"

相关内容