В рамках работы над SDE реализовал следующий скрипт.
Simple File Info — программа для отображения расширенной информации о файле. Реализована как переносимый POSIX sh-скрипт.
О программе Simple File Info
Программа отображает диалоговое окно с различной информацией о файле, получаемой из инструментов mimetype, file, exiftool, mediainfo, gio info.
Предназначена для использования с легковесными файловыми менеджерами, у которых нет отображения подобной расширенной информации, но есть возможность добавлять кастомные команды для обработки файлов.
К программе прилагается desktop-файл, чтобы все ФМ, поддерживающие обработку привязки приложений и файлов, могли отображать пункт вызова программы в меню «Открыть с помощью».
Более подробно об отображаемой информации:
В типичной Unix-like системе присутствует два механизма идентификации
типа файла: первый на основе базы данных MimeInfo, второй на основе базы данных
для утилиты file
.
Большинство приложений с графическим интерфейсом используют идентификацию
типа файла через MimeInfo.
Многие скрипты для терминала используют идентификацию через file
.
Если у вас в системе установлены команды mimetype и file, Simple File Info включит информацию о типе файла в отчёт.
-
exiftool - мощная программа для отображения метаинформации о файле. В первую очередь она предназначена для отображения данных EXIF в изображениях, но кроме этого поддерживает множество других типов файлов.
-
mediainfo - программа для отображения метаинформации об аудио- и видео-файлах, кроме того, она умеет извлекать метаданные из изображений.
-
gio - модульный фреймфорк для виртуализованной файловой системы, используемый многими графическими программами.
Если у вас в системе установлены команды exiftool
, mediainfo
, gio
, информация
из этих программ будет включена в отчёт.
Отображение информации
Для отображения информации используется один из следующих инструментов:
GXMESSAGE YAD XDIALOG ZENITY XMESSAGE
Simple File Info пытается использовать инструменты в указанном порядке, пока не найдёт установленный и рабочий инструмент.
Чтобы переопределить порядок поиска инструментов, задайте переменную
окружения SIMPLE_FILE_INFO_DIALOG_TOOLS
. Например:
export SIMPLE_FILE_INFO_DIALOG_TOOLS='YAD ZENITY GXMESSAGE'
Проблемы/недоработки инструментов отображения диалогов:
yad
Не выставляет разумные размер окна и положение окна.
zenity
Не выставляет разумные размер окна и положение окна.
Нет возможности менять иконку в заголовке окна.
Look & feel в стиле GNOME не соответствует задумке данной программы.
Xdialog
Опция --fixed-font не работает на моей машине. Требуется дальнейшее изучение проблемы.
Отображает себя на "основном" мониторе, а не на мониторе с активным окном.
Нет возможности менять иконку в заголовке окна.
xmessage
Нет поддержки копирования текста в буфера обмена CLIPBOARD, только в PRIMARY.
Нет возможности менять иконку в заголовке окна.
Нет возможности переноса длинных строк.
Нет поддержки юникода.
gxmessage
Нет возможности менять иконку в заголовке окна.
Вызов программы
Использование:
simple-file-info [команда] файлы...
Команды:
--show-report - Открыть окно с отчётом по указанным файлам.
Если файлов перечислено больше одного, для каждого будет
открыто отдельное окно.
--print-report - Вывести отчёт по файлам в stdout.
--show-help - Открыть окно с данной справкой.
--help - Вывести в stdout данную справку и выйти.
--version - Вывести в stdout версию программы и выйти.
--license - Вывести в stdout информацию о лицензии прогарммы и выйти.
--desktop-entry - Вывести в stdout содержимое desktop-файла.
--check-tools - Вывести в stdout отладочный отчёт о работе внешних утилит.
Если команда не указана, по умолчанию выполняется команда --show-report.
TODO
- Добавить поддержку определяемых пользователем действий-кнопок
- Добавить поддержку определяемых пользователем обработчиков внутри
generate_report
- Добавить умный рассчёт размера и позиции окна для yad и zenity