<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about mimetype)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/mimetype.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2023 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 19 Nov 2023 14:03:12 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>aoe2de protocol handler for Linux</title><link>https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/</link><dc:creator>bgstack15</dc:creator><description>&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;The url using a custom protocol &lt;code&gt;aoe2de://1/12394872348&lt;/code&gt; can be used by Age of Empires 2: Definitive Edition to directly join or spectate a game. This behavior can be established in GNU/Linux with some easy customization.&lt;/p&gt;
&lt;h2&gt;Making the protocol links work&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Modify &lt;code&gt;xdg-open&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;By default, &lt;code&gt;xdg-open&lt;/code&gt; does not recognize protocol &lt;code&gt;aoe2de://&lt;/code&gt; as a URL because of the digit. It treats the protocol as a file instead of a url, so I had to modify &lt;code&gt;/usr/bin/xdg-open&lt;/code&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nt"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;bup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-e&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'/grep -q.\*:alpha:.\*then/s/:alpha:/:alnum:/g;'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;xdg-open&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Alternatively, you just need to modify the regular expression inside function to use alnum:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Returns&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;argument&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;file&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;URL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;path&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nt"&gt;is_file_url_or_path&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;"$1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;grep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-q&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'^&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="s1"&gt;' \&lt;/span&gt;
&lt;span class="s1"&gt;            || ! echo "$1" | egrep -q '&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="err"&gt;[&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;alnum&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;+:&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;then&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;else&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;1&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;fi&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Establish script to run &lt;code&gt;AOEURLHelper.exe&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;I named it &lt;code&gt;~/bin/aoe2de-protocol&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;table class="codetable"&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-1"&gt;&lt;code data-line-number="1"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-2"&gt;&lt;code data-line-number="2"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Startdate: 2023-11-14-3 19:51&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-3"&gt;&lt;code data-line-number="3"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Author: bgstack15&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-4"&gt;&lt;code data-line-number="4"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Documentation:&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-5"&gt;&lt;code data-line-number="5"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="c1"&gt;#    Because I use Proton Experimental, I use that path.&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-6"&gt;&lt;code data-line-number="6"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="c1"&gt;#    813780 = steamid for Age of Empires 2 Definitive Edition&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="linenos linenodiv"&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/#-7"&gt;&lt;code data-line-number="7"&gt;&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;code&gt;&lt;span class="nv"&gt;STEAM_COMPAT_CLIENT_INSTALL_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/.steampath &lt;span class="nv"&gt;STEAM_COMPAT_DATA_PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/.local/share/Steam/steamapps/compatdata/813780"&lt;/span&gt; &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;/.local/share/Steam/steamapps/common/Proton&lt;span class="se"&gt;\ &lt;/span&gt;-&lt;span class="se"&gt;\ &lt;/span&gt;Experimental/proton runinprefix &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/.local/share/Steam/steamapps/compatdata/813780/pfx/drive_c/Program Files (x86)/AOE URL Helper/AOEURLHelper.exe"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Establish desktop file with mimetype handler.&lt;/p&gt;
&lt;p&gt;I named mine &lt;code&gt;~/.local/share/applications/aoe2de-protocol.desktop&lt;/code&gt;.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[Desktop Entry]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;AOEURLHelper&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Comment&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Load url for Age of Empires 2: Definitive Edition&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;aoe2de-protocol %u&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Icon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;steam_icon_813780&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Terminal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Application&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;Categories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Game;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;MimeType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;x-scheme-handler/aoe2de;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure this desktop file is used with xdg-open.&lt;/p&gt;
&lt;p&gt;Run these commands.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$ xdg-mime default aoe2de-protocol.desktop x-scheme-handler/aoe2de
$ xdg-mime query default x-scheme-handler/aoe2de
aoe2de-protocol.desktop
&lt;/pre&gt;&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure Firefox-based web browser to use this application for links of this protocol.&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;about:config&lt;/code&gt;, set a new boolean &lt;code&gt;network.protocol-handler.expose.aoe2de&lt;/code&gt; = &lt;code&gt;false&lt;/code&gt;. Then visit one of the lobby browsers (below) and find a join link. Select the link, and choose your new .desktop file.&lt;/p&gt;
&lt;p&gt;The first time, it failed. When I tried again, the web browser showed the second menu item named "AOEURLHelper" which is what I put in that "Name" field and it did invoke my shell script and then try to join the game.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Additional thoughts&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;xdg-open aoe2de://0/123412341234&lt;/code&gt; invocation works when the game is not already running, and when the game is already running. Of course, due to how long it takes the game to load, loading a aoe2de link loads faster if the game is already running.&lt;/p&gt;
&lt;h2&gt;Protocol description&lt;/h2&gt;
&lt;p&gt;This is not a specification because I don't know of any that has been published.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;aoe2de://0/126811196
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This link tries to join game id 126811196. You can learn your game id when you are the host, from the button in the upper-right of the lobby screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bgstack15.ddns.net/blog/2023/11/aoe2de-game-id.png"&gt;&lt;img alt="" src="https://bgstack15.ddns.net/blog/2023/11/aoe2de-game-id.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;aoe2de://1/123498272
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The top virtual directory &lt;code&gt;/1/&lt;/code&gt; indicates that the program should try to spectate the match.&lt;/p&gt;
&lt;h2&gt;Lobby browsers&lt;/h2&gt;
&lt;p&gt;If these are working at any given moment, here are a few that I found:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/www.aoe2insights.com/lobbies/"&gt;Lobby Browser - Age of Empires 2 - AoE2 Insights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/aoe2.net/#aoe2de-lobbies"&gt;AoE2.net&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;h3&gt;Weblinks&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/unix.stackexchange.com/questions/497146/create-a-custom-url-protocol-handler"&gt;xdg - Create a custom URL Protocol Handler - Unix &amp;amp; Linux Stack Exchange&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/stackoverflow.com/questions/16376429/ubuntu-custom-url-protocol-handler"&gt;linux - Ubuntu custom URL protocol handler - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/www.aoezone.net/threads/resolved-aoe2-net-spectate-button-no-longer-working-someone-please-help-me.178544/"&gt;[RESOLVED] AoE2.net Spectate button no longer working. Someone please help me!!! | AoEZone - The International Age of Empires Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/old.reddit.com/r/linux_gaming/comments/pxs5es/running_a_second_program_inside_a_proton_prefix/"&gt;Running a second program inside a proton prefix. : linux_gaming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/stackoverflow.com/questions/22729686/set-custom-protocol-handler-in-firefox"&gt;Set custom protocol handler in Firefox? - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/http:/kb.mozillazine.org/Register_protocol"&gt;Register protocol - MozillaZine Knowledge Base&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Web search&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/duckduckgo.com/?q=steam+run+command+in+proton+context"&gt;steam run command in proton context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/duckduckgo.com/?q=firefox+handle+protocol"&gt;firefox handle protocol&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;My blog&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://bgstack15.ddns.net/blog/posts/2021/06/12/download-voobly-mods-from-browser/"&gt;Download voobly mods from browser&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>Age of Empires 2</category><category>mimetype</category><category>protocol</category><category>url</category><category>xdg</category><guid>https://bgstack15.ddns.net/blog/posts/2023/11/19/aoe2de-protocol-handler-for-linux/</guid><pubDate>Sun, 19 Nov 2023 13:56:58 GMT</pubDate></item><item><title>xdg-mime command for window managers</title><link>https://bgstack15.ddns.net/blog/posts/2023/02/05/xdg-mime-command-for-window-managers/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I don't use a desktop environment for most of my desktop systems, I use the &lt;a href="https://bgstack15.ddns.net/blog/outbound/http:/fluxbox.org/"&gt;fluxbox&lt;/a&gt; (&lt;a href="https://bgstack15.ddns.net/blog/categories/fluxbox/"&gt;my blog posts&lt;/a&gt;) window manager. It hasn't changed since before I started using it, and probably won't ever. I think it's mostly dead, but that also means it won't ever change! I did start packaging the latest (probable) upstream (&lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/github.com/fluxbox/fluxbox"&gt;github&lt;/a&gt;) along with a patch I wrote for myself though.&lt;/p&gt;
&lt;p&gt;So, because I don't use a desktop environment, and I had forgotten I could use my &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/build.opensuse.org/package/show/home:bgstack15/mime_types_editor"&gt;package&lt;/a&gt; of &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/github.com/i026e/mime_types_editor"&gt;mime_types_editor&lt;/a&gt; or anything similar, I had a small problem when I try to use the "open directory" function beside a downloaded item in my web browser. So this command solved that for me:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;xdg-mime default xfe.desktop inode/directory
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And also to help &lt;a href="https://bgstack15.ddns.net/blog/posts/2020/10/24/package-for-devuan-myautomount/"&gt;myautomount&lt;/a&gt; tray icon menu:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;xdg-mime default xfe.desktop inode/mount-point
&lt;/pre&gt;&lt;/div&gt;

&lt;h6&gt;Update 2023-11-08&lt;/h6&gt;
&lt;p&gt;For dvds, particularly with myautomount:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;xdg-mime default vlc.desktop x-scheme-handler/dvd
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Which adds to your mimeapps.list:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="k"&gt;[Default Applications]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="na"&gt;x-scheme-handler/dvd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;vlc.desktop&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><category>fluxbox</category><category>mimetype</category><category>xdg</category><category>xfe</category><guid>https://bgstack15.ddns.net/blog/posts/2023/02/05/xdg-mime-command-for-window-managers/</guid><pubDate>Sun, 05 Feb 2023 14:36:52 GMT</pubDate></item></channel></rss>