gpt4 book ai didi

linux - 每次系统启动时更改墙纸的 Shell 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:39 24 4
gpt4 key购买 nike

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

#!/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.

最佳答案

您使用的脚本似乎有错误。使用 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
}

希望对您有所帮助。

关于linux - 每次系统启动时更改墙纸的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27884244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com