DEV Community

websilvercraft
websilvercraft

Posted on

Everything about AppImage in Linux

AppImage and AppImageLauncher: Simplifying Portable Apps on Linux

Hey there, if you are a linux user, chances are you are already using AppImage, without even knowing. I wrote an overview of what AppImage is and how it simplifies the user experience.


What Exactly is an AppImage?

An AppImage is like a portable app for Linux. It's a single executable file that bundles an application and all its necessary dependencies (except for core system libraries). This means you can run it on virtually any Linux distribution without installation. No root access, no system tweaks—just download, make it executable, and you're good to go!


How Does AppImage Work?

Let's break it down:

A Self-Contained, Portable Bundle

An AppImage is a neatly packaged, self-contained application. It bundles the application binary along with all its necessary dependencies, ensuring that the app works consistently across a wide range of Linux distributions. This eliminates the common issues of dependency conflicts or compatibility mismatches. To achieve this portability, AppImages utilize a compressed filesystem like SquashFS, which houses all the application’s files. When executed, the system temporarily mounts this filesystem to access the required resources, ensuring seamless functionality without installation.

Easy Execution, No Installation Required

AppImages are executable files, but you may need to grant them the appropriate permissions (chmod +x) before running them. Once ready, you can launch the app directly with a double-click or from the terminal, no installation required. This means you can run AppImages from anywhere, even a USB drive, without modifying your system. It’s a simple, clean approach to using applications without cluttering your Linux environment.


Getting Started with AppImages

Using AppImages is super easy:

  1. Download: Grab the AppImage file from the application's website or a trusted source.
  2. Make It Executable(sometimes is necessary to make it an executable): chmod +x yourapp.AppImage, rr right-click the file, go to Properties, and check "Allow executing file as program".
  3. Run the AppImage: Double-click it or run bash ./yourapp.AppImage

Then you will get this dialog:

/home/username/Downloads/cursor-0.42.5x86_64.AppImage has not been integrated into your system.

Integrating it will move the AppImage into a predefined location, and include it in your application launcher.

To remove or update the AppImage, please use the context menu of the application icon in your task bar or launcher.

The directory the integrated AppImages are stored in is currently set to:
/home/username/Applications
Enter fullscreen mode Exit fullscreen mode

If you press integrate and run, the AppImage file will be copied to /home/username/Applications and entries will be created in /home/username/.local/share/applications/, with the extension *.desktop


To find out more details about different AppImage application files you can run in this folder:

find ~/Applications -name "*cursor*"
/home/username/Applications/cursor-0.42.4x86_64_4eb43e03d46b1e823cdd3f6697f8ffe8.AppImage
/home/username/Applications/cursor-0.42.5x86_64_3aad2fcb25d24d988a41f8c6ac0bc2f1.AppImage
Enter fullscreen mode Exit fullscreen mode

.desktop files

Most GUI applications are launched using a .desktop file. These files are usually stored in:

User-specific location: ~/.local/share/applications/
System-wide location: /usr/share/applications/

grep -r "Exec=" ~/.local/share/applications/ | grep cursor

grep -iRl "<application-name>" ~/.local/share/applications/ /usr/share/applications/
Enter fullscreen mode Exit fullscreen mode

More useful commands

we can use ps to find out more about an application whcih is running

ps aux | grep -i <application-name>

To look for the path, we should filter the processes including AppImage:

ps aux | grep -i cursor | grep -i AppImage
username     42731  0.0  0.0   5896  3080 ?        S    09:01   0:00 /usr/lib/x86_64-linux-gnu/appimagelauncher/binfmt-bypass /home/username/Applications/cursor-0.42.4x86_64_4eb43e03d46b1e823cdd3f6697f8ffe8.AppImage --no-sandbox
username     42765  0.1  0.0  11776  1996 ?        Ssl  09:01   0:04 /home/username/Applications/cursor-0.42.4x86_64_4eb43e03d46b1e823cdd3f6697f8ffe8.AppImage --no-sandbox
Enter fullscreen mode Exit fullscreen mode

Use xdg-mime to Find the Default App

If the application is set as the default for a specific file type, you can query its location using xdg-mime.

Identify the file type (e.g., .txt for a text editor):

xdg-mime query default <file-type>
Enter fullscreen mode Exit fullscreen mode

Example:

xdg-mime query default text/plain
Enter fullscreen mode Exit fullscreen mode

This will show the .desktop file name associated with the application. Use the .desktop file path to locate the executable.


Introducing AppImageLauncher

Want to make managing AppImages even smoother? Say hello to AppImageLauncher! It's a handy tool that integrates AppImages into your system, making them feel like native apps.

AppImageLauncher comes with two main tabs:

1. Settings Tab

Image description

  • Integration Directory: Choose where integrated AppImages are stored.
  • Updates: Set preferences for checking and handling updates.
  • Removing AppImages: Decide whether removing an AppImage also removes its system integrations.

2. AppImage Catalog Tab

Image description

  • List of Integrated AppImages: View all your integrated AppImages in one place.
  • Manage Apps: Update, remove, or launch apps directly from the catalog.
  • Information: Get details about each AppImage, like version and size.

With AppImageLauncher, your AppImages are neatly organized, easy to access, and integrated into your application menus.


Why Use AppImage?


Why Use AppImage?

Here are some perks of using AppImage:

  • Portability: Run the same AppImage on different Linux distros without any changes.
  • No Root Required: You don't need administrative privileges.
  • No System Modifications: Keeps your system clean—no leftover files or dependencies.
  • Easy Removal: To "uninstall," just delete the AppImage file.
  • Optional Integration: Tools like AppImageLauncher can integrate apps into your system menus.

Comparing AppImage with Snap and Flatpak

Wondering how AppImage stacks up against other packaging formats? Check this out:

Feature AppImage Snap Flatpak
Portability Very High Medium Medium
Sandboxing No Yes Yes
Installation Not Required Required Required
Update Support Manual or Built-in Automatic Automatic
Integration Optional Full Full

Are There Any Drawbacks?

As awesome as AppImages are, they have a few limitations:

  • Redundancy: Each AppImage includes its dependencies, which can take up extra disk space if you have multiple apps with similar libraries.
  • Security: Since they aren't sandboxed, running untrusted AppImages can be risky. Always download from reputable sources.
  • Lack of Integration: By default, they don't integrate into your system menus—unless you use a tool like AppImageLauncher.
  • Updates: Automatic updates aren't standard unless the developer includes that feature.

Wrapping Up

AppImage is a fantastic solution for running applications on Linux without the usual headaches. It's all about simplicity and portability. And with AppImageLauncher, managing your AppImages becomes even more seamless.

So next time you're looking to try out a new app, see if there's an AppImage available. It's all about making Linux life a bit easier!

Happy computing! 🚀

Top comments (0)