Изменить обои можно через командную строку с помощью команды
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "<absolute_path_to_file>"'
где, конечно, <absolute_path_to_file>
это просто заполнитель для полного пути изображения, которое будет использоваться в качестве фона.
Я пытаюсь использовать эту команду для написания функции zsh, но у меня возникли некоторые проблемы с тем, как экранировать имя переменной (например, $1
), чтобы получить правильную подстановку. Например, использование функции
change_wallpaper () { osascript -e 'tell application "Finder" to set desktop picture to POSIX file "$1"' }
а потом
$ change_wallpaper /Users/noibe/Wallpapers/wallpaper.jpg
не работает, и я получаю ошибку:
33:48: execution error: Finder got an error: AppleEvent handler failed. (-10000)
вероятно, потому что $1
не заменяется путем, а передается как буквальная строка. Как мне заставить это работать?
решение1
Расширение параметров не может осуществляться внутри одинарных кавычек.
Пытаться:
change_wallpaper() {
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "'"$1"\"
}
решение2
Мне удалось заставить это работать, экранировав двойные кавычки и заменив одинарные кавычки на двойные:
change_wallpaper() {
osascript -e "tell application \"Finder\" to set desktop picture to POSIX file \"$1\""
}