Bug 21320 - Убрать Mime-ассоциацию x-directory/normal из *.desktop файла easytag
Summary: Убрать Mime-ассоциацию x-directory/normal из *.desktop файла easytag
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: nautilus (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Yuri N. Sedunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-31 23:41 MSD by Денис Корявов
Modified: 2014-02-16 15:54 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Денис Корявов 2009-08-31 23:41:35 MSD
В EasyTag в .desktop файле, MimeType прописан следующей строкой:
MimeType=audio/x-mp3;application/ogg;x-directory/normal;

В итоге, в mimeinfo.cache для типа "x-directory/normal" easytag попадает первым по сравнению с Thunar и Nautilus и на все команды из внешних приложений (вроде Firefox) открывается именно EasyTag.
Comment 1 Alexey Rusakov 2009-09-01 00:06:29 MSD
На самом деле у такой ассоциации есть свой смысл: EasyTag действительно умеет работать с каталогами. Хорошо бы исправить способ определения обработчика по умолчанию, но пока неясно, как это делать. Добровольцы-исследователи welcome.
Comment 2 Afanasov Dmitry 2009-09-01 07:06:53 MSD
Полностью согласен с Алексеем - easytag действительно работает с каталогами также, как с отдельными файлами, потому x-directory/normal оправдан.
надо разбираться в сортировке.
Comment 3 Денис Корявов 2009-09-01 13:49:51 MSD
Коллеги, давайте посмотрим этот вопрос в другом ключе:

Сейчас, эта проблема. И вызывает трудности даже у достаточно подготовленных пользователей. 
Убрав её (например, на время, пока не найдем верного решения) мы ее исправим, но получим лишь небольшую проблему (даже не проблему, а небольшое неудобство) для пользователей EasyTag если они захотят открывать папку с помощью него. Эта проблема легко обходится.
Comment 4 Alexey Rusakov 2009-09-01 14:14:58 MSD
Если сейчас сделать workaround, то нормального исправления не будет ещё долго.
Comment 5 Денис Корявов 2009-10-15 10:12:13 MSD
> Если сейчас сделать workaround, то нормального исправления не будет ещё долго.

1.5 месяца прошло... Судя по всему, если исправления не будет никакого. :) Так может сделать workaround?
Comment 6 Afanasov Dmitry 2009-10-15 11:17:55 MSD
удаление mime типа создаст новую багу, которую тоже придется чинить.

