如何测试.desktop 文件是否正常工作?

如何测试.desktop 文件是否正常工作?

背景

我有一个脚本,每 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由于本文中提到的原因,无法使用:

https://askubuntu.com/a/1449904/149504

答案1

您可以.desktop通过双击执行文件来测试它。如果文件.desktop不起作用,则必须进行一些故障排除。首先,您需要检查脚本是否在终端中按预期工作。

脚本需要 shebang#!/bin/bash作为第一行。检查脚本的语法,壳牌检测非常有用。或者安装包shellcheck( sudo apt install shellcheck)。

文件.desktop必须是可执行的,因此你可能需要运行

chmod +x ~/.config/autostart/background_changer.desktop

或者使用文件管理器使文件可执行。

帮自己一个忙,给.desktop文件起一个有意义的名字,这样你不用看它的内容就知道文件的用途了。我不确定文件名.desktop是不是个问题(至少它是一个隐藏文件!),但那个目录中可能还有更多的.desktop文件(如果不是现在,那么以后可能会有)。一个有意义的名字可以帮助你保持概览。

相关内容