| 1 | #!/bin/bash
|
| 2 | set -euo pipefail
|
| 3 |
|
| 4 | # Check the TARBALL has been downloaded.
|
| 5 |
|
| 6 | TARBALL="zen.linux-x86_64.tar.xz"
|
| 7 |
|
| 8 | if [ ! -e "${TARBALL}" ]; then
|
| 9 | echo "error: $0: Did not find the required tarball."
|
| 10 | echo
|
| 11 | echo "Please get the offical tarball '${TARBALL}' from"
|
| 12 | echo
|
| 13 | echo " https://github.com/zen-browser/desktop/releases"
|
| 14 | echo
|
| 15 | exit 1
|
| 16 | fi
|
| 17 |
|
| 18 |
|
| 19 | # === CONFIG ===
|
| 20 | PACKAGE_NAME="zen-browser"
|
| 21 | VERSION=$(tar -xJf ${TARBALL} --to-stdout zen/application.ini | grep '^Version=' | cut -d'=' -f2)
|
| 22 | ARCH="amd64"
|
| 23 | BUILD_DIR="${PACKAGE_NAME}_${VERSION}"
|
| 24 | INSTALL_DIR="$BUILD_DIR/opt/zen"
|
| 25 | BIN_DIR="$BUILD_DIR/usr/local/bin"
|
| 26 | DESKTOP_DIR="$BUILD_DIR/usr/local/share/applications"
|
| 27 | ICON_BASE="$BUILD_DIR/usr/share/icons/hicolor"
|
| 28 |
|
| 29 | # === CLEAN UP OLD BUILDS ===
|
| 30 | rm -rf "$BUILD_DIR"
|
| 31 | mkdir -p "$INSTALL_DIR" "$BIN_DIR" "$DESKTOP_DIR"
|
| 32 |
|
| 33 | # === EXTRACT THE TARBALL ===
|
| 34 | echo "Extracting tarball..."
|
| 35 | tar -xf "$TARBALL"
|
| 36 | mv zen/* "$INSTALL_DIR"
|
| 37 |
|
| 38 | # === CREATE EXECUTABLE WRAPPER ===
|
| 39 | echo "Creating wrapper script..."
|
| 40 | cat <<EOF > "$BIN_DIR/zen"
|
| 41 | #!/bin/bash
|
| 42 | /opt/zen/zen "\$@"
|
| 43 | EOF
|
| 44 | chmod +x "$BIN_DIR/zen"
|
| 45 |
|
| 46 | # === INSTALL ICONS ===
|
| 47 | echo "Copying icons..."
|
| 48 | for size in 16 32 48 64 128; do
|
| 49 | mkdir -p "$ICON_BASE/${size}x${size}/apps"
|
| 50 | cp "$INSTALL_DIR/browser/chrome/icons/default/default${size}.png" \
|
| 51 | "$ICON_BASE/${size}x${size}/apps/zen.png"
|
| 52 | done
|
| 53 |
|
| 54 | # === CREATE .desktop FILE ===
|
| 55 | echo "Creating .desktop file..."
|
| 56 | cat <<EOF > "$DESKTOP_DIR/zen.desktop"
|
| 57 | [Desktop Entry]
|
| 58 | Name=Zen Browser
|
| 59 | Comment=Experience tranquillity while browsing the web without people tracking you!
|
| 60 | Keywords=web;browser;internet
|
| 61 | Exec=/opt/zen/zen %u
|
| 62 | Icon=zen
|
| 63 | Terminal=false
|
| 64 | StartupNotify=true
|
| 65 | StartupWMClass=zen
|
| 66 | NoDisplay=false
|
| 67 | Type=Application
|
| 68 | MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
|
| 69 | Categories=Network;WebBrowser;
|
| 70 | Actions=new-window;new-private-window;profile-manager-window;
|
| 71 |
|
| 72 | [Desktop Action new-window]
|
| 73 | Name=Open a New Window
|
| 74 | Exec=/opt/zen/zen --new-window %u
|
| 75 |
|
| 76 | [Desktop Action new-private-window]
|
| 77 | Name=Open a New Private Window
|
| 78 | Exec=/opt/zen/zen --private-window %u
|
| 79 |
|
| 80 | [Desktop Action profile-manager-window]
|
| 81 | Name=Open the Profile Manager
|
| 82 | Exec=/opt/zen/zen --ProfileManager
|
| 83 | EOF
|
| 84 |
|
| 85 | # === CREATE DEBIAN CONTROL FILE ===
|
| 86 | echo "Creating control file..."
|
| 87 | mkdir -p "$BUILD_DIR/DEBIAN"
|
| 88 | cat <<EOF > "$BUILD_DIR/DEBIAN/control"
|
| 89 | Package: $PACKAGE_NAME
|
| 90 | Version: $VERSION
|
| 91 | Section: web
|
| 92 | Priority: optional
|
| 93 | Architecture: $ARCH
|
| 94 | Maintainer: Shariq Shahbaz <iamsh4r10@gmail.com>
|
| 95 | Description: Zen Browser - A privacy-focused browser that helps you browse in peace.
|
| 96 | EOF
|
| 97 |
|
| 98 | # === POSTINST TO UPDATE ICON CACHE ===
|
| 99 | cat <<'EOF' > "$BUILD_DIR/DEBIAN/postinst"
|
| 100 | #!/bin/bash
|
| 101 | set -e
|
| 102 | if command -v gtk-update-icon-cache &>/dev/null; then
|
| 103 | gtk-update-icon-cache -f /usr/share/icons/hicolor
|
| 104 | fi
|
| 105 | EOF
|
| 106 | chmod +x "$BUILD_DIR/DEBIAN/postinst"
|
| 107 |
|
| 108 | # Avoid dpkg-build failing due to control directory not
|
| 109 | # having other rX permissions.
|
| 110 |
|
| 111 | chmod -R a+rX $BUILD_DIR
|
| 112 |
|
| 113 | # === BUILD THE DEB PACKAGE ===
|
| 114 | echo "Building .deb package..."
|
| 115 | dpkg-deb --build --root-owner-group "$BUILD_DIR"
|
| 116 |
|
| 117 | # === FINAL CLEANUP ===
|
| 118 | echo "Final cleanup..."
|
| 119 | rm -rf zen "$BUILD_DIR"
|
| 120 |
|
| 121 | echo "Done! Output: ${BUILD_DIR}.deb"
|
| 122 |
|