#!/bin/bash # ═══════════════════════════════════════════════════════════════ # Alfred Linux v2.0-b2 — Alfred Browser Integration Hook # # Installs Alfred Browser, removes Firefox ESR, sets defaults. # BUILD: v2.0-b2 (Browser) # ═══════════════════════════════════════════════════════════════ set -e echo "[Alfred Linux v2.0-b2] Installing Alfred Browser..." # ── 1. Install Alfred Browser dependencies ── # The .deb depends on libwebkit2gtk-4.1-0, libgtk-3-0, libayatana-appindicator3-1 apt-get install -y libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 2>/dev/null || true # ── 2. Install Alfred Browser from packages.chroot ── # live-build should auto-install .debs from config/packages.chroot/ # But as a safety net, install manually if not already present if ! dpkg -l alfred-browser 2>/dev/null | grep -q '^ii'; then BROWSER_DEB=$(find / -name "alfred-browser*.deb" -type f 2>/dev/null | head -1) if [[ -n "$BROWSER_DEB" ]]; then dpkg -i "$BROWSER_DEB" || apt-get -f install -y else echo "[WARN] Alfred Browser .deb not found in ISO — skipping" fi fi # ── 3. Remove Firefox ESR ── echo "[Alfred Linux v2.0-b2] Removing Firefox ESR..." apt-get purge -y firefox-esr 2>/dev/null || true apt-get autoremove -y 2>/dev/null || true # ── 4. Set Alfred Browser as default ── if [[ -f /usr/bin/alfred-browser ]]; then # Register as x-www-browser alternative (priority 200 = higher than any default) update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/alfred-browser 200 2>/dev/null || true update-alternatives --set x-www-browser /usr/bin/alfred-browser 2>/dev/null || true # Set as default web browser via xdg # Need a proper .desktop file if [[ -f "/usr/share/applications/Alfred Browser.desktop" ]]; then # Fix desktop file name to be xdg-compliant (no spaces) cp "/usr/share/applications/Alfred Browser.desktop" /usr/share/applications/alfred-browser.desktop 2>/dev/null || true fi # Ensure desktop file has correct MimeType if [[ -f /usr/share/applications/alfred-browser.desktop ]]; then if ! grep -q "MimeType=" /usr/share/applications/alfred-browser.desktop; then echo "MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp" >> /usr/share/applications/alfred-browser.desktop fi # Set categories if missing if ! grep -q "Categories=" /usr/share/applications/alfred-browser.desktop; then echo "Categories=Network;WebBrowser;" >> /usr/share/applications/alfred-browser.desktop fi fi # Set via xdg-settings (for the skel user profile) mkdir -p /etc/skel/.config echo "text/html=alfred-browser.desktop" > /etc/skel/.config/mimeapps.list echo "x-scheme-handler/http=alfred-browser.desktop" >> /etc/skel/.config/mimeapps.list echo "x-scheme-handler/https=alfred-browser.desktop" >> /etc/skel/.config/mimeapps.list echo "x-scheme-handler/ftp=alfred-browser.desktop" >> /etc/skel/.config/mimeapps.list echo "application/xhtml+xml=alfred-browser.desktop" >> /etc/skel/.config/mimeapps.list # Also set system-wide mkdir -p /usr/share/applications cat > /usr/share/applications/defaults.list << 'DEFAULTS' [Default Applications] text/html=alfred-browser.desktop x-scheme-handler/http=alfred-browser.desktop x-scheme-handler/https=alfred-browser.desktop x-scheme-handler/ftp=alfred-browser.desktop application/xhtml+xml=alfred-browser.desktop DEFAULTS echo "[Alfred Linux v2.0-b2] Alfred Browser set as default browser" else echo "[WARN] /usr/bin/alfred-browser not found after install" fi # ── 5. XFCE panel web browser launcher ── # Update XFCE's preferred browser mkdir -p /etc/skel/.config/xfce4 if [[ -f /etc/skel/.config/xfce4/helpers.rc ]]; then sed -i 's/WebBrowser=.*/WebBrowser=alfred-browser/' /etc/skel/.config/xfce4/helpers.rc else echo "WebBrowser=alfred-browser" > /etc/skel/.config/xfce4/helpers.rc fi echo "[Alfred Linux v2.0-b2] Alfred Browser integration complete."