Автоматическая смена обоев с помощью азота

Кто из вас пользуется "тайловым оконным менеджером" и наверняка через некоторое время наши обои надоедают нам? Очень раздражает необходимость перекомпилировать, чтобы иметь возможность изменить простые обои или даже повторно запустить «азот» и передать ему другой параметр.

Что ж, сегодня я представляю вам сценарий на bash, он получает случайное изображение из нашей коллекции и помещает его в качестве обоев. Изменить обои азота, если вы загрузите скрипт из здесь не забудьте удалить расширение .txt из файла и дать ему права на выполнение

directory = ~ / Функция изображений my_resolution () {res = `xrandr | grep '*' | grep -o -E '[0-9] + x [0-9] +' `my_high =` echo "$ res" | вырезать -d "x" -f 2` my_width = `echo" $ res "| вырезать -d "x" -f 1`} function rand_image () {image = `ls -1 -b -R" $ directory "| grep -i -e ".png" -e ".jpg" -e ".jpeg" | sort --случайная сортировка | head -1` image_dir = `find" $ directory "-iname" $ ​​image "`} function image_resolution () {rand_image high_image = `identify -format"% h "" $ image_dir "` wide_image = `identify -format" % w "" $ image_dir "`} function ratio () {my_resolution image_resolution height_proportion = `echo $ image_high / $ my_high | bc -l` ratio_width =` echo $ image_width / $ my_width | bc -l`} function scalar () { пропорция если [`echo" $ ratio_high> 1 "| bc` -eq 1 -o` echo" $ ratio_width> 1 "| bc` -eq 1]; затем азот --set-zoom "$ image_dir" еще азот --set-centered "$ image_dir" fi} масштаб выход

Теперь объяснение сценария.
directory = ~ / Изображения // Переходим в каталог, где находятся ваши обои

Разрешение изображения () // Эта функция определяет разрешение нашего монитора и сохраняет его в переменных:
мой_высокий //Высоко
my_width //Ширина

rand_image () // Эта функция получает изображение внутри "каталога"

image = `ls -1 -b -R" $ directory "| grep -i -e ".png" -e ".jpg" -e ".jpeg" | сортировка – случайная сортировка | голова -1`

ВАЖНЫЙ! Если вы заметили, мы фильтруем все файлы с «расширением» .png, .jpg, .jpeg. При необходимости добавьте -e ".extension".

пример:

imagen=`ls -1 -b -R "$directorio" | grep -i -e ".png" -e ".jpg" -e ".jpeg" -e ".nueva_extensión" | sort --random-sort | head -1`

Разрешение изображения () // Эта функция получает разрешение изображения, полученного функцией rand_image ()

пропорция () // Эта функция получает соотношение image_resolution / screen_resolution

подняться () // Эта функция масштабирует изображение, если оно больше разрешения нашего монитора, и устанавливает обои

Теперь, когда у нас есть сценарий для назначения случайных обоев азоту (а также изображение адаптируется к вашему монитору), нам нужно только запускать сценарий время от времени, это достигается путем выполнения следующей команды при запуске

watch -n 4 ruta_donde_se_encuentra_el_script/nombre_del_script

В этом случае эта команда выполняется каждые 4 секунды, обратите внимание, что path_where_the_script_is_found - это полный путь, по которому находится скрипт, а script_name - это имя, которое было дано скрипту.

