<?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 voobly)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/voobly.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &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>Wed, 26 Feb 2025 15:27:12 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Download voobly mods from browser</title><link>https://bgstack15.ddns.net/blog/posts/2021/06/12/download-voobly-mods-from-browser/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;If you inspect a Voobly mods page (such as &lt;a href="https://www.voobly.com/gamemods/mod/10/Jurassic-2"&gt;Jurassic 2 for Age of Empires II:
The Conquerors&lt;/a&gt;) you can
see that the "Download" button is a custom protocol.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;action&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;"voobly://client.voobly.com:17600/?service=Package&amp;amp;amp;uid=0&amp;amp;amp;session=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;amp;amp;arg=voobly.com**gamemods*13*Jurassic[space]2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;method&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ss"&gt;"post"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can inspect what your system is currently configured to use for a custom
protocol of x-scheme-handler/voobly:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ xdg-mime query default x-scheme-handler/voobly
Voobly.desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And if you need to manually set it, you can do so with:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;xdg-mime default Voobly.desktop x-scheme-handler/voobly
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Interestingly enough, I did not need to fully qualify the path to
Voobly.desktop. I suspect that is because it is in one of the XDG_DATA_DIRS
default locations which is the ~/.local/share/applications/ My Voobly.desktop
actually calls a wrapper shell script, which I augmented to pass the
parameters to voobly.exe.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;applications&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Voobly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;desktop&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Desktop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Entry&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Voobly&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Exec&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bgstack15&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wine&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;voobly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;StartupNotify&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bgstack15&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;wine&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dosdevices&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nl"&gt;c&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Program&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Files&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Voobly&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="o"&gt;=/&lt;/span&gt;&lt;span class="n"&gt;home&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bgstack15&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;share&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;icons&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;voobly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;png&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;StartupWMClass&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;voobly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exe&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Comment&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Play&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Age&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Empires&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;online&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Terminal&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;Categories&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;Game&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="n"&gt;StrategyGame&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;MimeType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;scheme&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;handler&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;voobly&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="n"&gt;StartupWMClass&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;voobly&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;exe&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The shell script &lt;code&gt;voobly.sh&lt;/code&gt; has that $@ (all parameters), which will pass any
of those values from the %u from the Desktop file.&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;&lt;span class="normal"&gt;1&lt;/span&gt;
&lt;span class="normal"&gt;2&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/sh&lt;/span&gt;
env &lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"/home/bgstack15/.wine"&lt;/span&gt; /usr/bin/wine C:&lt;span class="se"&gt;\\&lt;/span&gt;Program&lt;span class="se"&gt;\ &lt;/span&gt;Files&lt;span class="se"&gt;\\&lt;/span&gt;Voobly&lt;span class="se"&gt;\\&lt;/span&gt;voobly.exe &lt;span class="nv"&gt;$@&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Side note: The &lt;code&gt;STAGING_WRITECOPY=1&lt;/code&gt; environment variable is not necessary for
wine with versions starting approximately 2020. I cannot pinpoint the exact
time or version, unfortunately. The Wine release notes make passing references
to copy-on-write or similar for versions
&lt;a href="https://www.winehq.org/announce/4.4"&gt;4.4&lt;/a&gt;,
&lt;a href="https://www.winehq.org/announce/4.2"&gt;4.2&lt;/a&gt;, and
&lt;a href="https://www.winehq.org/announce/2.18"&gt;2.18&lt;/a&gt; but they don't seem definitive
enough to match what I recall. But for Devuan Ceres I haven't needed the
winehq apt repo for a long time now. (And Fedora has always used the staging
version of Wine.) Or you could just copy extant Voobly mods from one installed
system to another underneath directory &lt;code&gt;~/.wine/drive_c/Program\
Files/Microsoft\ Games/Age\ of\ Empires\ II/Voobly\ Mods/AOC/&lt;/code&gt;. There are
several directories in there, particularly &lt;code&gt;Local Mods&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$ ls -al ~/.wine/drive_c/Program&lt;span class="se"&gt;\ &lt;/span&gt;Files/Microsoft&lt;span class="se"&gt;\ &lt;/span&gt;Games/Age&lt;span class="se"&gt;\ &lt;/span&gt;of&lt;span class="se"&gt;\ &lt;/span&gt;Empires&lt;span class="se"&gt;\ &lt;/span&gt;II/Voobly&lt;span class="se"&gt;\ &lt;/span&gt;Mods/AOC/Local&lt;span class="se"&gt;\ &lt;/span&gt;Mods/
total &lt;span class="m"&gt;16&lt;/span&gt;
drwxrwxr-x. &lt;span class="m"&gt;3&lt;/span&gt; bgstack15 bgstack15 &lt;span class="m"&gt;4096&lt;/span&gt; Jan &lt;span class="m"&gt;24&lt;/span&gt;  &lt;span class="m"&gt;2020&lt;/span&gt; Short Walls/
drwxrwxr-x. &lt;span class="m"&gt;3&lt;/span&gt; bgstack15 bgstack15 &lt;span class="m"&gt;4096&lt;/span&gt; Jan &lt;span class="m"&gt;29&lt;/span&gt;  &lt;span class="m"&gt;2020&lt;/span&gt; Small Trees/
drwx------. &lt;span class="m"&gt;4&lt;/span&gt; bgstack15 bgstack15 &lt;span class="m"&gt;4096&lt;/span&gt; Oct  &lt;span class="m"&gt;6&lt;/span&gt;  &lt;span class="m"&gt;2019&lt;/span&gt; Spectator Dashboard/
drwx------. &lt;span class="m"&gt;4&lt;/span&gt; bgstack15 bgstack15 &lt;span class="m"&gt;4096&lt;/span&gt; Oct  &lt;span class="m"&gt;6&lt;/span&gt;  &lt;span class="m"&gt;2019&lt;/span&gt; Spectator Overlay/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Happy downloading mods! &lt;a href="https://bgstack15.ddns.net/blog/2021/06/voobly-mods-page.png"&gt;&lt;img alt="Screenshot of Voobly mods web
page" src="https://bgstack15.ddns.net/blog/2021/06/voobly-mods-page.png"&gt;&lt;/a&gt;&lt;/p&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://unix.stackexchange.com/questions/497146/create-a-custom-url-protocol-handler/497147#497147"&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://forum.vivaldi.net/topic/32223/associate-steam-protocol-steam-with-linux-steam-client/3"&gt;Associate steam protocol (steam://) with linux steam client | Vivaldi Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bbs.archlinux.org/viewtopic.php?id=86877"&gt;How do I associate a protocol with a program? / Newbie Corner / Arch Linux Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ripped directly from &lt;a href="https://www.voobly.com/forum/thread/315378/:1396027"&gt;How to download mods from browser (Linux)&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description><category>Age of Empires 2</category><category>files</category><category>voobly</category><category>wine</category><guid>https://bgstack15.ddns.net/blog/posts/2021/06/12/download-voobly-mods-from-browser/</guid><pubDate>Sat, 12 Jun 2021 13:24:27 GMT</pubDate></item><item><title>Voobly notes</title><link>https://bgstack15.ddns.net/blog/posts/2019/01/21/voobly-notes/</link><dc:creator>bgstack15</dc:creator><description>&lt;h2&gt;Voobly on Wine in Linux&lt;/h2&gt;
&lt;p&gt;For some reason, one of my voobly installations in Wine on Linux (devuan
specifically) runs like a dog. While the system is indeed really old, Voobly
was running smoother on it before the OS reinstall. After an strace, I learned
it kept looking for a tzres.dll in C:\Program Files\Voobly\, and there wasn't
one. So I copied it in from the system32 directory and re-ran Voobly. It seems
to operate a little better now, although it's still not exactly a smooth
experience.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;cp -p ~/.wine/drive_c/windows/system32/tzres.dll ~/.wine/drive_c/Program\ Files/Voobly/
&lt;/pre&gt;&lt;/div&gt;</description><category>aoc</category><category>game</category><category>notes</category><category>voobly</category><category>wine</category><guid>https://bgstack15.ddns.net/blog/posts/2019/01/21/voobly-notes/</guid><pubDate>Mon, 21 Jan 2019 13:53:06 GMT</pubDate></item></channel></rss>