Files
homelab-configs/install-native-apps.sh
jgitta 7cb2ebed2d Sync workspace with Gitea: merge June/July session docs
- README + siklos-docker-services: add authentik/searxng/beszel rows, photos VM section,
  2026-06-24 cleanup notes, 2026-07-03 Portainer conversion note (jgpc naming preserved)
- Add: authentik setup docs, frigate docs/config, OCIS migration docs, AdventureLog bug
  report, install-native-apps.sh, workstation-disk-analysis.md
- Remove obsolete: cgitta-nextcloud-zip-analysis.md, kopia-restore-guide.md
- .gitignore: ocis-credentials.md (secrets stay local), *.bak
2026-07-08 14:12:05 -05:00

214 lines
7.6 KiB
Bash
Executable File

#!/bin/bash
# Replace Flatpak apps with native installs
# Migrates configs from Flatpak sandboxes to native locations
# Safe to re-run — won't overwrite existing native configs without prompting
set -e
BACKUP="$HOME/flatpak-config-backup"
TMPDIR="$HOME/Downloads/native-installs"
mkdir -p "$TMPDIR"
echo "============================================"
echo " Step 1: Install KeePassXC via apt"
echo "============================================"
sudo apt-get update -qq
sudo apt-get install -y keepassxc
echo "Done."
echo ""
echo "============================================"
echo " Step 1b: Install Telegram (official tarball)"
echo "============================================"
echo "Downloading Telegram..."
wget -q --show-progress -O "$TMPDIR/telegram.tar.xz" \
"https://telegram.org/dl/desktop/linux"
sudo mkdir -p /opt/telegram
sudo tar -xJf "$TMPDIR/telegram.tar.xz" -C /opt/telegram --strip-components=1
sudo ln -sf /opt/telegram/Telegram /usr/local/bin/telegram
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/telegram-desktop.desktop << EOF
[Desktop Entry]
Name=Telegram Desktop
Comment=Official Telegram messaging app
Exec=/opt/telegram/Telegram -- %u
Icon=/opt/telegram/telegram.png
Terminal=false
Type=Application
Categories=Chat;Network;InstantMessaging;
MimeType=x-scheme-handler/tg;
StartupNotify=true
StartupWMClass=TelegramDesktop
EOF
update-desktop-database ~/.local/share/applications 2>/dev/null || true
echo "Telegram installed to /opt/telegram"
echo ""
echo "============================================"
echo " Step 2: Download Obsidian .deb"
echo "============================================"
wget -q --show-progress -O "$TMPDIR/obsidian.deb" \
"https://github.com/obsidianmd/obsidian-releases/releases/download/v1.12.7/obsidian_1.12.7_amd64.deb"
echo "Obsidian downloaded."
echo ""
echo "============================================"
echo " Step 3: Download FreeTube .deb (latest)"
echo "============================================"
FREETUBE_URL=$(curl -s https://api.github.com/repos/FreeTubeApp/FreeTube/releases/latest \
| grep -o '"browser_download_url": "[^"]*amd64\.deb"' \
| head -1 | cut -d'"' -f4)
if [ -z "$FREETUBE_URL" ]; then
echo "WARNING: Could not auto-detect FreeTube version. Check https://github.com/FreeTubeApp/FreeTube/releases"
echo "Download the *_amd64.deb file manually and run: sudo dpkg -i ~/Downloads/freetube_*.deb"
else
wget -q --show-progress -O "$TMPDIR/freetube.deb" "$FREETUBE_URL"
echo "FreeTube downloaded."
fi
echo ""
echo "============================================"
echo " Step 4: Install .deb packages"
echo "============================================"
sudo dpkg -i "$TMPDIR/obsidian.deb" 2>/dev/null || true
[ -f "$TMPDIR/freetube.deb" ] && sudo dpkg -i "$TMPDIR/freetube.deb" 2>/dev/null || true
sudo apt-get install -f -y # fix any missing dependencies
echo "Done."
echo ""
echo "============================================"
echo " Step 5: Install Zen Browser (native tar.xz)"
echo "============================================"
echo "Downloading Zen (this may take a minute — ~90MB)..."
wget -q --show-progress -O "$TMPDIR/zen.tar.xz" \
"https://github.com/zen-browser/desktop/releases/latest/download/zen.linux-x86_64.tar.xz"
sudo mkdir -p /opt/zen
sudo tar -xJf "$TMPDIR/zen.tar.xz" -C /opt/zen --strip-components=1
sudo chmod +x /opt/zen/zen
# Symlink so you can type 'zen' in the terminal
sudo ln -sf /opt/zen/zen /usr/local/bin/zen
# Find the icon (location varies by version)
ZEN_ICON=$(find /opt/zen -name "default128.png" 2>/dev/null | head -1)
[ -z "$ZEN_ICON" ] && ZEN_ICON="/opt/zen/browser/chrome/icons/default/default128.png"
# Create application menu entry
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/zen-browser.desktop << EOF
[Desktop Entry]
Name=Zen Browser
Comment=Experience a calmer internet
Exec=/opt/zen/zen %u
Icon=$ZEN_ICON
Terminal=false
Type=Application
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
StartupWMClass=zen-alpha
EOF
update-desktop-database ~/.local/share/applications 2>/dev/null || true
echo "Zen installed to /opt/zen"
echo ""
echo "============================================"
echo " Step 6: Migrate configs from Flatpak backups"
echo "============================================"
# KeePassXC — settings (recent files, window layout, etc.)
if [ -d "$BACKUP/org.keepassxc.KeePassXC/config/keepassxc" ]; then
mkdir -p ~/.config/keepassxc
cp -rn "$BACKUP/org.keepassxc.KeePassXC/config/keepassxc/." ~/.config/keepassxc/
echo "KeePassXC: config migrated (database stays at ~/passwords/kpdb.kdbx)"
else
echo "KeePassXC: no config found in backup, skipping"
fi
# Telegram — tdata contains your login session (no need to re-scan QR code)
if [ -d "$BACKUP/org.telegram.desktop/data/TelegramDesktop" ]; then
mkdir -p ~/.local/share/TelegramDesktop
cp -rn "$BACKUP/org.telegram.desktop/data/TelegramDesktop/." ~/.local/share/TelegramDesktop/
echo "Telegram: session data migrated (you should stay logged in)"
else
echo "Telegram: no data found in backup, you'll need to log in again"
fi
# FreeTube — subscriptions, history, settings
if [ -d "$BACKUP/io.freetubeapp.FreeTube/config/FreeTube" ]; then
mkdir -p ~/.config/FreeTube
# Copy only the actual data files, skip caches
for item in "$BACKUP/io.freetubeapp.FreeTube/config/FreeTube/"*; do
name=$(basename "$item")
case "$name" in
Cache|"Code Cache"|GPUCache|DawnGraphiteCache|DawnWebGPUCache|Crashpad)
echo "FreeTube: skipping cache: $name"
;;
*)
cp -rn "$item" ~/.config/FreeTube/ 2>/dev/null || true
;;
esac
done
echo "FreeTube: config migrated (subscriptions + history preserved)"
else
echo "FreeTube: no config found in backup, skipping"
fi
# Obsidian — app-level config (vault list, theme, plugins list)
if [ -d "$BACKUP/md.obsidian.Obsidian/config/obsidian" ]; then
mkdir -p ~/.config/obsidian
for item in "$BACKUP/md.obsidian.Obsidian/config/obsidian/"*; do
name=$(basename "$item")
case "$name" in
Cache|"Code Cache"|GPUCache|DawnGraphiteCache|DawnWebGPUCache|Crashpad)
echo "Obsidian: skipping cache: $name"
;;
*)
cp -rn "$item" ~/.config/obsidian/ 2>/dev/null || true
;;
esac
done
echo "Obsidian: config migrated (vaults are wherever you stored them, unchanged)"
else
echo "Obsidian: no config found in backup, skipping"
fi
# Zen — full browser profile (bookmarks, extensions, history, passwords, settings)
if [ -d "$BACKUP/app.zen_browser.zen/.zen" ]; then
echo "Zen: migrating browser profile (bookmarks, extensions, history)..."
mkdir -p ~/.zen
cp -rn "$BACKUP/app.zen_browser.zen/.zen/." ~/.zen/
echo "Zen: profile migrated"
else
echo "Zen: no profile found in backup, starting fresh"
fi
echo ""
echo "============================================"
echo " Step 7: Remove Flatpak versions"
echo "============================================"
flatpak remove -y \
app.zen_browser.zen \
org.keepassxc.KeePassXC \
md.obsidian.Obsidian \
org.telegram.desktop \
io.freetubeapp.FreeTube
echo "Flatpaks removed."
echo ""
echo "============================================"
echo " All done!"
echo "============================================"
echo ""
echo "Summary:"
echo " KeePass database : ~/passwords/kpdb.kdbx (unchanged)"
echo " Config backup : ~/flatpak-config-backup/ (safe to delete later)"
echo " Downloaded debs : ~/Downloads/native-installs/ (safe to delete)"
echo " Zen installed to : /opt/zen"
echo ""
echo "Next: open Zen and re-run 'firefoxpwa profile patch' to fix PWAs"