Skip to content

Instantly share code, notes, and snippets.

@thenerdlygentleman
Last active January 4, 2025 20:54
Show Gist options
  • Save thenerdlygentleman/c730ea7e2613dd16d43d21e3273b1443 to your computer and use it in GitHub Desktop.
Save thenerdlygentleman/c730ea7e2613dd16d43d21e3273b1443 to your computer and use it in GitHub Desktop.
Start non-steam games in gaming mode with bottles.

Start non-steam games using bottles

My tutorial is based on this one from pudquick

Side note

Introduction

Disclaimer: I know that there are many ways to start a non-steam game on the steam deck. The simplest solution would be to just install the game/launcher via steam itself. I also tried this solution before and it do not like it. It creates a new environment every time you add a new game, which makes controlling your file system a bit complicated, etc.

Pros

  • Install all games/launcher in one environment
  • Launchers can be installed automatically using bottles
  • Add .exe files to bottles and start them via the bottles GUI
  • Launch the game directly via steam (Desktop and Gaming mode)

Cons

  • Setup is maybe a bit much
  • After exiting the game, you must force stop the game every time via steam

Steps

Information on Bottles

Bottles are using Proton GE Custom which is a Fork from Proton. It makes it easy to install programs under the same proton environment. It is also possible to install non-games programs (e.g. Fusion360) with it.


For this tutorial we are creating a bottle named Gaming. Then we install Ubisoft Connect in this bottle and then we install Assassin's Creed III Remastered in it.

  1. Install bottles via the discovery app

    Side note

    You can also install bottles with the terminal

    flatpak remote-add \
      --user \
      --if-not-exists \
      flathub https://flathub.org/repo/flathub.flatpakrepo
    
    flatpak install \
      --user \
      --assumeyes \
      flathub com.usebottles.bottles
    

  2. Create a new bottle

    • Start bottles
    • In the upper left click the + button
    • In the field Name name the new bottle Gaming
    • For the environment choose Gaming
    • Press the button Create (this process will take a while)
  3. Install Ubisoft Connect & Assassin's Creed III Remastered

    • Open the new bottle Gaming
    • Press the button Install programs ...
    • Choose Ubisoft Connect
    • After the installation is finished, launch Ubisoft Connect (if not started automatically) by pressing the play button right to Ubisoft Connect in the list.
    • Install Assassin's Creed III Remastered via Ubisoft Connect. Remeber where the installation path is, because we need it in the next step.
  4. Add ACIII.exe to bottles

    • After the installation is finished press the button Add shortcuts ...

    • Navigate to the installed path and choose the file ACIII.exe. By default bottles will name the game/program after the file. In this case it is called ACIII you can rename it if you want, by clicking the three-dots and press Rename ...

      Side note

      You could stop here if you want a simple launcher for your linux machine. If you press the three-dots (option) for the .exe and click Add to Library it will create a shortcut for the program. If you are in the main menu of bottles, you can click on Library in the top and you have a little launcher for all your programs. If you named the program correctly, it will also add a nice cover to the program.

  5. Create the ACIII.sh and ACIII.desktop file

    • Create a file ACIII.sh in a path you like. Choose the file location carefully, because if you move it later, you also need to edit the ACIII.desktop file.

    • Add this content to the ACIII.sh file

      #!/bin/bash
      
      flatpak run \
        --command=bottles-cli \
        com.usebottles.bottles \
        run \
        --bottle Gaming \        # Name of your created bottle
        --program "ACIII"        # Name of the program you want to start
      
      Side note

      If you are unsure how your program is called, you can find it out by running this command in the shell:

      flatpak run \
        --command=bottles-cli \
        com.usebottles.bottles \
        programs \
        --bottle Gaming              # Name of your created bottle
      

      This will list all programs in your bottle

    • Right-click on the file and click properties

    • In the tab Permission check the option check Is executable (Important!)

    • Create the file /home/deck/.local/share/applications/ACIII.desktop. (The path is important)

    • Add this content to the ACIII.desktop file

      #!/usr/bin/env xdg-open
      
      [Desktop Entry]
      Name=Assassin's Creed III Remastered
      Exec=/path/to/ACIII.sh                 # Path to the created `ACIII.sh` file from before
      Type=Application
      Encoding=UTF-8
      Terminal=false
      
  6. Add the game to Steam

    • In steam click the button Add a gameAdd a non-steam game...
    • Navigate to /home/deck/.local/share/applications/ac3.desktop and select it (Steam will then show, that it will add the ACIII.sh, which means it worked)
    • Press Add selected Programs

THAT'S IT.

You can now start the game via steam (desktop- and gaming-mode) and it will directly start the launcher for the game with it.

References

@Eskander
Copy link

Eskander commented Nov 2, 2024

You don't need to do this manually, Bottles already supports adding shortcuts to Steam from the menu after step 4.

@thenerdlygentleman
Copy link
Author

thenerdlygentleman commented Jan 4, 2025

@Eskander I came up with this solution, because this feature of bottles never worked for me.

I tried it out now again and it worked. Maybe an update in bottles solved that.

So thanks for the info ;).

As it seems some games are working and some not, e.g. AC3 cannot be launched but Mass Effect Legendary Edition can.

Also in case of MELE, steam does not recognize my inputs.

I think, I will go back to my solution, because I never had any issues with it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment