Initial commit — Singular Particular Space v1
Homepage (site/index.html): integration-v14 promoted, Writings section integrated with 33 pieces clustered by type (stories/essays/miscellany), Writings welcome lightbox, content frame at 98% opacity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
644
DumperCan/appimage-installation-guide.md
Normal file
644
DumperCan/appimage-installation-guide.md
Normal file
@@ -0,0 +1,644 @@
|
||||
# Complete AppImage Installation Guide
|
||||
## Universal Methods for Any AppImage Application
|
||||
|
||||
## 📦 What is AppImage?
|
||||
|
||||
AppImage is a portable application format for Linux. Think of it like a Windows `.exe` - it's a single file that contains everything the application needs to run.
|
||||
|
||||
**Key Features:**
|
||||
- ✅ **No installation required** - just download and run
|
||||
- ✅ **No root/sudo needed** - runs as regular user
|
||||
- ✅ **Self-contained** - includes all dependencies
|
||||
- ✅ **Portable** - works across different Linux distributions
|
||||
- ✅ **No system pollution** - doesn't scatter files everywhere
|
||||
- ✅ **Easy to remove** - just delete the file
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Method 1: Quick & Dirty (Just Run It)
|
||||
|
||||
The simplest way - no integration with system menus.
|
||||
|
||||
### Step 1: Download AppImage
|
||||
```bash
|
||||
# Example: Download to Downloads folder
|
||||
cd ~/Downloads
|
||||
wget https://example.com/app-name.AppImage
|
||||
|
||||
# Or use your browser to download
|
||||
```
|
||||
|
||||
### Step 2: Make Executable
|
||||
```bash
|
||||
chmod +x ~/Downloads/app-name.AppImage
|
||||
```
|
||||
|
||||
### Step 3: Run It
|
||||
```bash
|
||||
./app-name.AppImage
|
||||
```
|
||||
|
||||
**That's it!** The app runs directly from the file.
|
||||
|
||||
**Pros:**
|
||||
- Immediate - works in 3 commands
|
||||
- No system changes
|
||||
- Easy to test applications
|
||||
|
||||
**Cons:**
|
||||
- Not in application menu
|
||||
- Must run from terminal or file manager
|
||||
- No desktop integration
|
||||
- Stays in Downloads folder
|
||||
|
||||
---
|
||||
|
||||
## 🏠 Method 2: Proper Installation (Recommended)
|
||||
|
||||
Integrate AppImage into your system like a native application.
|
||||
|
||||
### Step 1: Create AppImages Directory
|
||||
```bash
|
||||
# Standard location for user applications
|
||||
mkdir -p ~/Applications
|
||||
|
||||
# Alternative locations:
|
||||
# ~/.local/bin/ (for command-line tools)
|
||||
# ~/.local/share/apps/ (alternative app directory)
|
||||
```
|
||||
|
||||
### Step 2: Move AppImage to Applications
|
||||
```bash
|
||||
# Move from Downloads
|
||||
mv ~/Downloads/app-name.AppImage ~/Applications/
|
||||
|
||||
# Make executable
|
||||
chmod +x ~/Applications/app-name.AppImage
|
||||
```
|
||||
|
||||
### Step 3: Create Desktop Entry
|
||||
|
||||
**Automatic Method (if AppImage supports it):**
|
||||
```bash
|
||||
# Some AppImages can integrate themselves
|
||||
cd ~/Applications
|
||||
./app-name.AppImage --appimage-integrate
|
||||
|
||||
# Or
|
||||
./app-name.AppImage --install
|
||||
```
|
||||
|
||||
**Manual Method (universal - works for any AppImage):**
|
||||
|
||||
```bash
|
||||
# Create desktop entry file
|
||||
nano ~/.local/share/applications/app-name.desktop
|
||||
```
|
||||
|
||||
**Template - Copy and customize:**
|
||||
```ini
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Application Name
|
||||
Comment=Brief description of the app
|
||||
Icon=/home/jl-kruger/Applications/app-name-icon.png
|
||||
Exec=/home/jl-kruger/Applications/app-name.AppImage
|
||||
Terminal=false
|
||||
Categories=Utility;
|
||||
# Common categories: Network;WebBrowser;Development;Graphics;AudioVideo;Office;Utility;Game;
|
||||
```
|
||||
|
||||
**Make executable and update database:**
|
||||
```bash
|
||||
chmod +x ~/.local/share/applications/app-name.desktop
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
```
|
||||
|
||||
### Step 4: Extract Icon (Optional)
|
||||
|
||||
Many AppImages contain their own icon. Extract it:
|
||||
|
||||
```bash
|
||||
# Extract AppImage contents to temporary directory
|
||||
cd ~/Applications
|
||||
./app-name.AppImage --appimage-extract
|
||||
|
||||
# Icons are usually in: squashfs-root/usr/share/icons/ or squashfs-root/
|
||||
# Find the icon
|
||||
find squashfs-root -name "*.png" -o -name "*.svg" | grep -i icon
|
||||
|
||||
# Copy icon to a permanent location
|
||||
cp squashfs-root/path/to/icon.png ~/Applications/app-name-icon.png
|
||||
|
||||
# Update desktop entry with correct icon path
|
||||
nano ~/.local/share/applications/app-name.desktop
|
||||
# Set: Icon=/home/jl-kruger/Applications/app-name-icon.png
|
||||
|
||||
# Clean up extracted files
|
||||
rm -rf squashfs-root
|
||||
```
|
||||
|
||||
**Icon Alternatives:**
|
||||
```bash
|
||||
# Use system icon (if available)
|
||||
Icon=application-default-icon
|
||||
|
||||
# Use absolute path
|
||||
Icon=/home/jl-kruger/Applications/app-icon.png
|
||||
|
||||
# Use icon name (if installed in system)
|
||||
Icon=app-name
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🤖 Method 3: AppImageLauncher (Automated Integration)
|
||||
|
||||
AppImageLauncher automatically integrates AppImages when you first run them.
|
||||
|
||||
### Install AppImageLauncher
|
||||
|
||||
**Ubuntu/Mint/Debian:**
|
||||
```bash
|
||||
# Download from GitHub
|
||||
cd ~/Downloads
|
||||
wget https://github.com/TheAssassin/AppImageLauncher/releases/download/v2.2.0/appimagelauncher_2.2.0-travis995.0f91801.bionic_amd64.deb
|
||||
|
||||
# Install
|
||||
sudo apt install ./appimagelauncher_*.deb
|
||||
```
|
||||
|
||||
**Or build from source:**
|
||||
```bash
|
||||
sudo apt install cmake g++ libqt5core5a qtbase5-dev libcairo2-dev git
|
||||
git clone https://github.com/TheAssassin/AppImageLauncher.git
|
||||
cd AppImageLauncher
|
||||
mkdir build && cd build
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
### How AppImageLauncher Works
|
||||
|
||||
After installation:
|
||||
|
||||
1. **Double-click any AppImage** in file manager
|
||||
2. AppImageLauncher prompts: "Integrate and run" or "Run once"
|
||||
3. Choose **"Integrate and run"**
|
||||
4. AppImage is:
|
||||
- Moved to `~/Applications/`
|
||||
- Made executable
|
||||
- Desktop entry created automatically
|
||||
- Icon extracted and set up
|
||||
- Appears in application menu
|
||||
|
||||
**Benefits:**
|
||||
- Fully automated process
|
||||
- Consistent AppImage management
|
||||
- Update checking built-in
|
||||
- Easy removal through GUI
|
||||
|
||||
---
|
||||
|
||||
## 📝 Complete Desktop Entry Reference
|
||||
|
||||
### Minimal Desktop Entry
|
||||
```ini
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=MyApp
|
||||
Exec=/home/jl-kruger/Applications/myapp.AppImage
|
||||
```
|
||||
|
||||
### Full-Featured Desktop Entry
|
||||
```ini
|
||||
[Desktop Entry]
|
||||
# Required fields
|
||||
Type=Application
|
||||
Name=Application Name
|
||||
Exec=/home/jl-kruger/Applications/app-name.AppImage %u
|
||||
|
||||
# Recommended fields
|
||||
Comment=What this application does
|
||||
Icon=/home/jl-kruger/Applications/app-icon.png
|
||||
Terminal=false
|
||||
Categories=Utility;Development;
|
||||
|
||||
# Optional fields
|
||||
GenericName=Generic description
|
||||
Keywords=search;terms;keywords;
|
||||
StartupNotify=true
|
||||
StartupWMClass=app-window-class
|
||||
MimeType=text/plain;text/html;
|
||||
|
||||
# For terminal applications
|
||||
# Terminal=true
|
||||
|
||||
# Launch in specific directory
|
||||
# Path=/home/jl-kruger/workspace
|
||||
|
||||
# Multiple actions (right-click menu)
|
||||
Actions=NewWindow;SafeMode;
|
||||
|
||||
[Desktop Action NewWindow]
|
||||
Name=New Window
|
||||
Exec=/home/jl-kruger/Applications/app-name.AppImage --new-window
|
||||
|
||||
[Desktop Action SafeMode]
|
||||
Name=Safe Mode
|
||||
Exec=/home/jl-kruger/Applications/app-name.AppImage --safe-mode
|
||||
```
|
||||
|
||||
### Common Categories
|
||||
```
|
||||
# Desktop/GUI applications
|
||||
Utility - System utilities
|
||||
Development - IDEs, editors, dev tools
|
||||
Graphics - Image editors, viewers
|
||||
AudioVideo - Media players, editors
|
||||
Network - Browsers, chat, email
|
||||
Office - Word processors, spreadsheets
|
||||
Game - Games
|
||||
Education - Educational software
|
||||
Science - Scientific applications
|
||||
|
||||
# System/Tools
|
||||
System - System administration
|
||||
Settings - Configuration tools
|
||||
FileManager - File managers
|
||||
TerminalEmulator - Terminal applications
|
||||
|
||||
# Multiple categories (semicolon separated)
|
||||
Categories=Development;TextEditor;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Updating AppImages
|
||||
|
||||
AppImages don't auto-update. You need to manually update them.
|
||||
|
||||
### Manual Update Process
|
||||
|
||||
```bash
|
||||
# 1. Download new version
|
||||
cd ~/Downloads
|
||||
wget https://example.com/app-name-new-version.AppImage
|
||||
|
||||
# 2. Backup old version (optional)
|
||||
mv ~/Applications/app-name.AppImage ~/Applications/app-name.AppImage.old
|
||||
|
||||
# 3. Install new version
|
||||
mv ~/Downloads/app-name-new-version.AppImage ~/Applications/app-name.AppImage
|
||||
chmod +x ~/Applications/app-name.AppImage
|
||||
|
||||
# 4. Test new version
|
||||
~/Applications/app-name.AppImage
|
||||
|
||||
# 5. Remove old version once confirmed working
|
||||
rm ~/Applications/app-name.AppImage.old
|
||||
```
|
||||
|
||||
**Note:** Desktop entry continues to work since the filename stays the same.
|
||||
|
||||
### Update Checking Tools
|
||||
|
||||
**AppImageUpdate:**
|
||||
```bash
|
||||
# Download AppImageUpdate
|
||||
wget https://github.com/AppImage/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage
|
||||
chmod +x AppImageUpdate-x86_64.AppImage
|
||||
|
||||
# Update an AppImage
|
||||
./AppImageUpdate-x86_64.AppImage ~/Applications/app-name.AppImage
|
||||
```
|
||||
|
||||
**AppImageLauncher** (if installed):
|
||||
- Right-click AppImage in file manager
|
||||
- Select "Update"
|
||||
- Automatic update if available
|
||||
|
||||
---
|
||||
|
||||
## 🗑️ Removing AppImages
|
||||
|
||||
### Complete Removal
|
||||
|
||||
```bash
|
||||
# 1. Remove the AppImage file
|
||||
rm ~/Applications/app-name.AppImage
|
||||
|
||||
# 2. Remove desktop entry
|
||||
rm ~/.local/share/applications/app-name.desktop
|
||||
|
||||
# 3. Update desktop database
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
|
||||
# 4. Remove icon (if extracted separately)
|
||||
rm ~/Applications/app-name-icon.png
|
||||
|
||||
# 5. Remove app config/cache (varies by app)
|
||||
rm -rf ~/.config/app-name
|
||||
rm -rf ~/.local/share/app-name
|
||||
rm -rf ~/.cache/app-name
|
||||
```
|
||||
|
||||
**That's it!** No leftover system files, dependencies, or registry entries.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Troubleshooting
|
||||
|
||||
### Issue: "Permission denied" when running AppImage
|
||||
|
||||
```bash
|
||||
# Make executable
|
||||
chmod +x app-name.AppImage
|
||||
|
||||
# If still fails, check if file is corrupted
|
||||
file app-name.AppImage
|
||||
# Should say: "ELF 64-bit LSB executable"
|
||||
```
|
||||
|
||||
### Issue: FUSE errors - "AppImages require FUSE to run"
|
||||
|
||||
```bash
|
||||
# Install FUSE
|
||||
sudo apt install fuse libfuse2
|
||||
|
||||
# Enable user namespaces
|
||||
sudo sysctl -w kernel.unprivileged_userns_clone=1
|
||||
echo "kernel.unprivileged_userns_clone=1" | sudo tee -a /etc/sysctl.conf
|
||||
|
||||
# Or extract and run without FUSE
|
||||
./app-name.AppImage --appimage-extract
|
||||
./squashfs-root/AppRun
|
||||
```
|
||||
|
||||
### Issue: AppImage won't run - missing libraries
|
||||
|
||||
```bash
|
||||
# Check what's missing
|
||||
./app-name.AppImage
|
||||
# Error messages will show missing libraries
|
||||
|
||||
# Install common dependencies
|
||||
sudo apt install libfuse2 libgl1 libxcb1
|
||||
|
||||
# Check required libraries
|
||||
ldd app-name.AppImage
|
||||
```
|
||||
|
||||
### Issue: Desktop entry not appearing in menu
|
||||
|
||||
```bash
|
||||
# Validate desktop entry
|
||||
desktop-file-validate ~/.local/share/applications/app-name.desktop
|
||||
|
||||
# Update database
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
|
||||
# Restart desktop environment
|
||||
xfce4-panel -r
|
||||
|
||||
# Or logout/login
|
||||
```
|
||||
|
||||
### Issue: Icon not showing
|
||||
|
||||
```bash
|
||||
# Use absolute path for icon
|
||||
Icon=/home/jl-kruger/Applications/app-icon.png
|
||||
|
||||
# Not relative path
|
||||
# Icon=~/Applications/app-icon.png ❌
|
||||
|
||||
# Verify icon exists
|
||||
ls -lh /home/jl-kruger/Applications/app-icon.png
|
||||
```
|
||||
|
||||
### Issue: AppImage is slow to start
|
||||
|
||||
```bash
|
||||
# Some AppImages extract on each run
|
||||
# Solution: Extract once and run from extracted location
|
||||
|
||||
./app-name.AppImage --appimage-extract
|
||||
chmod +x squashfs-root/AppRun
|
||||
|
||||
# Update desktop entry to point to AppRun
|
||||
Exec=/home/jl-kruger/Applications/squashfs-root/AppRun
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 AppImage vs Other Formats
|
||||
|
||||
| Feature | AppImage | Flatpak | Snap | Native (.deb) |
|
||||
|---------|----------|---------|------|---------------|
|
||||
| **No root needed** | ✅ | ❌ | ❌ | ❌ |
|
||||
| **Single file** | ✅ | ❌ | ❌ | ❌ |
|
||||
| **System integration** | Manual | Automatic | Automatic | Automatic |
|
||||
| **Auto-updates** | ❌ | ✅ | ✅ | ✅ |
|
||||
| **Sandboxing** | ❌ | ✅ | ✅ | ❌ |
|
||||
| **Disk space** | Efficient | High | High | Efficient |
|
||||
| **Startup speed** | Fast | Slow | Slow | Fast |
|
||||
| **Portability** | ✅ | ❌ | ❌ | ❌ |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Best Practices
|
||||
|
||||
### Directory Structure
|
||||
|
||||
```
|
||||
~/Applications/
|
||||
├── logseq.AppImage
|
||||
├── logseq-icon.png
|
||||
├── obsidian.AppImage
|
||||
├── obsidian-icon.png
|
||||
├── postman.AppImage
|
||||
└── postman-icon.png
|
||||
|
||||
~/.local/share/applications/
|
||||
├── logseq.desktop
|
||||
├── obsidian.desktop
|
||||
└── postman.desktop
|
||||
```
|
||||
|
||||
### Naming Convention
|
||||
|
||||
Use consistent, lowercase names with hyphens:
|
||||
```bash
|
||||
# Good
|
||||
app-name.AppImage
|
||||
app-name-icon.png
|
||||
app-name.desktop
|
||||
|
||||
# Avoid
|
||||
AppName.AppImage
|
||||
app_name.AppImage
|
||||
ApplicationName.AppImage
|
||||
```
|
||||
|
||||
### Version Management
|
||||
|
||||
Include version in backup:
|
||||
```bash
|
||||
# Before updating
|
||||
mv ~/Applications/app-name.AppImage ~/Applications/app-name-v1.2.3.AppImage
|
||||
|
||||
# Install new version
|
||||
mv ~/Downloads/app-name-v1.3.0.AppImage ~/Applications/app-name.AppImage
|
||||
```
|
||||
|
||||
### Documentation
|
||||
|
||||
Keep notes on installed AppImages:
|
||||
```bash
|
||||
# Create manifest
|
||||
nano ~/Applications/README.md
|
||||
```
|
||||
|
||||
```markdown
|
||||
# Installed AppImages
|
||||
|
||||
## Logseq v0.10.9
|
||||
- Source: https://github.com/logseq/logseq/releases
|
||||
- Installed: 2025-10-24
|
||||
- Purpose: Knowledge management
|
||||
|
||||
## Obsidian v1.5.3
|
||||
- Source: https://obsidian.md/
|
||||
- Installed: 2025-10-20
|
||||
- Purpose: Note-taking
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Finding AppImages
|
||||
|
||||
### Official Sources
|
||||
|
||||
1. **Project's GitHub Releases Page**
|
||||
- Most reliable source
|
||||
- Example: `https://github.com/username/project/releases`
|
||||
|
||||
2. **Official Website**
|
||||
- Often has download page with AppImage option
|
||||
- Look for "Download for Linux"
|
||||
|
||||
3. **AppImageHub** (archived)
|
||||
- Historical catalog: https://www.appimagehub.com/
|
||||
|
||||
### Safety Check
|
||||
|
||||
```bash
|
||||
# Verify checksum (if provided)
|
||||
sha256sum app-name.AppImage
|
||||
# Compare with official checksum
|
||||
|
||||
# Check file type
|
||||
file app-name.AppImage
|
||||
# Should be: ELF 64-bit LSB executable
|
||||
|
||||
# Scan with system tools
|
||||
clamscan app-name.AppImage
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📚 Quick Reference Commands
|
||||
|
||||
```bash
|
||||
# Make executable
|
||||
chmod +x app-name.AppImage
|
||||
|
||||
# Run AppImage
|
||||
./app-name.AppImage
|
||||
|
||||
# Extract contents
|
||||
./app-name.AppImage --appimage-extract
|
||||
|
||||
# Help (some AppImages)
|
||||
./app-name.AppImage --appimage-help
|
||||
|
||||
# Get AppImage info
|
||||
./app-name.AppImage --appimage-version
|
||||
|
||||
# Create desktop entry
|
||||
nano ~/.local/share/applications/app-name.desktop
|
||||
|
||||
# Update desktop database
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
|
||||
# Validate desktop entry
|
||||
desktop-file-validate ~/.local/share/applications/app-name.desktop
|
||||
|
||||
# Test launch from desktop entry
|
||||
gtk-launch app-name
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 Real-World Example: Installing Logseq
|
||||
|
||||
**Complete walkthrough from download to desktop integration:**
|
||||
|
||||
```bash
|
||||
# 1. Download
|
||||
cd ~/Downloads
|
||||
wget https://github.com/logseq/logseq/releases/download/0.10.9/Logseq-linux-x64-0.10.9.AppImage
|
||||
|
||||
# 2. Create applications directory
|
||||
mkdir -p ~/Applications
|
||||
|
||||
# 3. Move and rename
|
||||
mv Logseq-linux-x64-0.10.9.AppImage ~/Applications/logseq.AppImage
|
||||
|
||||
# 4. Make executable
|
||||
chmod +x ~/Applications/logseq.AppImage
|
||||
|
||||
# 5. Extract icon
|
||||
cd ~/Applications
|
||||
./logseq.AppImage --appimage-extract
|
||||
cp squashfs-root/logseq.png ~/Applications/logseq-icon.png
|
||||
rm -rf squashfs-root
|
||||
|
||||
# 6. Create desktop entry
|
||||
cat > ~/.local/share/applications/logseq.desktop << 'EOF'
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Logseq
|
||||
Comment=A privacy-first, open-source knowledge base
|
||||
Icon=/home/jl-kruger/Applications/logseq-icon.png
|
||||
Exec=/home/jl-kruger/Applications/logseq.AppImage
|
||||
Terminal=false
|
||||
Categories=Office;Utility;
|
||||
StartupNotify=true
|
||||
EOF
|
||||
|
||||
# 7. Make desktop entry executable
|
||||
chmod +x ~/.local/share/applications/logseq.desktop
|
||||
|
||||
# 8. Update desktop database
|
||||
update-desktop-database ~/.local/share/applications/
|
||||
|
||||
# 9. Launch!
|
||||
gtk-launch logseq
|
||||
# Or find "Logseq" in application menu
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📖 Additional Resources
|
||||
|
||||
- **AppImage Documentation:** https://docs.appimage.org/
|
||||
- **Desktop Entry Specification:** https://specifications.freedesktop.org/desktop-entry-spec/
|
||||
- **Icon Theme Specification:** https://specifications.freedesktop.org/icon-theme-spec/
|
||||
- **AppImageLauncher:** https://github.com/TheAssassin/AppImageLauncher
|
||||
|
||||
---
|
||||
|
||||
**Last Updated:** October 2025 | Linux Mint 22.2 Xfce
|
||||
Reference in New Issue
Block a user