Initial commit: snap using zen-bin
This commit is contained in:
		
							
								
								
									
										13
									
								
								snap/hooks/disconnect-plug-host-hunspell
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								snap/hooks/disconnect-plug-host-hunspell
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Clean up old Firefox snap mount for host hunspell; we now use
 | 
			
		||||
# the system-files interface for host hunspell dictionaries.
 | 
			
		||||
 | 
			
		||||
# TODO: Drop this (along with the host-hunspell mount-control
 | 
			
		||||
# declaration in snapcraft.yaml) later in the future once a
 | 
			
		||||
# reasonable amount of time has passed and nearly all users
 | 
			
		||||
# have an updated version and were migrated to use system-files,
 | 
			
		||||
# and just about no new Ubuntu installations start with a
 | 
			
		||||
# Firefox snap that has the older mount-control interface.
 | 
			
		||||
snapctl umount $SNAP_COMMON/host-hunspell || true
 | 
			
		||||
rm -r $SNAP_COMMON/host-hunspell || true
 | 
			
		||||
							
								
								
									
										1
									
								
								snap/hooks/install
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								snap/hooks/install
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
post-refresh
 | 
			
		||||
							
								
								
									
										64
									
								
								snap/hooks/post-refresh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								snap/hooks/post-refresh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
# Copyright (C) 2022 Canonical Ltd.
 | 
			
		||||
#
 | 
			
		||||
# This program is free software: you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU General Public License version 3, as
 | 
			
		||||
# published by the Free Software Foundation.
 | 
			
		||||
#
 | 
			
		||||
# This program is distributed in the hope that it will be useful,
 | 
			
		||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
# GNU General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU General Public License
 | 
			
		||||
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
host_hunspell=/var/lib/snapd/hostfs/usr/share/hunspell
 | 
			
		||||
 | 
			
		||||
if [ ! -d  $host_hunspell ]; then
 | 
			
		||||
    echo "No host hunspell, skipping"
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
DICPATH=$SNAP_COMMON/snap-hunspell
 | 
			
		||||
 | 
			
		||||
if [ -d $DICPATH ]; then
 | 
			
		||||
    # Clean up on each refresh to ensure we have an up-to-date list
 | 
			
		||||
    # of host dictionaries.
 | 
			
		||||
    find $DICPATH -type l -name "*.dic" -or -name "*.aff" | xargs rm
 | 
			
		||||
else
 | 
			
		||||
    mkdir -p $DICPATH
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# We deliberately don't directly use the host dictionary files.
 | 
			
		||||
# Instead, we use their names to know which ones the user has
 | 
			
		||||
# installed on their system, and we use the corresponding ones
 | 
			
		||||
# we primed in '$SNAP/usr/share/hunspell' in our 'hunspell' part.
 | 
			
		||||
#
 | 
			
		||||
# - We don't set DICPATH=/var/lib/snapd/hostfs/usr/share/hunspell
 | 
			
		||||
#   to avoid potential incompatibility due to different hunspell
 | 
			
		||||
#   versions inside the snap and outside on the host.  See:
 | 
			
		||||
#   https://github.com/snapcore/snapd/pull/11025
 | 
			
		||||
#
 | 
			
		||||
# - We don't set DICPATH="$SNAP/usr/share/hunspell" because that
 | 
			
		||||
#   would result in all available dictionaries we primed in our
 | 
			
		||||
#   'hunspell' part being displayed in Firefox's interface,
 | 
			
		||||
#   presenting an overwhelming number of options to the user.
 | 
			
		||||
#   So instead we only use those that were installed on the host.
 | 
			
		||||
#   This way, the user could affect the dictionaries available to
 | 
			
		||||
#   Firefox snap similarly to how they could for non-snap Firefox.
 | 
			
		||||
