Привет, народ!
Вот и у меня наступил момент, когда возникла потребность почаще смотреть на что-то прекрасное. Обои на рабочем столе видно редко из-за постоянно развёрнутых приложений, поэтому я решил возродить идею использования программной фото-рамки, в которой в режиме слайд-шоу друг за другом отображались бы симпатичные картинки/фотографии из заданной директории. Не торопясь делать свой велосипед, я поискал готовые и наткнулся на программулину, название которой вынесено в заголовок – Gnome Photo Frame. К сожалению, заставить её работать у меня не вышло; статьи по этой утилите, которые я находил, датируются 2012-м годом. Возможно, это как-то взаимосвязано.
Поэтому ниже я опишу что было сделано для создания похожей по функциональности схемы: каталог с картинками (локально), циклическое слайд-шоу из которых отображается в окошке заданного размера на рабочем столе или поверх других приложений.
TL;DR: GPicView + wmctrl
Итак, готовая схема для меня выглядит как использование двух приложений: GPicView для слайдшоу в окошке со скрытой панелью для минимализации интерфейса и wmctrl для управления размером, расположением и другими параметрами первого.
Итак, готовая схема для меня выглядит как использование двух приложений: GPicView для слайдшоу в окошке со скрытой панелью для минимализации интерфейса и wmctrl для управления размером, расположением и другими параметрами первого.
Разумеется, в итоге всё запускается одним скриптом поэтому "излишние телодвижения" нам потребуется произвести только однажды, а дальше оно будет "просто работать". По крайней мере, так оно должно быть.
Установка необходимых компонентов в Ubuntu не потребовала подключения никаких других репозиториев и выполнилась одной командой
Кроме того, изменить настройки программы можно непосредственно отредактировав файл ~/.config/gpicview/gpicview.conf.
Для обычного просмотра изображений в системе я использую другое приложение, поэтому устанавливать GPicView дефолтным для системы я не стал.
Вдобавок, это может помешать на следующем этапе, когда мы будем управлять окном с запущенным слайд-шоу, если в системе на тот момент будет запущен дополнительный процесс GPicView (например, как раз обычный просмотр изображения).
А вот и этап управления параметрами окна с помощью wmctrl. Про обращение к конкретно окну с воспроизводящим слайд-ноу GPicView я напишу буквально несколькими строчками ниже, а сейчас перечислю пару ключей с параметрами, которые использую у себя:
-e 0,1000,200,250,250
здесь размеры окна и размещение, а конкретнее –
0 – задаёт использование системной настройки "прилипания" окошек;
1000,200 – отступ в пикселях от левого и верхнего края экрана соответственно
250,250 – размер области для слайд-шоу (ширина и высота в пикселях)
-b "add,above,skip_taskbar"
а это установка окна "поверх всех" (above) и скрытие кнопки приложения с панели задач (skip_taskbar); "add" – указание на добавление следующих за ним параметров.
Установка необходимых компонентов в Ubuntu не потребовала подключения никаких других репозиториев и выполнилась одной командой
sudo apt install gpicview wmctrlПосле этого я запустил GPicView (в русской локализации приложение называется Просмотр изображений) и после клика ПКМ (правой клавишей мыши) в окне программы выбрал пункт Показать/Скрыть панель, что также можно сделать нажатием [T]. Дополнительно в настройках программы ([P]) я указал для слайд-шоу интервал 4 сек. (по умолчанию – 5 сек.) и в качестве фона задал стандартный цвет рабочей области приложений у меня в системе (#CECECE).
Кроме того, изменить настройки программы можно непосредственно отредактировав файл ~/.config/gpicview/gpicview.conf.
Для обычного просмотра изображений в системе я использую другое приложение, поэтому устанавливать GPicView дефолтным для системы я не стал.
Вдобавок, это может помешать на следующем этапе, когда мы будем управлять окном с запущенным слайд-шоу, если в системе на тот момент будет запущен дополнительный процесс GPicView (например, как раз обычный просмотр изображения).
А вот и этап управления параметрами окна с помощью wmctrl. Про обращение к конкретно окну с воспроизводящим слайд-ноу GPicView я напишу буквально несколькими строчками ниже, а сейчас перечислю пару ключей с параметрами, которые использую у себя:
-e 0,1000,200,250,250
здесь размеры окна и размещение, а конкретнее –
0 – задаёт использование системной настройки "прилипания" окошек;
1000,200 – отступ в пикселях от левого и верхнего края экрана соответственно
250,250 – размер области для слайд-шоу (ширина и высота в пикселях)
-b "add,above,skip_taskbar"
а это установка окна "поверх всех" (above) и скрытие кнопки приложения с панели задач (skip_taskbar); "add" – указание на добавление следующих за ним параметров.
А теперь про обращение к конкретному окну. Когда окно программы GPicView пустое, в заголовке отображается "Просмотр изображений", но когда там воспроизводится слайд-шоу, в заголовке этот текст меняется на путь к отображающемуся в текущий момент файлу, поэтому тут приходится делать немного хитрее – обращаться к программе по идентификатору (который может изменять своё значение, поэтому мы будем выцеплять его из списка доступных в текущий момент окон на лету) и в результате оперировать с помощью конструкции:
wmctrl -i -a `wmctrl -lx | grep -i "gpicview"`
После этой конструкции и добавляем описанные ранее ключи -e и -b, учитывая, что для каждого из них надо отдельно прописать указание на окно, т.е., фактически дважды прописать вышеозначенную строчку – сначала с одним ключом и его параметрами, потом со вторым и его.
Осталось совсем немного – запускать слайд-шоу из командной строки и можно будет собрать все куски для нашего скрипта воедино.
Для файлов, "участвующих" в слайд-шоу я создал отдельную директорию. Плюсом за такой вариант сюда можно отнести то, что если вместо файлов здесь размещать символические ссылки на них, это с одной стороны избавит вас от необходимости копирования и, соответственно дублирования информации только для слайд-шоу, а с другой – снимет ограничение на использование какой-то одной директории, ведь симлинков вы можете накидать сюда на файлы из разных мест.
Конечно же, можно сделать даже отдельные, уменьшенные файлы, которые будут открываться в окошке заданного вами размера без масштабирования, но у меня файлы не настолько огромные, чтобы GPicView тратил заметное время, изменяя их размер для уменьшенного отображения на лету. Хотя, разумеется, в некоторых случаях предпочтительным может оказаться такой вариант.
Конечно же, можно сделать даже отдельные, уменьшенные файлы, которые будут открываться в окошке заданного вами размера без масштабирования, но у меня файлы не настолько огромные, чтобы GPicView тратил заметное время, изменяя их размер для уменьшенного отображения на лету. Хотя, разумеется, в некоторых случаях предпочтительным может оказаться такой вариант.
Ну и, наконец, итоговый скрипт для bash (sh), который делает всё, что описано выше:
#!/bin/sh
cd '<Путь-к-директории-с-контентом-для-слайд-шоу>'
gpicview . --slideshow & sleep 1 &&
wmctrl -i -a `wmctrl -lx | grep -i "gpicview"` -e 0,1000,200,250,250 &&
wmctrl -i -a `wmctrl -lx | grep -i "gpicview"` -b "add,above,skip_taskbar"
где:
1. Стандартное баше-скриптовое указание;
2. Смена рабочей директории (замените путь внутри < > на свой);
3. Запуск слайд-шоу в GPicView из текущей (п. 2) директории и приостановка на 1 сек.;
4. Изменение размеров и положения окна GPicView с помощью wmctrl;
5. Отображение этого окна поверх других и скрытие кнопки с панели задач.
Готовый скрипт из пяти строк (пусть будет MyPhotoFrame.sh) не обязательно делать исполняемым; его можно запускать командой:
5. Отображение этого окна поверх других и скрытие кнопки с панели задач.
Готовый скрипт из пяти строк (пусть будет MyPhotoFrame.sh) не обязательно делать исполняемым; его можно запускать командой:
sh "<путь-к-скрипту>/MyPhotoFrame.sh"
P.S. Возможность перемещения окна, изменения его размеров и принадлежности конкретному виртуальному рабочему столу (или всем сразу) остаётся.
Комментариев нет:
Отправить комментарий
Если у вас есть что сказать и/или вы не согласны с изложенным в посте – оставьте комментарий. Регистрации не требуется.
If you think I'm wrong and/or you have to say something – fill free to write comment. No sign up required.