Я надеюсь, вы сочтете это полезным.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   КЗКГ ^ Гаара сказал

    Я проверю этот азот на предмет скрипта для KDE, который я хочу сделать :)
    В остальном хороший пост ... хахахаха, отличное фото, которое вы выбрали для поста (Snoopy LOL !!!)

    1.    альпий сказал

      Jjajajajjajajaja спасибо, действительно любопытная лотерея, hahajjajajjajaj

  2.   st0rmt4il сказал

    Спасибо ..

  3.   ШИРИНА сказал

    спасибо

  4.   ферхметалл сказал

    спасибо!

  5.   иззывп сказал

    Это не работает с корицей, верно?

    1.    альпий сказал

      Понятия не имею, как поменять обои на корицу, но я уверен, что функция rand_image работает для вас, чтобы получить случайное изображение, поэтому вам просто нужно передать его $ dir_image
      Позвольте мне исследовать

  6.   + AMEM + сказал

    Спасибо, немного доработал для будущих поколений ... Надеюсь, вы не беспокоитесь
    Я хотел бы знать, что вы думаете, я плохо разбираюсь в языке

    #! / Bin / Баш

    # ~ Оригинальный автор
    #~
    # ~ halonsov: математик, любитель GNU / LINUX, программист, пользователь Debian и xmonad.
    #~
    # ~ Ссылки
    #~ https://blog.desdelinux.net/cambiar-automaticamente-el-fondo-de-pantalla-con-nitrogen/
    #~
    # ~ Команда для запуска скрипта каждые 120 секунд
    # ~ смотреть -n 120 /home/amem/backup/DataCrunch/Synaptic/RandomWallpaper.sh
    #~
    # ~ Сотрудничество
    # ~ + AMEM +
    # ~ Лично я предпочитаю использовать его только один раз, чтобы не использовать пространство
    # ~ добавление в autostart.sh
    # ~ /home/amem/backup/DataCrunch/Synaptic/RandomWallpaper.sh &
    # ~ Личное примечание
    # ~ этот скрипт изначально был сделан halonsov.
    # ~ Я изменил его так, чтобы он выполнялся в начале #CrunchBang!
    # ~ цель состоит в том, чтобы все изображения, которые у вас есть на вашем диске, вы могли видеть
    # ~ время от времени, и что они подстраиваются под экран в соответствии со своими свойствами.
    # ~ для этого скрипт определяет характеристики вашего монитора,
    # ~ и изображения или фотографии вашего «каталога»,
    # ~ для выполнения азота + параметр масштабирования или масштабирования, избегая
    # ~ удлиненные пиксельные изображения.
    # ~ Если этот скрипт вам не подходит, вы можете изменить его параметры
    # ~ Например, азот - центрированный
    # ~ для центрирования изображения без масштабирования
    # ~ Я рекомендую вам изучить руководство по азоту.

    #Directory
    # Каталог изображений, которые будут использоваться в качестве обоев, включая подкаталоги
    # Перейдите в каталог, где находятся ваши обои
    # Например, каталог = / home /… / images
    каталог = / home / amem / images / Обои

    # Разрешение монитора
    # Эта функция определяет разрешение нашего монитора и сохраняет его в переменных:
    функция my_resolution ()
    {
    # Получаем разрешение нашего монитора с помощью xrandr
    res = `xrandr | grep '*' | grep -o -E '[0-9] + x [0-9] +' `
    # Высота монитора
    my_high = `echo" $ res "| cut -d "x" -f 2`
    Ширина монитора
    my_width = `echo" $ res "| cut -d "x" -f 1`
    }

    #Random Image
    # Эта функция получает изображение внутри "каталога"
    функция rand_image ()
    {
    # Получаем имя некоторого изображения внутри $ directory
    image = `ls -1 -b -R" $ directory "| grep -i -e ".png" -e ".jpg" -e ".jpeg" | сортировка – случайная сортировка | голова -1`

    #ВАЖНЫЙ! Если вы заметили, мы фильтруем все файлы с «расширением» .png, .jpg, .jpeg. При необходимости добавьте -e ".extension".
    #Пример:
    # image = `ls -1 -b -R" $ directory "| grep -i -e ".png" -e ".jpg" -e ".jpeg" -e ".new_extension" | сортировка – случайная сортировка | голова -1`

    # Получаем путь к $ image
    image_dir = `найти" $ directory "-iname" $ ​​image "`
    }

    # Разрешение изображения
    # Эта функция получает разрешение изображения, полученного функцией rand_imagen ()
    функция image_resolution ()
    {
    rand_image
    # Получаем высоту $ image
    high_image = `identify -format"% h "" $ image_dir "`
    # Получаем ширину $ image
    image_width = `identify -format"% w "" $ image_dir "`
    }

    # Получаем соотношение image_resolution / screen_resolution
    # результат этого деления возвращает значение больше или меньше 1
    # пропорция 1 изображение больше экрана
    функция пропорции ()
    {
    my_resolution
    Разрешение изображения
    tall_rate = `echo $ tall_image / $ my_high | bc -l`
    width_proportion = `echo $ width_image / $ my_width | bc -l`
    }

    # Получаем соотношение image_high / image_width
    # результат этого деления возвращает значение больше или меньше 1; Если изображение не квадратное Oo
    # image_proportion 1 изображение больше в высоту, чем в ширину
    соотношение сторон изображения ()
    {
    Разрешение изображения
    ratio_image_reason = `echo $ tall_image / $ wide_image | bc -l`
    }

    # Установить обои
    # Эта функция изменяет параметры азота в соответствии со свойствами изображения по отношению к монитору
    # Изображение слишком высокое или больше нашего экрана Установка обоев путем масштабирования изображения
    # - Центрирует немасштабированное изображение по центру.
    # –Set-scaled заполняет экран деформированным изображением.
    # –Set-zoom заполняет экран масштабированным изображением вверх
    # –Set-zoom-fill заполняет экран масштабированным изображением вдоль
    скалярная функция ()
    {
    доля
    если [`echo" $ width_proportion> 1 ″ | bc` -eq 1]; тогда
    # Если разрешение изображения больше, чем у нашего экрана, выполните ...
    азот - масштабированный "$ image_dir"
    еще
    если [`echo" $ high_rate> 1 ″ | bc` -eq 1]; тогда
    # Если разрешение изображения меньше, чем у нашего экрана, выполните ...
    азот - центрированный по множеству "$ image_dir"
    еще
    # Когда изображение меньше экрана, мы можем расширить его до длины или ширины
    пропорция изображения
    если [`echo« $ ratioimage_reason> 1 ″ | bc` -eq 1]; тогда
    # Если высота изображения меньше, чем у нашего экрана, выполняем ...
    азот –set-zoom "$ image_dir"
    еще
    if [`echo« $ ratioimage_reason <1 "| bc` -eq 1]; то
    # Если ширина изображения меньше, чем ширина нашего экрана, выполнить ...
    азот –set-zoom-fill "$ image_dir"
    fi
    fi
    fi
    fi
    }

    восхождение

    выход

    1.    Халонсо В сказал

      Превосходно. Спасибо.