From kde-core-devel Tue Mar 20 12:52:22 2007 From: David Faure Date: Tue, 20 Mar 2007 12:52:22 +0000 To: kde-core-devel Subject: KDE switched to XDG shared-mime-info Message-Id: <200703201352.23024.faure () kde ! org> X-MARC-Message: https://marc.info/?l=kde-core-devel&m=117439505315489 I forgot to announce it before so here it is: I have changed kdelibs yesterday, with the help of Pino Toscano, to use the standard mimetype database from freedesktop.org (http://standards.freedesktop.org/shared-mime-info-spec/latest) instead of defining our own mimetypes in kdelibs. Well, we still define a few mimetypes that are not in the shared repository, but most of them do come from shared-mime-info, and the move of those mimetypes to shared-mime-info is an on-going process. There are a number of reasons for doing that: * Improving compatibility with other free desktops (e.g. when sending a file over email the receiver will get a mimetype his system understands) * Improving compatibility with web servers (I think Apache already implements, or will implement, support for shared-mime-info instead of having its own mimetype database too). * A bit less maintainance on our side * And the most important benefit is for third-party application makers. They will be able to install a single mimetype file to define the mimetype(s) specific to their application, instead of having to install one file per desktop as is the case currently. IMPORTANT: what this means for you: 1) you should unset XDG_DATA_DIRS. Earlier setup instructions suggested to set it in order to keep kde3 applications out of the way, but that hack breaks now, we need the xdg mimetype files to be found, so we can't set XDG_DATA_DIRS away from /usr. Let's make sure kde3 apps work in kde4 instead [e.g. I renamed kbuildsycoca to kbuildsycoca4 yesterday]. 2) you should install shared-mime-info. Given that gnome has been using it for quite some time, it is packaged already on all distributions, you don't have to compile anything yourself. Except on Windows, obviously. 0.18 is the minimum version, but 0.20 is recommended since it includes a number of fixes in the mimetype definitions. 3) you shouldn't write code that parses mimetype .desktop files, use KMimeType::mimeType() instead (e.g. I fixed ark to do that). 4) you shouldn't ship a mimetype with your application. Well, that has always been true ;) kdelibs was the mimetype repository, and from now on if you define a new mimetype for your application, either define it in kdelibs/mimetypes/kde.xml, or if this type of file can be sent (e.g. over email) to people not using kde, then better register the mimetype at http://www.freedesktop.org/Standards/AddingMIMETutor 5) you should report to me and Pino Toscano when you see a file is given a wrong mimetype (either from the extension or from the file contents), but only after upgrading to shared-mime-info 0.20 ;) Next step: Pino or I will migrate some mimetype names in the kde .desktop files. -- David Faure, faure@kde.org, sponsored by Trolltech to work on KDE, Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).