Cambiar el fondo de pantalla con el comando de terminal en macOS

Cambiar el fondo de pantalla con el comando de terminal en macOS

Es posible cambiar el fondo de pantalla a través de la línea de comando con el comando

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'

donde, por supuesto, <absolute_path_to_file>es solo un marcador de posición para la ruta completa de la imagen que se utilizará como fondo.

Estoy intentando usar este comando para escribir una función zsh, pero tengo algunos problemas para descubrir cómo escapar del nombre de la variable (por ejemplo $1) para obtener una sustitución adecuada. Por ejemplo, usando la función

change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }

y luego

$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg

no funciona y me sale el error:

33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)

probablemente porque $1no se sustituye por la ruta sino que se pasa como una cadena literal. ¿Cómo puedo hacer que esto funcione?

Respuesta1

La expansión de parámetros no puede realizarse entre comillas simples.

Intentar:

change_wallpaper() {
    osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}

Respuesta2

Logré hacerlo funcionar, escapando de las comillas dobles y cambiando las comillas simples por comillas dobles:

change_wallpaper() {
    osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}

información relacionada