背景
我有一个脚本,每 5 分钟更改一次我的 Ubuntu 22 上的壁纸:
#!/bin/bash
targetDir="/home/pedro/Pictures/Wallpapers"
function get_next_photo() {
# Returns a random file form targetdir
files=( "$targetDir"/* )
echo "${files[RANDOM % ${#files[@]}]}"
}
function set_background() {
# Takes an absolute file path as argument. Need * for spaces in path
bg="$*"
echo "Setting background to $bg"
dconf write "/org/gnome/desktop/background/picture-uri" "'file://$bg'"
}
while :
do
background=$(get_next_photo)
echo "Next background is $background"
set_background $background
sleep 5m
done
我的目标是在启动时运行此脚本,为此,我创建了一个.dektop
文件~/.config/autostart/background_changer.desktop
:
[Desktop Entry]
Version=1.0
Name=Wallpaper Changer
Comment=Periodically changes the background wallpaper, taking random images from the Pictures/wallpapers folder.
Exec=/home/mypc/background_changer.sh
Icon=/usr/share/icons/gnome-logo-text.svg
Terminal=false
Type=Application
Categories=Utility;
此文件的权限:
$ stat background_changer.desktop
File: background_changer.desktop
Size: 296 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 5918548 Links: 1
Access: (0775/-rwxrwxr-x) Uid: ( 1000/ mypc) Gid: ( 1000/ mypc)
Access: 2023-01-16 09:55:14.680162348 +0100
Modify: 2023-01-11 15:38:45.036172742 +0100
Change: 2023-01-13 13:09:00.130731451 +0100
Birth: 2023-01-11 15:38:45.036172742 +0100
问题
但是,当我启动计算机时,什么也没有发生。有没有办法验证脚本是否已成功启动?
请注意,systemd
由于本文中提到的原因,无法使用:
答案1
您可以.desktop
通过双击执行文件来测试它。如果文件.desktop
不起作用,则必须进行一些故障排除。首先,您需要检查脚本是否在终端中按预期工作。
脚本需要 shebang#!/bin/bash
作为第一行。检查脚本的语法,壳牌检测非常有用。或者安装包shellcheck
( sudo apt install shellcheck
)。
文件.desktop
必须是可执行的,因此你可能需要运行
chmod +x ~/.config/autostart/background_changer.desktop
或者使用文件管理器使文件可执行。
帮自己一个忙,给.desktop
文件起一个有意义的名字,这样你不用看它的内容就知道文件的用途了。我不确定文件名.desktop
是不是个问题(至少它是一个隐藏文件!),但那个目录中可能还有更多的.desktop
文件(如果不是现在,那么以后可能会有)。一个有意义的名字可以帮助你保持概览。