Files
zen-browser-snap/snapcraft.yaml

222 lines
6.5 KiB
YAML

# 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]