ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Igor Vlasenko <vlasenko@imath.kiev.ua>
To: devel@lists.altlinux.org
Subject: [devel] MIME Revolution!
Date: Thu, 14 Apr 2011 00:33:42 +0300
Message-ID: <20110413213341.GA608@dad.imath.kiev.ua> (raw)

Уважаемые коллеги!

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

Более того, для простых пользователей это будет "killer feature",
которой могут похвастаться весьма немногие дистрибутивы, 
если вообще могут. А вот мы сможем похвастать. 
И с чистой совестью сказать, что у нас круче ;)

Речь идет о наведении порядка с умолчаниями MIME.
Сейчас мы в целом живем без каких-либо умолчаний, 
Устаревшие KDE InitialPreference и героические попытки в
xfce-settings-* паковать костыли в /etc/skel/.local не в счет,
так как они погоды не делают.

Текущую ситуацию можно назвать MIME Hell:
это ситуация, когда для открытия pdf файла может быть вызван gimp,
а для открытия html странички или видеофильма  -- wine.
За последнее, кстати, в https://bugzilla.altlinux.org/25214
wine забивали, как мамонта. При чем по сути дела wine не виновато,
хотя, конечно, установка в .local is a bit extreme, в /usr все же
корректнее, но по сути виноват дистрибутив, в котором отсутствуют
разумные умолчания mime.

стандарты freedesktop.org, к сожалению, далеки от идеала, но
там все же попадаются здравые идеи. Не прошло и трех лет, как
libgio начала поддерживать mimeapps.list. Это списки desktop файлов,
которыми рекомендуется открывать данный тип mime, отсортированные 
в порядке релевантности приложения типу.

Я хочу создать и поддерживать актуальный файл mimeapps.list для
Сизифа. Это должен быть общесистемный, DE-нейтральный файл.
DE-специфическую настройку лучше осуществлять, манипулируя в 
скрипте startDE переменной $XDG_DATA_DIRS и подкладывая туда
DE-специфические defaults.list.

Я начал с того, что, используя технологии репокопа, сгенерировал из
desktop файлов актуальную неотсортированную болванку для mimeapps.list.
получился достаточно жуткий файл mimeapps.raw с 381 mime типом,
и для каждого mime типа внушительный список desktop файлов, которые надо
отсортировать. В таком виде получается жуткая задача, на такой файл
придется угробить человеко-месяцы, а результат будет невозможно 
поддерживать. Поэтому мысль сразу же пошла по unix-way.

Я решил генерировать mimeapps.list из человекодружественных 
файлов priorities, с 3-мя или 4-мя колонками, 
разделенными любым числом пробельных символов

первая колонка это freedesktop desktop id:
для /usr/share/applications/foo.desktop это будет просто foo.desktop,
а вот для /usr/share/applications/kde/kdict.desktop это kde-kdict.desktop.

вторая колонка это mime тип. Фишка в том, что там разрешаются shell glob:
третья колонка -- приоритет, 4-я опциональная - зарезервирована для
спец, настроек приоритета, вида GNOME=30;LXDE=100; пока не используется.

Если приоритет >0, то файл будет вписан под [Added Associations]. 
Если приоритет <0, то файл будет забанен в [Removed Associations].

