Bash · 22.03.2024

Всё тот же минимализм фоном

Пост является продолжением вот этого поста, но уже на 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

Ну, и для порядка кнопка: