<link>https://people.skolelinux.org/pere/blog/</link>
+ <item>
+ <title>Is the desktop recommending your program for opening its files?</title>
+ <link>https://people.skolelinux.org/pere/blog/Is_the_desktop_recommending_your_program_for_opening_its_files_.html</link>
+ <guid isPermaLink="true">https://people.skolelinux.org/pere/blog/Is_the_desktop_recommending_your_program_for_opening_its_files_.html</guid>
+ <pubDate>Sun, 29 Jan 2023 11:00:00 +0100</pubDate>
+ <description><p>Linux desktop systems
+<a href="https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html">have
+standardized</a> how programs present themselves to the desktop
+system. If a package include a .desktop file in
+/usr/share/application, Gnome, KDE, LXDE, Xfce and the other desktop
+environments will pick up the file and use its content to generate the
+menu of available programs in the system. A lesser known fact is that
+a package can also explain to the desktop system how to recognize the
+files created by the program in question, and use it to open these
+files on request, for example via a GUI file browser.</p>
+
+<p>A while back I ran into a package that did not tell the desktop
+system how to recognize its files and was not used to open its files
+in the file browser and fixed it. In the process I wrote a simple
+debian/tests/ script to ensure the setup keep working. It might be
+useful for other packages too, to ensure any future version of the
+package keep handling its own files.</p>
+
+<p>For this to work the file format need a useful MIME type that can
+be used to identify the format. If the file format do not yet have a
+MIME type, it should define one and preferably also
+<a href="https://www.iana.org/assignments/media-types/media-types.xhtml">register
+it with IANA</a> to ensure the MIME type string is reserved.</p>
+
+<p>The script uses the <tt>xdg-mime</tt> program from xdg-utils to
+query the database of standardized package information and ensure it
+return sensible values. It also need the location of an example file
+for xdg-mime to guess the format of.</p>
+
+<pre>
+#!/bin/sh
+#
+# Author: Petter Reinholdtsen
+# License: GPL v2 or later at your choice.
+#
+# Validate the MIME setup, making sure motor types have
+# application/vnd.openmotor+yaml associated with them and is connected
+# to the openmotor desktop file.
+
+retval=0
+
+mimetype="application/vnd.openmotor+yaml"
+testfile="test/data/real/o3100/motor.ric"
+mydesktopfile="openmotor.desktop"
+
+filemime="$(xdg-mime query filetype "$testfile")"
+
+if [ "$mimetype" != "$filemime" ] ; then
+ retval=1
+ echo "error: xdg-mime claim motor file MIME type is $filemine, not $mimetype"
+else
+ echo "success: xdg-mime report correct mime type $mimetype for motor file"
+fi
+
+desktop=$(xdg-mime query default "$mimetype")
+
+if [ "$mydesktopfile" != "$desktop" ]; then
+ retval=1
+ echo "error: xdg-mime claim motor file should be handled by $desktop, not $mydesktopfile"
+else
+ echo "success: xdg-mime agree motor file should be handled by $mydesktopfile"
+fi
+
+exit $retval
+</pre>
+
+<p>It is a simple way to ensure your users are not very surprised when
+they try to open one of your file formats in their file browser.</p>
+
+<p>As usual, if you use Bitcoin and want to show your support of my
+activities, please send Bitcoin donations to my address
+<b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
+</description>
+ </item>
+
<item>
<title>Opensnitch, the application level interactive firewall, heading into the Debian archive</title>
<link>https://people.skolelinux.org/pere/blog/Opensnitch__the_application_level_interactive_firewall__heading_into_the_Debian_archive.html</link>
like a very nice tool to have in the tool box, and I decided to see if
something similar was available for Linux.</p>
-<p>It did not took long to find
+<p>It did not take long to find
<a href="https://github.com/evilsocket/opensnitch">the OpenSnitch
package</a>, which has been in development since 2017, and now is in
version 1.5.0. It has had a