Пример 
priorities/50-office:
-----------------------------------------------------------------------
desktop файл			mime типы	приоритет	резерв
-----------------------------------------------------------------------
abiword.desktop			application/*	10
kde4-kword.desktop		application/*	50
openoffice.org-writer.desktop	application/*	90
writer.desktop			application/*	100

Из этого 4-х строчного файла при генерации получается 27 строк в mimeapps.list.

Если globbing или спец.настройки не требуются, то готовые кусочки mimeapps.list
можно складывать в файл mimeapps.in.

Я выложил код генерации в people/viy/packages/altlinux-mime-defaults.git,
в README описано, как происходит генерация.

Делаем как в README (качаем 
wget -c http://repocop.altlinux.org/pub/repocop/data/freedesktop-desktop.db
пускаем ./generate_mimeapps)

получаем текущий mimeapps.list, mimeapps.status (там критикуется
mimeapps.list, рассказывается, что в нем не хватает) и mimeapps.raw.
mimeapps.raw -- это несортированная заготовка для mimeapps.list.

Сделав 
$ grep 'audio.*=' mimeapps.raw | grep -v 'midi.*=' | \
  sed -e 's,^.*=,,' | perl -npe 's/;/\n/g' | sort -u 

получим список из 52 обработчиков аудио, которые надо отсортировать по релевантности.

Господа! 

1) Нужен доброволец, который любит музыку и разбирается в плеерах,
чтобы выписать приоритеты для плееров в файле priorities/50-audio.

Вот список.
alsaplayer.desktop
audacious2.desktop
audacious2-gtkui.desktop
audacity.desktop
avidemux.desktop
banshee-1-audiocd.desktop
banshee-1-media-player.desktop
brasero.desktop
clementine.desktop
deadbeef.desktop
decibel-audio-player.desktop
easytag.desktop
exaile.desktop
falf.desktop
foobnix.desktop
gnome-banshee-1.desktop
gnome-mplayer.desktop
gvim.desktop
kde4-amarok.desktop
kde4-kaffeine.desktop
kde4-kid3.desktop
kde4-kmid.desktop
kde-amarok.desktop
kde-juk.desktop
kde-kaffeine.desktop
kde-kmid.desktop
kde-kmplayer.desktop
kid3.desktop
listen.desktop
miro.desktop
mkvinfo.desktop
mkvmerge-gui.desktop
mplayer.desktop
muine.desktop
parole.desktop
pragha.desktop
qmmp.desktop
qmmp_enqueue.desktop
rhythmbox.desktop
rhythmbox-device.desktop
rosegarden.desktop
smplayer.desktop
smplayer_enqueue.desktop
songbird.desktop
soundconverter.desktop
sound-juicer.desktop
soundtracker.desktop
totem.desktop
vlc.desktop
xine.desktop
xmms.desktop

Если какого-то плеера в списке нет, это значит, что в его .desktop
файле не прописаны mime типы. В таком случае надо еще вешать баги
на такой плеер.

3) Нужен доброволец отсортировать видео плееры по релевантности.

3) Нужны добровольцы на другую сортировку: IDE, архиваторы,
редакторы, ... см. mimeapps.status

-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine



             reply	other threads:[~2011-04-13 21:33 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-13 21:33 Igor Vlasenko [this message]
2011-04-13 21:46 ` Денис Смирнов
2011-04-13 22:30   ` Igor Vlasenko
2011-04-13 22:38     ` Igor Vlasenko
2011-04-13 22:41       ` Денис Смирнов
2011-04-13 22:53         ` Igor Vlasenko
2011-04-13 23:13           ` Денис Смирнов
2011-04-13 23:32             ` Igor Vlasenko
2011-04-14  3:25               ` REAL
2011-04-14  3:50                 ` Денис Смирнов
2011-04-14  3:56                   ` REAL
2011-04-14  4:24             ` Hihin Ruslan
2011-04-13 23:21           ` Денис Смирнов
2011-04-13 23:28             ` Igor Vlasenko
2011-04-13 23:44               ` Денис Смирнов
2011-04-13 23:59                 ` Igor Vlasenko
2011-04-13 22:40     ` Aleksey Novodvorsky
2011-04-13 22:48       ` Igor Vlasenko
2011-04-13 22:40     ` Денис Смирнов
2011-04-13 23:02       ` Igor Vlasenko
2011-04-13 23:25         ` Денис Смирнов
2011-04-13 23:37           ` Igor Vlasenko
2011-04-13 23:39             ` Денис Смирнов
2011-04-13 23:41           ` Igor Vlasenko
2011-04-20  7:57             ` [devel] MIME Revolution! -> relative user level Michael Shigorin
2011-04-20  8:32               ` Денис Смирнов
2011-04-20  8:35                 ` Michael Shigorin
2011-04-20  8:40                 ` REAL
2011-04-20 10:09                   ` Dmitriy Kruglikov
2011-04-20 10:20               ` Aleksey Novodvorsky
2011-04-21  5:50                 ` [devel] [JT] " Michael Shigorin
2011-04-21  6:09                   ` Hihin Ruslan
2011-04-21 13:02                     ` Rinat Bikov
2011-04-21 13:20                       ` Hihin Ruslan
2011-04-20  7:54           ` [devel] MIME Revolution! Michael Shigorin
2011-04-20  8:07             ` Vladislav Zavjalov
2011-04-20  8:09               ` Michael Shigorin
2011-04-14 12:27       ` Igor Vlasenko
2011-04-14 12:45         ` Андрей Черепанов
2011-04-14 12:56           ` Igor Vlasenko
2011-04-14 13:08           ` Igor Vlasenko
2011-04-14 13:14             ` Андрей Черепанов
2011-04-14 13:22               ` Igor Vlasenko
2011-04-14 13:26                 ` Андрей Черепанов
2011-04-14 13:45                 ` Андрей Черепанов
2011-04-14 14:05                   ` Igor Vlasenko
2011-04-14 15:18                     ` Андрей Черепанов
2011-04-13 22:26 ` Paul Wolneykien
2011-04-13 22:47 ` Paul Wolneykien
2011-04-14 10:48   ` Андрей Черепанов
2011-04-14 22:16     ` Paul Wolneykien
2011-04-20  8:04       ` [devel] MIME Revolution! -> upstream Michael Shigorin
2011-04-14  9:58 ` [devel] MIME Revolution! Sergey V Turchin
2011-04-14 11:44 ` Андрей Черепанов
2011-04-14 12:12   ` Андрей Черепанов
2011-04-14 12:16   ` Igor Vlasenko
2011-04-14 12:48     ` Андрей Черепанов
2011-04-14 12:58       ` Igor Vlasenko
2011-04-14 13:02       ` Igor Vlasenko
2011-04-15 12:45 ` Vladislav Zavjalov
2011-04-15 13:19   ` Igor Vlasenko
2011-04-15 15:00     ` Vladislav Zavjalov
2011-04-15 19:28       ` Igor Vlasenko
2011-04-20  7:36 ` [devel] MIME Revolution! -> prio Michael Shigorin
2011-04-20  7:42   ` Денис Смирнов
2011-04-20  8:15     ` Michael Shigorin
2011-04-20  8:21       ` REAL
2011-04-20  8:36       ` Денис Смирнов

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110413213341.GA608@dad.imath.kiev.ua \
    --to=vlasenko@imath.kiev.ua \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git