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
Execline.Execis 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.TryExecandIconare plain strings — no quotes there. --no-sandbox— the IDE is an Electron app; this flag comes from the.desktopfile bundled inside the AppImage itself and avoids Chromium sandbox errors on newer Ubuntu.%Ulets the menu entry open.inosketches.StartupWMClass=Arduino IDEmakes the running window group with your dock icon instead of showing up as a second, separate icon.Version=1.0is the desktop-entry spec version, not the IDE version — leave it as1.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+F2 → r → 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 cpof the desktop file to/usr/share/applications— unnecessary. A user-local entry in~/.local/share/applicationsis all you need, including for dock favorites.sudo chmod +x— plainchmodis enough on your own file.- Unquoted
Execpath 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-databasedoes it without the ceremony.
Hope this saves someone the debugging session it cost me. Corrections welcome!