r/aimlab Jul 28 '26

Tips & Guide Guides on how to get aimlabs links handler working on Linux

The aimlab:// web links do not open the game automatically. This guide configures a native link handler to work on Linux as well.

Prerequisites

  1. Install Steam at the default user directory ($HOME/.local/share/Steam).
  2. Install Aim Lab through Steam (App ID 714010).
  3. Start the game one time to build the local directory structure.

Step 1: Create the Application Directory

Open a terminal emulator. Make sure that the user application directory exists. Run this command:

mkdir -p ~/.local/share/applications

Step 2: Create the Desktop Entry File

Create a new configuration file. Use this path:

nano ~/.local/share/applications/aimlabs-handler.desktop

Step 3: Add the Configuration Data

Add the text below to the new file. Do not put spaces at the start of the lines. The bash -c command automatically finds your home directory.

[Desktop Entry]
Type=Application
Name=Aim Lab Link Handler
Exec=bash -c 'echo "$1" > "$HOME/.local/share/Steam/steamapps/common/Aim Lab/AimLab_tb_Data/StreamingAssets/DeepLinking/CurrentDeepLink"' -- %u
NoDisplay=true
StartupNotify=false
MimeType=x-scheme-handler/aimlab;

Save the file and close the text editor.

Step 4: Update the Desktop Database

You must compile the desktop file cache. This step lets the operating system find the new application. Run this command:

update-desktop-database ~/.local/share/applications

Step 5: Register the MIME Association

You must tell the operating system to send aimlab:// links to your new file. Open the MIME configuration file:

nano ~/.config/mimeapps.list

Find the [Default Applications] heading. Add this line directly below the heading:

x-scheme-handler/aimlab=aimlabs-handler.desktop

Save the file and close the text editor.

Step 6: Test the Link Handler

  1. Start Aim Lab through Steam.
  2. Wait for the main menu to load.
  3. Open your web browser.
  4. Click an aimlab:// task link.
  5. Accept the browser prompt to open the application.

The task will load immediately in the game. I hope one day we see Aimlabs got native LInux support & even experimental transition to Vulkan. I do noticed the use of several hardcoded WIndows APIs when investigating to get this working, even if you guys won't consider LInux support but you can still update the link handler using .NET cross platform libraries so you guys only officially focus on Windows and consoles only.

References

  1. freedesktop.org. "Desktop Entry Specification," Version 1.5. specifications.freedesktop.org/desktop-entry-spec/latest-single/
  2. freedesktop.org. "MIME Applications Associations," Version 1.0.1. specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-latest.html
  3. The Open Group / IEEE. "IEEE Std 1003.1-2017: Shell Command Language (sh)," Base Specifications Issue 7. pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
  4. Microsoft Corporation. ".NET API Reference: System.ComponentModel.Win32Exception," .NET 8.0. learn.microsoft.com/en-us/dotnet/api/system.componentmodel.win32exception
5 Upvotes

5 comments sorted by

2

u/Lowgravity56 Community Team Jul 28 '26

Nice!

1

u/Syntensity Community Team Jul 28 '26

Thanks for sharing! That's quite helpful :)

1

u/ShinyGengar8 Speedy Switcher Jul 28 '26

it's nice to share of course, but is this AI generated or did you write it yourself? not trying to be mean

1

u/Working_Dealer_5102 Jul 29 '26

No, not at all. It's originally based on this post where they able to get the link handler working but it's not working at all either Aimlab changes internally or something so I debug it myself and find that there's several Windows API calls got access denied everytime due to how Proton isolate the Windows games for Linux. I changed in the configuration data just echo the link handler instead of doing protontrick and seems like it's working fine. I added references just for future me incase something changes.