for dic in $(find $host_hunspell/ -name "*.dic"); do
 | 
			
		||||
    dic_file=$(basename $dic)
 | 
			
		||||
    aff_file="${dic_file%%.dic}.aff"
 | 
			
		||||
    # Some dic,aff files in hunspell are themselves symlinks to other files,
 | 
			
		||||
    # e.g. /usr/share/hunspell/fr_CH.dic -> fr.dic.
 | 
			
		||||
    # That extra level of indirection somehow breaks spell checking.
 | 
			
		||||
    # We therefore use readlink to link to the "real" file, not to a symlink.
 | 
			
		||||
    if [ -e "$SNAP/usr/share/hunspell/${dic_file}" ]; then
 | 
			
		||||
        ln -s "$(readlink -e $SNAP/usr/share/hunspell/${dic_file})" $DICPATH/${dic_file}
 | 
			
		||||
    fi
 | 
			
		||||
    if [ -e "$SNAP/usr/share/hunspell/${aff_file}" ]; then
 | 
			
		||||
        ln -s "$(readlink -e $SNAP/usr/share/hunspell/${aff_file})" $DICPATH/${aff_file}
 | 
			
		||||
    fi
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										221
									
								
								snapcraft.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										221
									
								
								snapcraft.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,221 @@
 | 
			
		||||
# zen-browser snap, (c) Valentin HAUDIQUET
 | 
			
		||||
# inspired from https://github.com/canonical/firefox-snap
 | 
			
		||||
# GNU General Public License version 3
 | 
			
		||||
 | 
			
		||||
name: zen-browser
 | 
			
		||||
version: 1.14.11b
 | 
			
		||||
license: MPL-2.0
 | 
			
		||||
summary: Zen Browser - Welcome to a calmer internet
 | 
			
		||||
description: |
 | 
			
		||||
  Zen is a firefox-based browser with the aim of pushing your productivity to a new level!
 | 
			
		||||
confinement: strict
 | 
			
		||||
grade: stable
 | 
			
		||||
base: core24
 | 
			
		||||
source-code: https://github.com/zen-browser/desktop
 | 
			
		||||
compression: lzo
 | 
			
		||||
 | 
			
		||||
apps:
 | 
			
		||||
  zen-browser:
 | 
			
		||||
    command: zen-browser.launcher
 | 
			
		||||
    desktop: usr/share/applications/zen-browser.desktop
 | 
			
		||||
    extensions: [gnome]
 | 
			
		||||
    environment:
 | 
			
		||||
      DICPATH: "$SNAP_COMMON/snap-hunspell"
 | 
			
		||||
      GTK_USE_PORTAL: 1
 | 
			
		||||
      HOME: "$SNAP_USER_COMMON"
 | 
			
		||||
      PIPEWIRE_CONFIG_NAME: "$SNAP/usr/share/pipewire/pipewire.conf"
 | 
			
		||||
      PIPEWIRE_MODULE_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/pipewire-0.3"
 | 
			
		||||
      SPA_PLUGIN_DIR: "$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/spa-0.2"
 | 
			
		||||
      SPEECHD_ADDRESS: "unix_socket:/run/user/$SNAP_UID/speech-dispatcher/speechd.sock"
 | 
			
		||||
      LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:$SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/libproxy
 | 
			
		||||
    slots:
 | 
			
		||||
      - mpris
 | 
			
		||||
      - dbus-daemon
 | 
			
		||||
    plugs:
 | 
			
		||||
      - alsa
 | 
			
		||||
      - audio-playback
 | 
			
		||||
      - audio-record
 | 
			
		||||
      - avahi-observe
 | 
			
		||||
      - browser-sandbox
 | 
			
		||||
      - camera
 | 
			
		||||
      - cups-control
 | 
			
		||||
      - gsettings
 | 
			
		||||
      - hardware-observe
 | 
			
		||||
      - home
 | 
			
		||||
      - host-hunspell
 | 
			
		||||
      - host-usr-share-hunspell
 | 
			
		||||
      - joystick
 | 
			
		||||
      - login-session-observe
 | 
			
		||||
      - mount-observe
 | 
			
		||||
      - network
 | 
			
		||||
      - network-observe
 | 
			
		||||
      - opengl
 | 
			
		||||
      - pcscd
 | 
			
		||||
      - removable-media
 | 
			
		||||
      - screen-inhibits-control
 | 
			
		||||
      - system-packages-doc
 | 
			
		||||
      - u2f-devices
 | 
			
		||||
      - unity7
 | 
			
		||||
      - upower-observe
 | 
			
		||||
 | 
			
		||||
