# AppImage Quick Reference Card

## 🚀 Basic Operations

### Download and Run (Quick Test)
```bash
# Make executable
chmod +x app-name.AppImage

# Run it
./app-name.AppImage
```

---

## 🏠 Proper Installation

### Using the Automated Script
```bash
# Simple - script will prompt for details
bash install-appimage.sh ~/Downloads/app-name.AppImage

# With all options
bash install-appimage.sh ~/Downloads/app-name.AppImage my-app-name Office
```

### Manual Installation
```bash
# 1. Move to Applications
mkdir -p ~/Applications
mv ~/Downloads/app-name.AppImage ~/Applications/
chmod +x ~/Applications/app-name.AppImage

# 2. Create desktop entry
nano ~/.local/share/applications/app-name.desktop

# 3. Paste this template (edit as needed):
[Desktop Entry]
Type=Application
Name=App Name
Comment=Brief description
Icon=/home/jl-kruger/Applications/app-icon.png
Exec=/home/jl-kruger/Applications/app-name.AppImage
Terminal=false
Categories=Utility;

# 4. Update database
chmod +x ~/.local/share/applications/app-name.desktop
update-desktop-database ~/.local/share/applications/
```

---

## 🎨 Extract Icon from AppImage

```bash
# Extract AppImage contents
./app-name.AppImage --appimage-extract

# Find icon
find squashfs-root -name "*.png" | grep -i icon

# Copy icon
cp squashfs-root/path/to/icon.png ~/Applications/app-icon.png

# Clean up
rm -rf squashfs-root
```

---

## 🔄 Update AppImage

```bash
# 1. Download new version
cd ~/Downloads

# 2. Backup current version
mv ~/Applications/app-name.AppImage ~/Applications/app-name.AppImage.old

# 3. Install new version
mv ~/Downloads/app-name-new.AppImage ~/Applications/app-name.AppImage
chmod +x ~/Applications/app-name.AppImage

# 4. Test
~/Applications/app-name.AppImage

# 5. Remove backup once confirmed
rm ~/Applications/app-name.AppImage.old
```

---

## 🗑️ Remove AppImage

```bash
# Complete removal
rm ~/Applications/app-name.AppImage
rm ~/Applications/app-icon.png
rm ~/.local/share/applications/app-name.desktop
update-desktop-database ~/.local/share/applications/

# Also remove app data (if exists)
rm -rf ~/.config/app-name
rm -rf ~/.local/share/app-name
```

---

## 🔧 Troubleshooting

### Permission Denied
```bash
chmod +x app-name.AppImage
```

### FUSE Error
```bash
# Install FUSE
sudo apt install fuse libfuse2

# Or run without FUSE
./app-name.AppImage --appimage-extract
./squashfs-root/AppRun
```

### Desktop Entry Not Appearing
```bash
# Validate
desktop-file-validate ~/.local/share/applications/app-name.desktop

# Update database
update-desktop-database ~/.local/share/applications/

# Restart panel
xfce4-panel -r
```

### Missing Libraries
```bash
# Check what's missing
ldd app-name.AppImage

# Install common deps
sudo apt install libfuse2 libgl1 libxcb1
```

---

## 📝 Desktop Entry Template

### Basic
```ini
[Desktop Entry]
Type=Application
Name=App Name
Exec=/home/jl-kruger/Applications/app-name.AppImage
Icon=/home/jl-kruger/Applications/app-icon.png
Terminal=false
Categories=Utility;
```

### With Multiple Actions
```ini
[Desktop Entry]
Type=Application
Name=App Name
Exec=/home/jl-kruger/Applications/app-name.AppImage
Icon=/home/jl-kruger/Applications/app-icon.png
Terminal=false
Categories=Development;
Actions=SafeMode;Debug;

[Desktop Action SafeMode]
Name=Safe Mode
Exec=/home/jl-kruger/Applications/app-name.AppImage --safe-mode

[Desktop Action Debug]
Name=Debug Mode
Exec=/home/jl-kruger/Applications/app-name.AppImage --debug
```

---

## 📁 Recommended Directory Structure

```
~/Applications/
  ├── app1.AppImage
  ├── app1-icon.png
  ├── app2.AppImage
  ├── app2-icon.png
  └── README.md           # Document what's installed

~/.local/share/applications/
  ├── app1.desktop
  └── app2.desktop
```

---

## 🎯 Common AppImage Commands

```bash
# Get help (if supported)
./app-name.AppImage --appimage-help

# Get version
./app-name.AppImage --appimage-version

# Extract contents
./app-name.AppImage --appimage-extract

# Self-integrate (if supported)
./app-name.AppImage --appimage-integrate

# Check file type
file app-name.AppImage
# Should show: ELF 64-bit LSB executable

# Test launch from desktop entry
gtk-launch app-name

# Check size
du -h app-name.AppImage
```

---

## 📊 Categories Reference

Common categories for desktop entries:

- **AudioVideo** - Media players, music apps
- **Development** - IDEs, text editors, dev tools
- **Education** - Learning software
- **Game** - Games
- **Graphics** - Image editors, viewers, design tools
- **Network** - Browsers, email, chat
- **Office** - Word processors, spreadsheets, notes
- **Science** - Scientific applications
- **Settings** - Configuration tools
- **System** - System tools
- **Utility** - General utilities (default)

Use semicolon to separate multiple:
```ini
Categories=Development;TextEditor;Utility;
```

---

## 🔍 Find Installed AppImages

```bash
# List all AppImages in Applications
ls -lh ~/Applications/*.AppImage

# Find all desktop entries
ls ~/.local/share/applications/*.desktop

# Search for specific app
find ~/Applications -name "*app-name*.AppImage"

# Check which apps are in menu
grep -l "Exec.*AppImage" ~/.local/share/applications/*.desktop
```

---

## 💡 Pro Tips

### Create Launcher Alias
```bash
# Add to ~/.bashrc
alias myapp='~/Applications/app-name.AppImage'

# Use it
myapp
```

### Version in Filename
```bash
# Keep track of versions
mv app.AppImage app-v1.2.3.AppImage

# Symlink to latest
ln -s app-v1.2.3.AppImage app.AppImage

# Desktop entry points to symlink
Exec=/home/jl-kruger/Applications/app.AppImage
```

### Batch Install Multiple AppImages
```bash
for appimage in ~/Downloads/*.AppImage; do
    bash install-appimage.sh "$appimage"
done
```

---

## 🛡️ Security Check

```bash
# Verify file type
file app-name.AppImage

# Check if downloaded correctly
sha256sum app-name.AppImage
# Compare with official checksum

# Scan with ClamAV (if installed)
clamscan app-name.AppImage
```

---

## 🌐 Where to Find AppImages

1. **Project GitHub Releases**
   - `https://github.com/username/project/releases`
   
2. **Official Website**
   - Look for "Download for Linux" → AppImage option

3. **Verify Source**
   - Only download from official sources
   - Check file integrity with checksums

---

## 📞 Quick Help

```bash
# Installation help
bash install-appimage.sh

# Check if working
gtk-launch app-name

# View desktop entry
cat ~/.local/share/applications/app-name.desktop

# Validate desktop entry
desktop-file-validate ~/.local/share/applications/app-name.desktop
```

---

**Cheat Sheet Version:** 1.0  
**For:** Linux Mint 22.2 Xfce  
**Date:** October 2025
