# Launch Flatpak Apps With Custom Args and Environment Variables

In this guide you will learn how to launch flatpak applications with custom arguments and environment variables.

## Find your application

First, you need to find the application id of the app you want. To do that run the command below in the terminal.

```bash
$ flatpak list
```

![screenshot of flatpak install command output](https://cdn.hashnode.com/res/hashnode/image/upload/v1665831274604/PdFl9Xgjk.png align="left")

Find the `Application ID` and save it somewhere, it's going to be important later on.


If you want to test the env variables or arguments you can use the temporary solution below. Otherwise, use the [permanent solution](#heading-permanent-solution).

## Temporary solution

Run the command below in a terminal. Make sure replace **Application ID** with the id you saved in the earlier section and remove the brackets `<>`.

*Note: Angled brackets `<>` in command references means that the argument is **mandatory**, while square brackets `[]` means that the argument is **optional**. you will see this a lot in manual pages (`man` command).*

```bash
$ flatpak run [--env=VARIABLE=VALUE] <Application ID> [--custom-argument-here]
```

**Example**

Recently I had a problem with Discord lagging when mouse hovered over the server list. On my system discord is installed as a flatpak. I solved this issue by adding`--enable-gpu-rasterization` argument as below

```bash
$ flatpak run --command discord com.discordapp.Discord --enable-gpu-rasterization
```

discord needs the `--command` flag. Your app probably doesn't need it but if you have any problems you can reach out to me in the comments.

However, this is a one-off solution. To make it permanent follow the section below.

## Permanent solution

If you **only** want to add some custom env variables there is an easy method. We use the `override` command of flatpak for it. This method doesn't work for custom arguments (See [issue #2913 on flatpak repo](https://github.com/flatpak/flatpak/issues/2913)) so if you want to add custom arguments please follow [create custom desktop entry](#heading-create-custom-desktop-entry) section.

### Create override

```bash
$ flatpak override --user < --env=VARIABLE_NAME=VARIABLE_VALUE > <Application ID>
```

This will make your env variable permanent.

*Note: you can remove the `--user` flag if you want the override to be applied system-wide. I only wanted it applied for my user so I'm using the flag here.*


To make custom arguments permanent we just have to get a little more involved.

### Create custom desktop entry

By default installed flatpak application with desktop entries export their `.desktop` files in `~/.local/share/flatpak/exports/share/applications`. What do these `.desktop` files do? Well, these files contain information about the application's desktop icon, what kind of a program it is and **the command used to launch the app**. Which is just what we need. 

We will first copy this desktop file so that the original file is intact  

```bash
$ cp ~/.local/share/flatpak/exports/share/applications/<Application id>.desktop \
    ~/.local/share/applications
```

After this open the `<Application ID>.desktop` file at `~/.local/share/applications` in your editor.

**Example**

 
![screenshot of my desktop file example](https://cdn.hashnode.com/res/hashnode/image/upload/v1665829768052/PCX_zTjCP.png align="left")

Some lines in your file might be different.

As you can already see in my edited file, we are going to directly modify the `flatpak run` command in the `Exec` field. This is similar to what we did in the [temporary solution](#heading-temporary solution) but this time it will run every time the app is launched.


You just need to modify the `Exec` field. Here is a reference, you can also use the screenshot above.

```
Exec=/usr/bin/flatpak run [--env=VARIABLE=VALUE] com.discordapp.Discord [--custom-argument]
```


**References**
- [flatpak docs](https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-run)
- [wonderful people in issue #2913 in flatpak repo](https://github.com/flatpak/flatpak/issues/2913#issuecomment-944976842)

That's it for now! Please reach out if you face any issues. If this helped you please consider supporting me. Thank you!
