Пост является продолжением вот этого поста, но уже на bash. Все посты про bash можно найти по этому тегу, а про linux по этому.
Теперь всё тоже самое, что и здесь, но в Linux Lubuntu 16.04. У этого дистрибутива Lubuntu среда рабочего стола LXDE и файловый менеджер PCManFM версии 1.2.4, плюс небольшой набор нужного софта почти на все случаи жизни. Кстати, скачать дистрибутив этой чудесной операционки можно здесь.
Но прежде чем выкатывать код — расскажу почему был выбран именно этот дистрибутив и эта версия. Есть у меня старенький нетбук с одноядерным процессором, парой гигабайт оперативной памяти, но долгоиграющей батареей, полноценным сетевым портом под rj-45, шустрым wi-fi адаптером и десяти дюжинами твердотельного на борту.
И вот перебрав целую кучу дистрибутивов для сабжа, я остановился на Linux Lubuntu 16.04. Именно с этой операционной системой нетбук стал максимально отзывчив, спокоен и экономичен к ресурсам. Кроме перечисленного, огромный плюс ОСи — это доступность репозиториев Ubuntu и привычные команды.
Завершая затянувшуюся преамбулу: когда мне уже успели приесться системные геометрические обои Lubuntu — я вспомнил про этот проект с простым API и тот самый весенний пост.
Мне требовалось переписать всё, что я нагородил там, но уже на bash. Скрипт должен был скачать красивую картинку файл с Minimalistic Wallpaper Collection (ссылка), проверить — является ли файл изображением, а потом использовать PCManFM для установки изображения в качестве обоев рабочего стола.
Получилась вот такая конструкция:
#!/bin/bash # Ниже памятка - как сделать скрипт исполняемым # Путь к скрипту можете указать свой # sudo chmod +x /scripts/getwalls.sh # <== памятка # Все операции будут производиться в папке со скриптом cd $(dirname "$0") # Адрес API проекта url="https://minimalistic-wallpaper.demolab.com/?random" # Переменные с именами файлов tempfile="temp" wallfile="wallpaper.jpg" # Скачивание изображения во временный файл temp curl --location $url --create-dirs -o $tempfile --silent # Проверяем, является ли файл изображением (мало ли) if [[ $(file --mime-type -b "$tempfile") == image/*g ]]; then # Переименовываем файл из temp в wallpaper.jpg mv $tempfile $wallfile # Получаем полный путь к файлу wallpaper.jpg getpath=$(readlink -f $wallfile) # Устанавливаем wallpaper.jpg в качестве обоев рабочего стола # Работает только при условии установленного PCManFM pcmanfm --set-wallpaper=$getpath # Если файл temp не является изображением, # выводим сообщение и удаляем его else echo "The file is not an image!" rm $tempfile fi
Разумеется, вариант не универсален и будет полноценно работать только при условии установленного PCManFM. Скрипт не тестировался в связке с cron, поэтому ничего не могу сказать по поводу планировщика.
Скачать скрипт можно с помощью этой конструкции:
sudo wget -P /scripts https://ngdream.ru/getwalls.sh
После скачивания делаем скрипт исполняемым:
sudo chmod +x /scripts/getwalls.sh
Эта команда закомментирована в шапке скрипта.
Вызывается скрипт стандартно:
/scripts/getwalls.sh
Ну, и для порядка кнопка: