You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.4 KiB
153 lines
5.4 KiB
# Observations:
|
|
#
|
|
# - This package is expected to work normally, like any other packaging format (e.g. Flatpak, AppImage).
|
|
# - Native Wayland support, albeit doable, is currently not done on purpose, for a few reasons:
|
|
#
|
|
# 1. It's currently awkward to package/configure properly:
|
|
# - Due to 'strict' confinement, we have create a wrapper script and configure the Wayland socket to be visible in $XDG_RUNTIME_DIR:
|
|
# - https://forum.snapcraft.io/t/wayland-dconf-and-xdg-runtime-dir/186
|
|
# - https://github.com/MirServer/graphics-core22/issues/6#issuecomment-1558815412
|
|
#
|
|
# 2. It currently has some UI inconsistencies (these were tested on Ubuntu 22.04 with GNOME 42):
|
|
# - The mouse cursor theme is chosen incorrectly
|
|
# - The mouse cursor itself is way larger than normal
|
|
# - Modal windows don't have their initial position on the screen set correctly
|
|
# - Windows don't have shadows
|
|
#
|
|
# I'm sure these issues can be worked around somehow, but since the 'X11 build' works reasonably well on Wayland through XWayland,
|
|
# they can be dealt with some other time.
|
|
# But if you're interested in Wayland support right now, here's what you have to do to get an initial, working build:
|
|
#
|
|
# - Add the 'qt6-wayland-dev' package to 'build-packages'
|
|
# - Add the 'qt6-wayland' package to 'stage-packages'
|
|
# - Either add a Wayland launcher script (mentioned in reason number 1), OR run the app like this (for quick testing):
|
|
# $ snap run --shell notes
|
|
# $ export XDG_RUNTIME_DIR=(dirname "$XDG_RUNTIME_DIR")
|
|
# $ export QT_QPA_PLATFORM=wayland
|
|
# $ notes
|
|
#
|
|
# Useful links:
|
|
# - https://snapcraft.io/docs/snapcraft-yaml-reference
|
|
# - https://github.com/MirServer/iot-example-graphical-snap/tree/Qt6-example
|
|
name: notes
|
|
adopt-info: notes
|
|
icon: packaging/linux/common/icons/512x512/notes.png
|
|
|
|
base: core22
|
|
compression: lzo
|
|
confinement: strict
|
|
|
|
# The s390x architecture is not included on purpose, because it currently fails at the graphics-core22 step.
|
|
architectures:
|
|
- build-on: amd64
|
|
- build-on: arm64
|
|
- build-on: armhf
|
|
- build-on: ppc64el
|
|
|
|
apps:
|
|
notes:
|
|
common-id: io.github.nuttyartist.notes
|
|
command-chain:
|
|
- bin/graphics-core22-wrapper # https://mir-server.io/docs/the-graphics-core22-snap-interface
|
|
command: usr/bin/notes
|
|
plugs: # https://snapcraft.io/docs/supported-interfaces
|
|
- desktop
|
|
- desktop-legacy
|
|
- gsettings
|
|
- home
|
|
- network
|
|
- opengl
|
|
- unity7
|
|
- x11
|
|
- wayland
|
|
environment:
|
|
QML2_IMPORT_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/qt6/qml
|
|
QT_PLUGIN_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/qt6/plugins
|
|
QT_QPA_PLATFORM_PLUGIN_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/qt6/plugins/platforms
|
|
XCURSOR_PATH: $SNAP/share/icons # Fixes missing mouse cursor theme in X11 sessions - assuming the current theme exists in the gtk-common-themes snap.
|
|
XDG_CACHE_HOME: $SNAP_USER_COMMON/.cache
|
|
XDG_CONFIG_HOME: $SNAP_USER_DATA/.config
|
|
XDG_CONFIG_DIRS: $SNAP/etc/xdg
|
|
XKB_CONFIG_ROOT: $SNAP/usr/share/X11/xkb
|
|
|
|
layout:
|
|
/usr/share/libdrm:
|
|
bind: $SNAP/graphics/libdrm
|
|
/usr/share/drirc.d:
|
|
symlink: $SNAP/graphics/drirc.d
|
|
/usr/share/X11/XErrorDB:
|
|
symlink: $SNAP/graphics/X11/XErrorDB
|
|
/usr/share/X11/locale:
|
|
symlink: $SNAP/graphics/X11/locale
|
|
/usr/share/X11/xkb:
|
|
bind: $SNAP/usr/share/X11/xkb
|
|
|
|
plugs:
|
|
graphics-core22:
|
|
interface: content
|
|
target: $SNAP/graphics
|
|
default-provider: mesa-core22
|
|
# https://forum.snapcraft.io/t/how-to-use-the-system-gtk-theme-via-the-gtk-common-themes-snap/6235
|
|
gtk-3-themes:
|
|
interface: content
|
|
target: $SNAP/share/themes
|
|
default-provider: gtk-common-themes
|
|
icon-themes:
|
|
interface: content
|
|
target: $SNAP/share/icons
|
|
default-provider: gtk-common-themes
|
|
sound-themes:
|
|
interface: content
|
|
target: $SNAP/share/sounds
|
|
default-provider: gtk-common-themes
|
|
|
|
parts:
|
|
notes:
|
|
source: .
|
|
source-type: git
|
|
plugin: cmake
|
|
cmake-generator: Ninja
|
|
cmake-parameters:
|
|
- -DCMAKE_BUILD_TYPE=Release
|
|
- -DCMAKE_INSTALL_PREFIX=/usr
|
|
- -DGIT_REVISION=ON
|
|
- -DPRO_VERSION=OFF # Note: You may want to remove this option if you're building the snap yourself.
|
|
- -DUPDATE_CHECKER=OFF
|
|
- -DUSE_QT_VERSION=6
|
|
parse-info:
|
|
- usr/share/metainfo/io.github.nuttyartist.notes.metainfo.xml
|
|
build-packages:
|
|
- libgl-dev
|
|
- libqt6opengl6-dev
|
|
- qt6-base-private-dev
|
|
- qt6-declarative-dev
|
|
stage-packages:
|
|
- libqt6network6
|
|
- libqt6sql6-sqlite
|
|
- libqt6widgets6
|
|
- libxcursor1 # For some reason this isn't present in core22, but Qt dlopen()'s it to set up the mouse cursor theme, so we have to include it.
|
|
- qml6-module-qtqml-workerscript
|
|
- qml6-module-qtquick-controls
|
|
- qml6-module-qtquick-layouts
|
|
- qml6-module-qtquick-particles
|
|
- qml6-module-qtquick-templates
|
|
- qml6-module-qtquick-window
|
|
- qt6-qpa-plugins
|
|
override-prime: |
|
|
craftctl default
|
|
if [ -d "${SNAPCRAFT_PART_SRC}/.git" ]
|
|
then
|
|
craftctl set version="$(grep -oPm1 '\bAPP_VERSION +\K[^)]+' "${SNAPCRAFT_PART_SRC}/CMakeLists.txt")+g$(git -C "${SNAPCRAFT_PART_SRC}" rev-parse --short HEAD)"
|
|
fi
|
|
|
|
graphics-core22:
|
|
after:
|
|
- notes
|
|
source: https://github.com/MirServer/graphics-core22.git
|
|
plugin: dump
|
|
override-prime: |
|
|
craftctl default
|
|
${CRAFT_PART_SRC}/bin/graphics-core22-cleanup mesa-core22 nvidia-core22
|
|
prime:
|
|
- bin/graphics-core22-wrapper
|