[Guide] Adding the Arduino IDE 2.x AppImage to the Ubuntu application menu (desktop entry + icon)

The Arduino IDE 2.x for Linux ships as an AppImage, which runs fine when you double-click it but doesn't show up in your application menu or dock. This guide integrates it properly — menu entry, real Arduino icon, pin-to-favorites — with no sudo and no logout.

It also covers the gotcha that cost me an afternoon: if the folder path contains a space, an unquoted desktop entry fails silently — the menu icon appears but clicking it does nothing.

Tested with arduino-ide_2.3.10_Linux_64bit.AppImage on Ubuntu 22.04, but the steps are the same for any IDE 2.x version.

1. Put the AppImage somewhere permanent and make it executable

mkdir -p ~/apps/arduino-ide
mv ~/Downloads/arduino-ide_2.3.10_Linux_64bit.AppImage ~/apps/arduino-ide/
chmod +x ~/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage

No sudo needed — it's your file. A folder path without spaces saves you quoting trouble later (step 4 shows the correct quoting if yours has one).

2. Install FUSE (first AppImage on the system only)

sudo apt install libfuse2        # Ubuntu 22.04 / 23.x
sudo apt install libfuse2t64     # Ubuntu 24.04 and newer

Now test-run it once from the terminal:

~/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage

If you get a sandbox/namespace error instead of the IDE window, don't worry — the --no-sandbox flag in step 4 handles it (it's what the IDE's own bundled launcher uses).

3. Extract the real Arduino icon from the AppImage

The AppImage carries its own icon — no need to hunt one down:

cd "$(mktemp -d)"
~/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage --appimage-extract "usr/share/icons/*"
cp squashfs-root/usr/share/icons/hicolor/512x512/apps/arduino-ide.png ~/apps/arduino-ide/

4. Create the desktop entry

nano ~/.local/share/applications/arduino-ide.desktop

Paste this, replacing YOU with your username (echo $HOME if unsure):

[Desktop Entry]
Version=1.0
Type=Application
Name=Arduino IDE
Comment=Arduino IDE 2.3.10
TryExec=/home/YOU/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage
Exec="/home/YOU/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage" --no-sandbox %U
Icon=/home/YOU/apps/arduino-ide/arduino-ide.png
Terminal=false
StartupWMClass=Arduino IDE
Categories=Development;IDE;Electronics;

The details that matter:

  • Quotes on the Exec line. Exec is split on spaces, so if your path contains one (e.g. ~/Documents/Arduino IDE/), it must be wrapped in double quotes or launching fails with no error at all. TryExec and Icon are plain strings — no quotes there.
  • --no-sandbox — the IDE is an Electron app; this flag comes from the .desktop file bundled inside the AppImage itself and avoids Chromium sandbox errors on newer Ubuntu.
  • %U lets the menu entry open .ino sketches.
  • StartupWMClass=Arduino IDE makes the running window group with your dock icon instead of showing up as a second, separate icon.
  • Version=1.0 is the desktop-entry spec version, not the IDE version — leave it as 1.0.

5. Validate and register

desktop-file-validate ~/.local/share/applications/arduino-ide.desktop
update-desktop-database ~/.local/share/applications

No output from the first command = the file is valid. The IDE now appears when you search the application menu, and you can right-click → Pin to Dash / Add to Favorites. No logout needed (on X11, Alt+F2r → Enter refreshes GNOME if it's slow to notice).

Upgrading to a new IDE version later

Rename the AppImage to something version-free once and the desktop entry never needs touching again:

mv ~/apps/arduino-ide/arduino-ide_2.3.10_Linux_64bit.AppImage ~/apps/arduino-ide/arduino-ide.AppImage

(Update the TryExec/Exec lines to match once.) From then on, upgrading is just: download the new AppImage, chmod +x, overwrite the old file.

Common mistakes (seen in older guides floating around)

  • sudo cp of the desktop file to /usr/share/applications — unnecessary. A user-local entry in ~/.local/share/applications is all you need, including for dock favorites.
  • sudo chmod +x — plain chmod is enough on your own file.
  • Unquoted Exec path with a space in it — the silent killer. The entry shows up in the menu but does nothing when clicked.
  • Setting Version= to the IDE's version number — it's the spec version, 1.0.
  • "Log out and back in" — update-desktop-database does it without the ceremony.

Hope this saves someone the debugging session it cost me. Corrections welcome!

Thanks!

Thanks for the explanation it will help many!