platforms:
 | 
			
		||||
  amd64:
 | 
			
		||||
 | 
			
		||||
plugs:
 | 
			
		||||
  browser-sandbox:
 | 
			
		||||
    interface: browser-support
 | 
			
		||||
    allow-sandbox: true
 | 
			
		||||
  dot-zen:
 | 
			
		||||
    interface: personal-files
 | 
			
		||||
    read: [$HOME/.zen]
 | 
			
		||||
  etc-zen:
 | 
			
		||||
    interface: system-files
 | 
			
		||||
    read: [/etc/zen]
 | 
			
		||||
  host-hunspell:
 | 
			
		||||
    interface: mount-control
 | 
			
		||||
    mount:
 | 
			
		||||
    - what: /usr/share/hunspell
 | 
			
		||||
      where: $SNAP_COMMON/host-hunspell
 | 
			
		||||
      persistent: true
 | 
			
		||||
      options: [ro, bind, noatime, noexec]
 | 
			
		||||
  host-usr-share-hunspell:
 | 
			
		||||
    interface: system-files
 | 
			
		||||
    read:
 | 
			
		||||
    - /var/lib/snapd/hostfs/usr/share/hunspell
 | 
			
		||||
 | 
			
		||||
layout:
 | 
			
		||||
  /usr/share/libdrm:
 | 
			
		||||
    bind: $SNAP/gnome-platform/usr/share/libdrm
 | 
			
		||||
  /usr/share/alsa:
 | 
			
		||||
    bind: $SNAP/usr/share/alsa
 | 
			
		||||
  /usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/opensc-pkcs11.so:
 | 
			
		||||
    bind-file: $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR/opensc-pkcs11.so
 | 
			
		||||
 | 
			
		||||
