72

What is the best practices to leave this kind of file? I dont want to leave it on /Downloads folder

6 Answers 6

83

You can put AppImages anywhere you want and run them from there -- even USB thumbdrives or network shares.

However, the official recommendation by the AppImage developers is to create an extra directory, ${HOME}/Applications/ (or ${HOME}/.local/bin/ or ${HOME}/bin/) and store all AppImages there.

4
  • Is there any official web site for AppImage format? Aug 25, 2019 at 10:37
  • 3
    @PHPLearner: Here is the official documentation site: docs.appimage.org Aug 25, 2019 at 22:18
  • 8
    Here is the (exact) link to the documentation that describes where to store AppImages: docs.appimage.org/user-guide/…
    – Barun
    Nov 23, 2019 at 17:01
  • 1
    Yeah, but none of these locations let you run it from the app launcher/searcher
    – CpILL
    Nov 18, 2020 at 7:37
12

Try AppImageLauncher

you can set a directory to store all appimages,and it also creates desktop files

8
  • 1
    How on earth is this not the standard and included in the system? I love Linux but why can't I just double click to install an AppImage... May 12, 2021 at 20:40
  • 2
    @PaulSpiesberger probably still being experimented on... But it would be great to include this in distros since the size is negligible (less than 3 MB). This solves a huge problem with appimages - File associations Also, install is a misnomer probably, better terminology would be integrate. This is especially great for trying out applications because a single file can't leave files behind (which is rare in Linux anyway) May 13, 2021 at 4:30
  • 1
    @PaulSpiesberger, the appimage is not an installer. It is an application that runs without the need for installing its files on your computer. Similar executables exist in Windows and other OSes. For example, Audacity comes in versions that can be run on drives. In fact, you can run Ubuntu from a drive without installing it on a machine.
    – Mark Lee
    May 14, 2021 at 19:54
  • @MarkLee I know but my point is that ordinary users don't really care. I do not want to think about where I should keep my AppImages. I want to double click on the AppImage and get it "installed" => copied to a managed place on my computer and a launcher icon gets added to my OS menu. It should be as easy as on MacOS: I download the .app file, I double click and get prompted to move the app into my "programs folder" and the OS automatically adds a starter icon to my menu. My grandmother needs to be able to install AppImages and AppImageLauncher is coming damn close. May 15, 2021 at 19:55
  • 1
    @MarkLee It is not "installation", it's merely integration. Adding desktop file into ./local/share/applications isn't installation. Also, AppImage launcher creates an option to "de-integrate" appimage from system. May 18, 2021 at 19:51
8

Appimage files are applications which does not need any installation to use.

You just need to click on them to run/start the application and then close it when done. So, you can keep them in any directory you want.

I myself keep them in a directory called 'Apps' on the desktop so that they are handy when ever I quickly want to use them.

4

While the answer "literally anywhere you want" is technically correct, I can identify with the desire to know the most sensible location for them.

For use by one user only

Put them in your home directory somewhere. Since it's only for you, and your home directory is entirely yours to decide how it's best organised, the choice is up to you, but a popular suggestion is:

~/.local/bin

Or, some set up a heirarchy directly within their home directory like:

~/bin

The disadvantage to the latter is that it visibly litters your home directory more.

Why a plain "bin" directory and not something AppImage specific? Well, there's no reason you can't name a directory "appimages" or something and put them in there. But the established meaning of "bin" associates it with any file that is directly executable, which an AppImage is. So it can share its place with other binary executables that are not AppImages should you want.

For use by any user

You essentially need somewhere outside your home directory.

But, it's important you don't use some directory that your operating system uses for its own software installation (like /bin, /usr, etc).

A suggestion:

/usr/local/bin

Unlike the rest of /usr the convention of the /usr/local tree is that it's a tree of software installation done manually by the administrator as opposed to by the operating system. So it kind of fits.

The alternative is to make up your own directory completely. You could even have it at root, like

/appimages

Or replace this with any sensible term you can think of. "applications" seems ok too.

Notes

Don't alter the file permissions. A Linux novice may assume that in order to make an app available to all users it needs to have its ownership changed or be given write/"777" permission to all users. It doesn't. It only needs to be readable and executable to whoever is running it, and can be owned by anyone - that is, "755" is appropriate.

Configuration for and files created by the AppImage aren't stored in the AppImage. They tend to be stored in the home directory of the user that's running it. It can essentially be treated like a binary executable running as the user who executed it.

Also, technically you don't need to move the executable outside of your home directory at all in order for others to be able to execute it, except that I like the modern convention that home directories are hidden to other users by default.

2
  • Re: "Don't alter the file permissions", most or all of the AppImages I've downloaded so far are non-executable and thus need to be given extra permissions to run, so I think that this is misleading.
    – drkvogel
    Mar 3, 2022 at 10:18
  • 1
    Yeah, I did clarify that it needed to be executable, but I can see if I can make that clearer. Mar 3, 2022 at 23:08
2

...or {some_mountpoint}/Applications

1

~/.local/share/appimage is where i put them

to further have them integrated into the desktop i create wrapperscripts in ~/.local/bin/ like this: (i.e. ~/.local/bin/plover)

#!/bin/bash
appimage plover

which uses this despicable approach at ~/.local/bin/appimage:

#!/bin/bash
[[ $# -lt 1 ]]&&echo "usage: ${FUNCNAME[0]} PROGRAM_NAME"&&return
(1>/dev/null nohup "$(eval "$(find ~/.local/share/appimage -maxdepth 1 -type f -name "${1}*")")"&) \
    &&(killall "$1"||:)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .