В настройках Nautilus для отображения папок в режиме 'View as List' я всегда заменяю колонку 'Type' на 'MIME Type'.
Можно заметить что умная программа пытается распознать тип файла при обращении к нему именно по содержанию файла, а не по его расширению. Иногда это приводит к ошибке, например файл /etc/yum.conf распознаётся как application/x-cisco-vpn-settings.
Нераспознанные по содержимому файлы определяются MIME-типом, который соответствует произвольным двоичным данным - application/octet-stream. При попытке открыть такие файлы по двойному клику Nautilus просто и незатейливо выдаёт окошко:
Couldn't display "имя_файла".
Зачастую когда возникает желание взглянуть на содержимое нужного файла данных, либо просто некоего незнакомого файла, он оказывается именно application/octet-stream.
Но это как бы не должно быть сильно неудобно, ведь в любом случае для файла можно задать приложение или команду для его открытия через пункт контекстного меню 'Open with Other Application...'. В этом случае в соответствии с расширением, которое имеет имя файла в системе регистрируется новый MIME-тип 'application/x-extension-расширение_файла', и все файлы попадающие под соответсвующий glob pattern считаются принадлежащими этому MIME-типу и открываются указанным приложением или командой.
Чтоб посмотреть нужный файл через 'Open with Other Application...' я обычно выбираю по ситуации либо gedit (пункт Text Editor), либо в строке 'Use a custom command' задаю команду 'gnome-terminal --geometry=127x41 -x less', т.к. через less в териминале если будет нужно потом можно выйти в vim и далее посмотреть/отредактировать файл в hex-формате с помощью xxd.
Пользовательская база данных созданных MIME-типов располагается в директории ~/.local/share/mime,
основной конфигурационный файл ~/.local/share/mime/packages/Override.xml
Подробнее об этом можно прочитать здесь: http://www.freedesktop.org/wiki/Specifications/AddingMIMETutor
А регистрация связи между MIME-типом файла и приложением которое может его открывать происходит с помощью .desktop-файлов в директории ~/.local/share/applications
Про .desktop-файлы на сайте freedesktop.org можно найти следующую ссылки:
http://www.freedesktop.org/wiki/Howto_desktop_files
http://standards.freedesktop.org/desktop-entry-spec/latest/
Наводкой на инфу на freedesktop.org о добавлении собственных MIME-типов послужило найденное описание некой похожей ситуации:
http://linux.seindal.dk/2004/07/01/nautilus-2-6-and-mime-types/
Однако приём с автоматическим добавлением нового MIME-типа через пункт контекстного меню 'Open with Other Application...' не рабоает если у имени файла нет расширения. При попытке воспользоваться им Nautilus выдаёт ошибку:
Could not add application
Could not add application to the application database
Обычно я этим не заморачивался, просто если нужно было иметь дело с такими файлами откравал консоль и смотрел/редактировал их через less/vim. Но в случае когда имеешь много файлов данных (например дампов) с похожими друг на друга длинными именами, которые неудобно открывать вручную через консоль из-за множества escape'ов и различающихся цифр в имени, это уже станвится не так здорово. Очевидно что превращать всякий раз файл типа application/octet-stream в некий другой MIME-тип создавая и регистрируя его в системе для каждого файла или группы файлов по glob pattern это не совсем то что нужно. Фактически всё что требуется это просто задать для Nautilus некую универсальную программу-просмоторщих любого файла любого имеющегося MIME-типа, ну или хотябы уж для файлов типа application/octet-stream. Сделать через меню Nautilus это нельзя. Можно попробовать вручную создать .desktop-файл для открытия файлов MIME-типа application/octet-stream. Программой просмоторщиком может служить тот-же less запущенный в gnome-terminal.
.desktop-файлы - это текстовые файлы с расширением '.desktop', содержащие нужные параметры настройки в виде переменных с присвоенными им значениями. В Gnome с ними происходит такая штука: в Nautilus они отображаются без расширения '.desktop' и не под тем именем под которвм лежат в файловой системе, а под именем определённым в самом файле. Эта странность определённым образом напоминает распространённую ситуацию со специальными папками и файлами в Windows Explorer, когда вместо фактического листинга директории или фактического файла на диске показывается некое содержимое папки или некий эелемент в соответствии с теми представлениями которые посчитали нужным создать разработчики GUI для этой директории или файла. Я надеялся не увидеть в Linux таких "концепций". Зачем разработчики Gnome переняли этот опыт не понятно (хотя судя по всему это сделано по-видимому для того, чтобы иметь возможность отображать название одного и того же .desktop-файла под разными именами, на языке соответствующем пользовательской локали). Да и вообще стоит сказать спасибо что это простой текстовый файл, а не xml-формат - редкое явление для конфигурационных файлов в Gnome Desktop. Наверное забыли переделать, а может просто не поддались всеобщей мании использовать xml-формат везде где ни попадя, не только как формат файлов для обмена информацией между компьютерами или программами, но и для самых простых конфигурационных файлов предназначенных исключительно для создания и редактирования человеком, заставляя его работать на подобие машины, набирая бессмсленную кучу ненужных тэгов и следить чтоб все они были корректно закрыты -- в общем создать неудобства для человека для удобства автоматической обработки файла. (Ну ладно, это конечно всё лирика.)
Для привязки в Nautilus нужной программы-просмоторщика к файлам MIME-типа application/octet-stream достаточно в директории ~/.local/share/applications создать файл с любым именем и расширением '.desktop' следующего содержания:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Name=mime octet-stream viewer MimeType=application/octet-stream; Exec=gnome-terminal --geometry=127x41 -x less %f Type=Application Terminal=false NoDisplay=trueЗатем проверить его на ошибки с помощью утилиты desktop-file-validate и выполнить команду обновления базы данных update-desktop-database для этой директории:
[mike@localhost ~]$ vim .local/share/applications/mime-octet-stream-viewer.desktop [mike@localhost ~]$ desktop-file-validate .local/share/applications/mime-octet-stream-viewer.desktop [mike@localhost ~]$ update-desktop-database .local/share/applicationsПосле этого в Nautilus в контекстном меню для файлов MIME-типа application/octet-stream пункт 'Open' будет называться 'Open with "mime octet-stream viewer"' и при двойном клике на имени файла будет запускаться в Gnome Terminal его просмотр с помощью утилиты less.
No comments:
Post a Comment