parts:
 | 
			
		||||
  # This is a temporary workaround to including the hunspell content
 | 
			
		||||
  # snap, which would cause breakage in the Ubuntu desktop image build
 | 
			
		||||
  # because of the Ubuntu policy.  See:
 | 
			
		||||
  # https://bugzilla.mozilla.org/show_bug.cgi?id=1792006
 | 
			
		||||
  #
 | 
			
		||||
  # The definition of this part is essentially a copy of the
 | 
			
		||||
  # corresponding part in hunspell-dictionaries-1-7-2004 by
 | 
			
		||||
  # Buo-ren, Lin.
 | 
			
		||||
  hunspell:
 | 
			
		||||
    plugin: nil
 | 
			
		||||
    override-build: |
 | 
			
		||||
      craftctl default
 | 
			
		||||
      set -eu
 | 
			
		||||
      apt download $(apt-cache search '^hunspell-.*$' |
 | 
			
		||||
        awk '!/myspell|dbgsym|tools|transitional|dependency/{printf "%s ", $1}')
 | 
			
		||||
      find . -name "*.deb" -exec dpkg-deb -x {} "$CRAFT_PART_INSTALL" \;
 | 
			
		||||
    prime:
 | 
			
		||||
      - usr/share/hunspell
 | 
			
		||||
 | 
			
		||||
  zen-browser:
 | 
			
		||||
    plugin: nil
 | 
			
		||||
    after:
 | 
			
		||||
      - launcher
 | 
			
		||||
      - desktop
 | 
			
		||||
      - icons
 | 
			
		||||
    build-packages:
 | 
			
		||||
      - curl
 | 
			
		||||
      - tar
 | 
			
		||||
    override-build: |
 | 
			
		||||
      mkdir -p "$CRAFT_PART_INSTALL/usr/lib"
 | 
			
		||||
      curl -L -O https://github.com/zen-browser/desktop/releases/download/$SNAPCRAFT_PROJECT_VERSION/zen.linux-x86_64.tar.xz
 | 
			
		||||
      tar xf zen.linux-x86_64.tar.xz -C "$CRAFT_PART_INSTALL/usr/lib"
 | 
			
		||||
    prime:
 | 
			
		||||
      - usr/lib/zen
 | 
			
		||||
      - usr/lib/*/libproxy
 | 
			
		||||
      - usr/lib/*/opensc-pkcs11.so
 | 
			
		||||
      - usr/lib/*/pkcs11/opensc-pkcs11.so
 | 
			
		||||
      - usr/lib/*/libasn1.so.*
 | 
			
		||||
      - usr/lib/*/libcurl.so.*
 | 
			
		||||
      - usr/lib/*/libgssapi.so.*
 | 
			
		||||
      - usr/lib/*/libhcrypto.so.*
 | 
			
		||||
      - usr/lib/*/libheimbase.so.*
 | 
			
		||||
      - usr/lib/*/libheimntlm.so.*
 | 
			
		||||
      - usr/lib/*/libhogweed.so.*
 | 
			
		||||
      - usr/lib/*/libhx509.so.*
 | 
			
		||||
      - usr/lib/*/libkrb5.so.*
 | 
			
		||||
      - usr/lib/*/liblber-2.4.so.*
 | 
			
		||||
      - usr/lib/*/libldap_r-2.4.so.*
 | 
			
		||||
      - usr/lib/*/libnettle.so.*
 | 
			
		||||
      - usr/lib/*/libnghttp2.so.*
 | 
			
		||||
      - usr/lib/*/libpci.so.*
 | 
			
		||||
      - usr/lib/*/libpipewire*.so*
 | 
			
		||||
      - usr/lib/*/libroken.so.*
 | 
			
		||||
      - usr/lib/*/librtmp.so.*
 | 
			
		||||
      - usr/lib/*/libsasl2.so.*
 | 
			
		||||
      - usr/lib/*/libspeechd.so.*
 | 
			
		||||
      - usr/lib/*/libssh.so.*
 | 
			
		||||
      - usr/lib/*/libssl.so.*
 | 
			
		||||
      - usr/lib/*/libvulkan*
 | 
			
		||||
      - usr/lib/*/libVkLayer*
 | 
			
		||||
      - usr/lib/*/libwind.so.*
 | 
			
		||||
      - usr/lib/*/libXt.so.*
 | 
			
		||||
      - usr/lib/*/pipewire-*
 | 
			
		||||
      - usr/lib/*/spa-*
 | 
			
		||||
      # alsa does not seem to be found
 | 
			
		||||
      # - usr/share/alsa
 | 
			
		||||
      - usr/share/pipewire
 | 
			
		||||
      - usr/share/vulkan
 | 
			
		||||
    stage-packages:
 | 
			
		||||
      - libproxy1v5
 | 
			
		||||
      - glib-networking
 | 
			
		||||
      - libasound2
 | 
			
		||||
      - libcurl4
 | 
			
		||||
      - libpci3
 | 
			
		||||
      - libpipewire-0.3-0
 | 
			
		||||
      - libpipewire-0.3-modules
 | 
			
		||||
      - libspa-0.2-modules
 | 
			
		||||
      - libspeechd2
 | 
			
		||||
      - libvulkan1
 | 
			
		||||
      - libxt6
 | 
			
		||||
      - mesa-vulkan-drivers
 | 
			
		||||
      - pipewire-bin
 | 
			
		||||
      - pipewire-pulse
 | 
			
		||||
      - opensc-pkcs11
 | 
			
		||||
 | 
			
		||||
  desktop:
 | 
			
		||||
    plugin: dump
 | 
			
		||||
    source: .
 | 
			
		||||
    organize:
 | 
			
		||||
      zen-browser.desktop: usr/share/applications/zen-browser.desktop
 | 
			
		||||
  
 | 
			
		||||
  launcher:
 | 
			
		||||
    plugin: nil
 | 
			
		||||
    override-prime: |
 | 
			
		||||
      cp "$CRAFT_PROJECT_DIR/zen-browser.launcher" "$CRAFT_PRIME/"
 | 
			
		||||
      chmod a+rwx "$CRAFT_PRIME/zen-browser.launcher"
 | 
			
		||||
 | 
			
		||||
  icons:
 | 
			
		||||
    plugin: nil
 | 
			
		||||
    build-packages:
 | 
			
		||||
      - inkscape
 | 
			
		||||
      - curl
 | 
			
		||||
    override-build: |
 | 
			
		||||
      curl -L -O https://raw.githubusercontent.com/zen-browser/desktop/refs/heads/dev/docs/assets/zen-dark.svg
 | 
			
		||||
      inkscape -w 16 -h 16 "$SNAPCRAFT_PART_BUILD/zen-dark.svg" -o "$CRAFT_PART_INSTALL/16.png"
 | 
			
		||||
      inkscape -w 32 -h 32 "$SNAPCRAFT_PART_BUILD/zen-dark.svg" -o "$CRAFT_PART_INSTALL/32.png"
 | 
			
		||||
      inkscape -w 48 -h 48 "$SNAPCRAFT_PART_BUILD/zen-dark.svg" -o "$CRAFT_PART_INSTALL/48.png"
 | 
			
		||||
      inkscape -w 64 -h 64 "$SNAPCRAFT_PART_BUILD/zen-dark.svg" -o "$CRAFT_PART_INSTALL/64.png"
 | 
			
		||||
      inkscape -w 128 -h 128 "$SNAPCRAFT_PART_BUILD/zen-dark.svg" -o "$CRAFT_PART_INSTALL/128.png"
 | 
			
		||||
    organize: 
 | 
			
		||||
      16.png: usr/share/icons/hicolor/16x16/apps/zen-browser.png
 | 
			
		||||
      32.png: usr/share/icons/hicolor/32x32/apps/zen-browser.png
 | 
			
		||||
      48.png: usr/share/icons/hicolor/48x48/apps/zen-browser.png
 | 
			
		||||
      64.png: usr/share/icons/hicolor/64x64/apps/zen-browser.png
 | 
			
		||||
      128.png: usr/share/icons/hicolor/128x128/apps/zen-browser.png
 | 
			
		||||
    prime:
 | 
			
		||||
      - usr/share/icons/*
 | 
			
		||||
  
 | 
			
		||||
slots:
 | 
			
		||||
  dbus-daemon:
 | 
			
		||||
    interface: dbus
 | 
			
		||||
    bus: session
 | 
			
		||||
    name: zen.desktop
 | 
			
		||||
 | 
			
		||||
hooks:
 | 
			
		||||
  post-refresh:
 | 
			
		||||
    plugs: [host-usr-share-hunspell]
 | 
			
		||||
							
								
								
									
										26
									
								
								zen-browser.desktop
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								zen-browser.desktop
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
[Desktop Entry]
 | 
			
		||||
Version=1.14.11b
 | 
			
		||||
Name=Zen Browser
 | 
			
		||||
GenericName=Web Browser
 | 
			
		||||
Comment=Welcome to a calmer internet
 | 
			
		||||
Keywords=Internet;WWW;Browser;Web;Explorer
 | 
			
		||||
Exec=/usr/lib/zen/zen-bin %U
 | 
			
		||||
Icon=/usr/share/icons/hicolor/128x128/apps/zen-browser.png
 | 
			
		||||
Terminal=false
 | 
			
		||||
Type=Application
 | 
			
		||||
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
 | 
			
		||||
StartupWMClass=Zen Browser
 | 
			
		||||
Categories=Network;WebBrowser;
 | 
			
		||||
Actions=new-window;new-private-window;profile-manager-window;
 | 
			
		||||
 | 
			
		||||
[Desktop Action new-window]
 | 
			
		||||
Name=Open a New Window
 | 
			
		||||
Exec=/usr/lib/zen/zen-bin --new-window %u
 | 
			
		||||
 | 
			
		||||
[Desktop Action new-private-window]
 | 
			
		||||
Name=Open a New Private Window
 | 
			
		||||
Exec=/usr/lib/zen/zen-bin --private-window %u
 | 
			
		||||
 | 
			
		||||
[Desktop Action profile-manager-window]
 | 
			
		||||
Name=Open the Profile Manager
 | 
			
		||||
Exec=/usr/lib/zen/zen-bin --ProfileManager %u
 | 
			
		||||
							
								
								
									
										1
									
								
								zen-browser.launcher
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								zen-browser.launcher
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
exec "$SNAP/usr/lib/zen/zen-bin" "$@"
 | 
			
		||||
		Reference in New Issue
	
	Block a user