diff --git a/resources/linux/snap/electron-launch b/resources/linux/snap/electron-launch index 6fdd68a34cfb63d9658231046163b9c50d38e2cd..2a1c4395187b23cab46e8c5e074faf6123f0c81b 100755 --- a/resources/linux/snap/electron-launch +++ b/resources/linux/snap/electron-launch @@ -1,6 +1,34 @@ -#!/bin/sh +#!/usr/bin/env bash -# Create $XDG_RUNTIME_DIR if it doesn't exist +# On Fedora $SNAP is under /var and there is some magic to map it to /snap. +# We need to handle that case and reset $SNAP +SNAP=$(echo $SNAP | sed -e "s|/var/lib/snapd||g") + +if [ "$SNAP_ARCH" == "amd64" ]; then + ARCH="x86_64-linux-gnu" +elif [ "$SNAP_ARCH" == "armhf" ]; then + ARCH="arm-linux-gnueabihf" +elif [ "$SNAP_ARCH" == "arm64" ]; then + ARCH="aarch64-linux-gnu" +else + ARCH="$SNAP_ARCH-linux-gnu" +fi + +export XDG_CACHE_HOME=$SNAP_USER_COMMON/.cache +if [[ -d $SNAP_USER_DATA/.cache && ! -e $XDG_CACHE_HOME ]]; then + # the .cache directory used to be stored under $SNAP_USER_DATA, migrate it + mv $SNAP_USER_DATA/.cache $SNAP_USER_COMMON/ +fi +mkdir -p $XDG_CACHE_HOME + +# Gdk-pixbuf loaders +export GDK_PIXBUF_MODULE_FILE=$XDG_CACHE_HOME/gdk-pixbuf-loaders.cache +export GDK_PIXBUF_MODULEDIR=$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders +if [ -f $SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ]; then + $SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders > $GDK_PIXBUF_MODULE_FILE +fi + +# Create $XDG_RUNTIME_DIR if not exists (to be removed when https://pad.lv/1656340 is fixed) [ -n "$XDG_RUNTIME_DIR" ] && mkdir -p $XDG_RUNTIME_DIR -m 700 exec "$@" diff --git a/resources/linux/snap/snapcraft.yaml b/resources/linux/snap/snapcraft.yaml index e7971e8a7af62d424cc3f050b491ee1601962443..0a78d41e8fd6f4333f9b1f6b7e86886d948215ce 100644 --- a/resources/linux/snap/snapcraft.yaml +++ b/resources/linux/snap/snapcraft.yaml @@ -10,34 +10,54 @@ grade: stable confinement: classic parts: + gnome: + plugin: nil + build-packages: + - software-properties-common + override-pull: | + add-apt-repository -y ppa:ubuntu-desktop/gnome-3-26 + apt -y update + code: + after: + - gnome plugin: dump source: . stage-packages: + - fcitx-frontend-gtk3 + - gvfs-libs - libasound2 - - libc++1 + - libgconf-2-4 + - libglib2.0-bin + - libgnome-keyring0 + - libgtk-3-0 - libnotify4 - libnspr4 - libnss3 - libpcre3 - libpulse0 + - libsecret-1-0 - libxss1 - libxtst6 - - libxkbcommon0 - - libgtk-3-0 - - libgdk-pixbuf2.0-0 - - libglib2.0-bin - - unity-gtk2-module - - libappindicator1 - - xdg-user-dirs - - libsecret-1-0 - # TODO@joao @Tyriar check these deps - # - libatomic1 - # - libgtk2.0-bin + - zlib1g prime: - - -usr/share/dh-python + - -usr/share/doc + - -usr/share/fonts + - -usr/share/icons + - -usr/share/lintian + - -usr/share/man apps: @@NAME@@: - command: electron-launch ${SNAP}/usr/share/@@NAME@@/bin/@@NAME@@ - desktop: usr/share/applications/@@NAME@@.desktop \ No newline at end of file + command: electron-launch $SNAP/usr/share/@@NAME@@/bin/@@NAME@@ + desktop: usr/share/applications/@@NAME@@.desktop + environment: + DISABLE_WAYLAND: 1 + GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas + + url-handler: + command: electron-launch $SNAP/usr/share/@@NAME@@/bin/@@NAME@@ --open-url + desktop: usr/share/applications/@@NAME@@-url-handler.desktop + environment: + DISABLE_WAYLAND: 1 + GSETTINGS_SCHEMA_DIR: $SNAP/usr/share/glib-2.0/schemas \ No newline at end of file