É possível alterar o papel de parede através da linha de comando com o comando
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'
onde, claro, <absolute_path_to_file>
é apenas um espaço reservado para o caminho completo da imagem a ser usada como plano de fundo.
Estou tentando usar este comando para escrever uma função zsh, mas estou tendo alguns problemas para descobrir como escapar do nome da variável (por ex $1
) para obter a substituição adequada. Por exemplo, usando a função
change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }
e então
$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg
não funciona e recebo o erro:
33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)
provavelmente porque $1
não está sendo substituído pelo caminho, mas é passado como uma string literal. Como posso fazer isso funcionar?
Responder1
A expansão de parâmetros não pode ocorrer entre aspas simples.
Tentar:
change_wallpaper() {
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}
Responder2
Consegui fazer funcionar, escapando das aspas duplas e trocando as aspas simples por aspas duplas:
change_wallpaper() {
osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}