Where Do I Put AppImages?
Tags: appimage, linux
Published: 2020-04-03 11:36:57

---
title: Where Do I Put AppImages?
published: true
date: 2019-12-31 11:05:50 UTC
tags: appimage, linux
canonical_url: https://www.preciouschicken.com/blog/posts/where-do-i-put-appimages/
---

### TL;DR

I put my AppImages in _/opt_.

### The Official Recommendation

The [AppImage FAQ](https://docs.appimage.org/user-guide/faq.html#question-where-do-i-store-my-appimages) recommends the following for storing AppImages:

> If you don’t want to leave them in $HOME/Downloads, then $HOME/Applications is a good choice.

### Why not leave them in $HOME/Downloads?

What’s wrong with this? Can’t I just leave them in _$HOME/Downloads_? No. If you are anything like me _Downloads_ is full of random accumulated dross, kind of like digital lint. Anything worth preserving gets filed, anything left is assumed to be delete-worthy. Which admittedly gets done very infrequently, but enough that it is not a permanent storage place.

### So $HOME/Applications, then?

So why not create and use _$HOME/Applications_? Although this makes more sense than _Downloads_, it still doesn’t fit. As my choice of OS is [Regolith](https://regolith-linux.org) I access applications via [Rofi](https://github.com/davatorium/rofi) - i.e. I open an application by key combination and then typing its name. Even if I was using stock Ubuntu then I would presumably use the dock to access application icons. I therefore have no need, pretty much ever, to navigate to a folder, find the right application and then double-click on it to open. I have even less need to do this when the folder does not contain all of my applications but only a subset of them (i.e. the ones I have installed using an AppImage) - which is the case here. Now my understanding of the _$HOME_ folder is that it is meant to actually contain things which the user cares about and wants to interact with - otherwise we might as well put everything in _$HOME_ and not bother with the rest of the filesytem. This [criticism has also been raised with Snap applications](https://bugs.launchpad.net/ubuntu/+source/snapd/+bug/1575053), which follows a similar delivery format. So why put them in a folder in _$HOME_ if we are never actually going to want to access them; why don’t we put them somewhere out of the way with the rest of the Linux gubbins?

### The answer is /opt

So I’m far from an expert on Linux gubbins however the [description of _/opt_](https://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html) seems to fit the bill:

> This directory is reserved for all the software and add-on packages that are not part of the default installation. For example, StarOffice, Kylix, Netscape Communicator and WordPerfect packages are normally found here. To comply with the FSSTND, all third party applications should be installed in this directory.

As this is outside of the _$HOME_ directory the AppImage has to be moved as the superuser, e.g. (using [neovim.appimage](https://github.com/neovim/neovim/releases) as an example):

```
sudo mv ~/Downloads/nvim.appimage /opt
cd /opt
chmod a+x nvim.appimage && ./nvim.appimage

```

### System integration and appimaged

Using the _/opt_ directory also works with [appimaged](https://github.com/AppImage/appimaged) which is a daemon that looks for AppImages and registers them with the system (i.e. ensures their icons display etc).

### Cons

A potential disadvantage of using _/opt_ is that all users of the system can access the application, rather than just the current user. Personally I think that is a plus.

I guess another issue with _/opt_ is you might forget that is where you put all your AppImages - there’s an easy answer to that: write a blog post…

Another option given in the AppImage FAQ is _$HOME/.local/bin_ and _$HOME/bin_ but as the FAQ itself states these are “are useful mainly for CLI tools,” and most of my AppImages aren’t in this category (though I guess nothing wrong in itself with putting these in a folder intended mostly for CLI tools).

* * *

A highly opinionated rant; _/opt_ works for me, use wherever works for you. It’s also worth adding the designers of AppImages were probably more interested in technical challenges and getting kudos from Linus Torvalds than these minor housekeeping points. Comment below if you think I’m being dangerously outrageous.