нет, решаться должно только через приоритетах mime типах. к сожалению на исследования у меня времени нет и не будет до конца года :( потому прошу помощи. заапрувить/дать acl/дать nmu всегда смогу.
Comment 7 Денис Корявов 2009-10-15 12:23:04 MSD
Ну хорошо. Может sed'ом пробегаться после установки? Что-то типа, 
sed -i 's/easytag\.desktop\;\(.*\)\;/\1\;easytag\.desktop\;/' /usr/share/applications/mimeinfo.cache

Т.е просто ставим easytag.desktop в конец ассоциации (тут я не доработал что это нужно учесть только для типа 'x-directory/normal'). Что скажет уважаемая Team?
Comment 8 Денис Корявов 2009-10-18 20:43:51 MSD
Придумал следующий скрипт: 

sed -i 's/x-directory\/normal\(.*\?\)easytag.desktop;\(.*\);/x-directory\/normal\1\2;easytag.desktop;/' /usr/share/applications/mimeinfo.cache

Отрабатывает как надо на локальных данных (даже если что-то стоит впереди easytag в списке, это оставляет на месте а easytag.desktop переносит в конец списка), но увы в post секции это не срабатывает. Есть идеи почему?
Comment 9 Alexey Rusakov 2009-10-18 22:38:17 MSD
Потому что после отработки всех post-скриптов выполняются файловые триггеры. Дальше продолжать?
Comment 10 Денис Корявов 2009-10-18 23:21:53 MSD
> Потому что после отработки всех post-скриптов выполняются файловые триггеры.
Дальше продолжать?

Понятно. Идея тупиковая. Если я правильно понял, обновление mimeinfo.cache происходит постоянно после установки каких-либо пакетов, так? Тогда вся идея с сортировкой бессмысленна - все равно easytag потом будет попадать первым в список x-directory/normal. 

Поэтому я еще раз предлагаю убрать эту ассоциацию из easytag.

В ином случае, как бы мне этого не хотелось, придется собирать пакет в Сизиф с новым именем. :(
Comment 11 Afanasov Dmitry 2009-10-19 09:57:32 MSD
(В ответ на комментарий №10)
в данный момент я в свободные минуты курю http://freedesktop.org/ на предмет сортировки меню и desktop файлов. докурился пока только до того, что файл-ассоциации могут иметь приоритет. где его расставлять и как я пока не понял, продолжаю вдумчивое вкуривание.

> обновление mimeinfo.cache происходит постоянно после установки каких-либо пакетов, так?
да. это результат работы update-desktop-files. обновлять надо не его, а easytag.desktop.

workaround для данного пакета есть - изменить файл-ассоциацию для easytag в своём каталоге. как это сделать я пока тоже ищу.

> В ином случае, как бы мне этого не хотелось, придется собирать пакет в Сизиф с
> новым именем. :(
войны мантейнеров? это будет интересно.

это не решение. более того, найденное вами "решение" с mimeinfo.cache показывает, что делать - делаете, а вот что - не имеете представления. я структуру меню/файл-связей и вообще freedesktop не знаю и пока не буду знать - лечения не будет. узнать я могу либо из документации, либо из объяснений, в том числе ваших. предлагаю поучиться, а не воевать.
Comment 12 Денис Корявов 2009-10-19 11:16:09 MSD
> workaround для данного пакета есть - изменить файл-ассоциацию для easytag в
своём каталоге. как это сделать я пока тоже ищу.

Понятно. Скопировал в .local/share/applications/ файлы easytag.desktop и Thunar-folder-handler.desktop и убрал из первого ассоциацию с x-directory/normal, потом, выполнил update-desktop-database ~/.local/share/applications/ - и теперь везде где нужно Thunar открывает файлы (собственно, в спецификации только это и указано по поводу приоритетов).  Для себя, я workaround нашел и теперь мне баг становится не интересен. 
Спасибо! :)
Comment 13 Afanasov Dmitry 2009-10-19 11:32:06 MSD
(В ответ на комментарий №12)
> теперь везде где нужно Thunar открывает файлы (собственно, в спецификации 
> только это и указано по поводу приоритетов).
прекрасно!

> Для себя, я workaround нашел и теперь мне баг становится не интересен. 
> Спасибо! :)
грустно. бага тогда до нового года провисит точно.
Comment 14 Alexey Rusakov 2009-10-26 01:46:33 MSK
Перевешиваю на более подходящий для этой темы пакет.
Comment 15 Sergey V Turchin 2009-10-26 13:49:34 MSK
(В ответ на комментарий №14)
> Перевешиваю на более подходящий для этой темы пакет.
Не надо на него больше перевешивать.
Выбирайте из easytag, gnome-menus и Thunar

P.S.
В KDE4 не воспроизводиться (easytag давно стоит и у пользователя ничего не трогано для этого).
Comment 16 Alexey Rusakov 2009-10-26 13:58:00 MSK
Ассоциации файлов не имеют отношения ко gnome-menus, это вопрос того, что записано в desktop-database. zerg@, а каким образом устанавливается приоритет ассоциаций в KDE4?
Comment 17 Sergey V Turchin 2009-10-26 14:19:54 MSK
(В ответ на комментарий №16)
> Ассоциации файлов не имеют отношения ко gnome-menus, это вопрос того, что
> записано в desktop-database.
Это поведение -- продукт обработки меню и маймов
Речь-то вообще о чем? XFCE?

> zerg@, а каким образом устанавливается приоритет
> ассоциаций в KDE4?
Как везде.
В Dolphin, например,
Categories=Qt;KDE;System;FileManager;
MimeType=inode/directory;
InitialPreference=10

Хотя ни ShowOnlyIn ни NotShowIn не указано.
Возможно и в нем и в Thunar нужно что-то из них указать, но, как-минимум, с KDE4/Dolphin ничто пока вперед не лезет
Comment 18 Sergey V Turchin 2009-10-26 14:24:24 MSK
Так же можно извратиться, сделав 2 desktop-файла:
а) сделать 2 desktop-файла Один .desktop для всех (без понтов), а 2-й ShowOnlyIn=XFCE,InitialPreference=10
б) 1 desktop-файл с InitialPreference=10,NotShowIn=Всех;Перечислить;
Comment 19 Sergey V Turchin 2009-10-26 14:29:45 MSK
А еще у меня есть патчики для поддержки параметров X-KDE-InitilalPreference и X-KDE4-InitilalPreference
Для KDE* они простые, если найдете подобное для того, о чем речь, то решение упрощается
Comment 20 Alexey Rusakov 2009-10-26 14:34:48 MSK
Очень интересно. Видимо, ключиком InitialPreference задаётся приоритет приложения для обработки MIME-типа? Не знал об этом.
С другой стороны, в списке ключей в desktop-файлах ключа InitialPreference я не нашёл. Более того, согласно http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s07.html, "There should be no priority for MIME Types in this field, or any form of priority in the desktop file. Priority for applications is handled external to the .desktop files."
Резюме: можно попытаться решить вопрос через ключ InitialPreference, но 1) видимо, придётся для этого патчить все графические среды, использующие механизм desktop-файлов для привязки приложений; 2) это не то что не описанное, а противоречащее спецификации поведение.
Интересно, где fd.o-шники предлагают хранить приоритеты вместо desktop-файлов...
Comment 21 Alexey Rusakov 2009-10-26 14:36:21 MSK
В любом случае, похоже, это проблема конкретных приложений, т.е. Nautilus и Thunar в случае inode/directory.
(забыл ответить: проблема проявляется и в GNOME, и в XFCE)
Comment 22 Sergey V Turchin 2009-10-26 14:49:58 MSK
Блин, точно! InitialPreference -- KDE-шное :-(
http://standards.freedesktop.org/desktop-entry-spec/latest/apb.html

Тогда только весла сушить :-(
Comment 23 Yuri N. Sedunov 2009-10-26 15:03:58 MSK
(In reply to comment #22)
> Блин, точно! InitialPreference -- KDE-шное :-(
> http://standards.freedesktop.org/desktop-entry-spec/latest/apb.html
> 
> Тогда только весла сушить :-(

То есть это не проблема конкретных приложений, а проблема спецификации и утилит, ее обслуживаюзщих?
Comment 24 Sergey V Turchin 2009-10-26 15:22:06 MSK
Боюсь предположить, что на самом деле это может стать проблемой конечного пользователя ;-)
Comment 25 Sergey V Turchin 2009-10-26 15:23:09 MSK
IMHO лучше поискать патчи для реализации InitialPreference
Comment 26 Alexey Rusakov 2009-10-26 15:36:15 MSK
На fd.o было такое вот обсуждение: http://lists.freedesktop.org/archives/xdg/2008-January/009109.html (и далее по треду). Честно говоря, у меня сейчас читать его времени нет, но по-моему, там говорят про то, что нам нужно. В частности, кстати, упоминается некий файл defaults.list, который я у себя в .local/share/applications когда-то даже видел.
Comment 27 Sergey V Turchin 2009-10-26 15:39:43 MSK
~/.local/share/applications/defaults.list не положишь в системный каталог
Comment 28 Sergey V Turchin 2009-10-26 15:40:45 MSK
(В ответ на комментарий №27)
> ~/.local/share/applications/defaults.list не положишь в системный каталог
Разве что в /usr/share/gnome/куда/нибудь и в /usr/share/xfce/куда/нибудь
Comment 29 Alexey Rusakov 2009-10-26 15:47:34 MSK
Вообще-то .local/share/applications - это, по уже другой спецификации (xdg-base-dir), пользовательский аналог /usr/share/applications. Так что /usr/share/applications/defaults.list должен работать. Другой вопрос, как.
Comment 30 Sergey V Turchin 2009-10-26 15:52:26 MSK
(В ответ на комментарий №29)
> /usr/share/applications/defaults.list
Такого файла быть не должно. См. #28
Comment 31 Yuri N. Sedunov 2009-10-26 16:23:48 MSK
(In reply to comment #30)
> (В ответ на комментарий №29)
> > /usr/share/applications/defaults.list
> Такого файла быть не должно. См. #28

Для такого пользовательского безобразия, вроде бы, есть специальный пакет, иль с его помощью вопрос не решить?
Comment 32 Sergey V Turchin 2009-10-26 16:28:31 MSK
(В ответ на комментарий №31)
> (In reply to comment #30)
> > (В ответ на комментарий №29)
> > > /usr/share/applications/defaults.list
> > Такого файла быть не должно. См. #28
> Для такого пользовательского безобразия
Пользовательское находиться в пользовательском каталоге.
Если появиться /usr/share/applications/defaults.list, мне придется запаковать его в altlinux-menus в пустом виде, чтоб никто не зарился.
Comment 33 Vladimir Zhirov 2010-08-02 01:47:06 MSD
Согласно http://lists.freedesktop.org/archives/xdg/2009-August/010873.html существование файла /usr/share/applications/defaults.list вполне закономерно, единственное что он используется в Gnome (и наверное Xfce), а в KDE - InitialPreference.

Может быть, стоит пересмотреть возможность фикса данного бага с помощью defaults.list?
Comment 34 Sergey V Turchin 2010-08-02 16:03:46 MSD
Если коротко, то будет так, как я написал в #32
Если очень хочется, то /usr/share/gnome/applications/defaults.list или любое другое место, о котором будут знать только те, у кого проблема.