Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Download voobly mods from browser

If you inspect a Voobly mods page (such as Jurassic 2 for Age of Empires II: The Conquerors) you can see that the "Download" button is a custom protocol.

<form action="voobly://client.voobly.com:17600/?service=Package&amp;uid=0&amp;session=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&amp;arg=voobly.com**gamemods*13*Jurassic[space]2" method="post">

You can inspect what your system is currently configured to use for a custom protocol of x-scheme-handler/voobly:

$ xdg-mime query default x-scheme-handler/voobly
Voobly.desktop

And if you need to manually set it, you can do so with:

xdg-mime default Voobly.desktop x-scheme-handler/voobly

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.

$ cat ~/.local/share/applications/Voobly.desktop
[Desktop Entry]
Name=Voobly
Exec=/home/bgstack15/.wine/voobly.sh %u
Type=Application
StartupNotify=true
Path=/home/bgstack15/.wine/dosdevices/c:/Program Files/Voobly
Icon=/home/bgstack15/.local/share/icons/voobly.png
StartupWMClass=voobly.exe
Comment=Play Age of Empires 2 online
Terminal=false
Categories=Game;StrategyGame;
MimeType=x-scheme-handler/voobly;
StartupWMClass=voobly.exe

The shell script voobly.sh has that $@ (all parameters), which will pass any of those values from the %u from the Desktop file.

1
2
#!/bin/sh
env WINEPREFIX="/home/bgstack15/.wine" /usr/bin/wine C:\\Program\ Files\\Voobly\\voobly.exe $@

Side note: The STAGING_WRITECOPY=1 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 4.4, 4.2, and 2.18 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 ~/.wine/drive_c/Program\ Files/Microsoft\ Games/Age\ of\ Empires\ II/Voobly\ Mods/AOC/. There are several directories in there, particularly Local Mods.

$ ls -al ~/.wine/drive_c/Program\ Files/Microsoft\ Games/Age\ of\ Empires\ II/Voobly\ Mods/AOC/Local\ Mods/
total 16
drwxrwxr-x. 3 bgstack15 bgstack15 4096 Jan 24  2020 Short Walls/
drwxrwxr-x. 3 bgstack15 bgstack15 4096 Jan 29  2020 Small Trees/
drwx------. 4 bgstack15 bgstack15 4096 Oct  6  2019 Spectator Dashboard/
drwx------. 4 bgstack15 bgstack15 4096 Oct  6  2019 Spectator Overlay/

Happy downloading mods! Screenshot of Voobly mods web
page

References

Weblinks

  1. xdg - Create a custom URL Protocol Handler - Unix & Linux Stack Exchange
  2. Associate steam protocol (steam://) with linux steam client | Vivaldi Forum
  3. How do I associate a protocol with a program? / Newbie Corner / Arch Linux Forums
  4. Ripped directly from How to download mods from browser (Linux)

Comments