每次系统启动时更改壁纸的Shell脚本

时间:2015-01-11 05:23:13

标签: linux shell debian

我尝试使用Debian 7.6 x86_64和GNOME 3.4.2在Kali Linux中编写shell脚本,每次系统启动从目录中获取文件并随机选择它们时,都会更改后台桌面墙纸时间间隔,类似服务或守护进程。我不希望每次启动时都通过终端手动执行它,这就是原因,因为我打开的问题与本网站中的其他问题非常相似,但不一样。我所做的是在退出0行之前将下一行放在rc.local中:sh / etc / my_scripts / wallpaper,壁纸脚本内容我写下的代码。 但它并不算什么。我认为问题在于操作系统无法识别用户有效且真实的UID和GID,因为我没有按终端执行脚本而无法访问环境变量,因此,它不知道是谁创建了这个过程而不是改变壁纸。我使用函数seteuid(),setuid(),setegid(),setgid()和运行与我在rc.local中放置的同一行的system()函数做了一个C程序,它也没有用。我也尝试对脚本进行LSBize并将其复制到/etc/init.d目录中,并使用update-rc.d命令创建指向/etc/rcX.d目录的符号链接,以及desktop-nova或cortina等程序这也不起作用。 那么,我能做些什么来实现我的目标呢?谢谢,抱歉我的英文和大量文字。

#!/bin/sh

wallpaper_changer()
{
    wallpapers=/home/linuxsoldier/Pictures/Favorites2/*
    while true
    do
        wallpaper=`ls $wallpapers | shuf -n1 `
        gsettings set org.gnome.desktop.background picture-uri file://"$wallpaper"
        sleep 15m
    done
}

wallpaper_changer & #To run it in background.

1 个答案:

答案 0 :(得分:0)

您使用的脚本似乎有错误。使用gsetting命令设置背景图像时,必须提供文件的完整绝对路径。

正确的功能如下所示:

wallpaper_changer()
{
    wallpapers=/home/linuxsoldier/Pictures/Favorites2/*
    while true
    do
        wallpaper=`ls -d -1 $wallpapers | shuf -n1 `
        gsettings set org.gnome.desktop.background picture-uri file://"$wallpaper"
        sleep 15m
    done
}

希望它有所帮助。