▸ Agent Skills
2 min read

Snapcraft

Prerequisites

1. Install snap

sudo apt install snapd

Terminal window

sudo pacman -S --needed git base-develgit clone https://aur.archlinux.org/snapd.gitcd snapdmakepkg -sisudo systemctl enable --now snapd.socketsudo systemctl start snapd.socketsudo systemctl enable --now snapd.apparmor.service

Terminal window

sudo dnf install snapd# Enable classic snap supportsudo ln -s /var/lib/snapd/snap /snap

Terminal window

Reboot your system afterwards.

2. Install a base snap

sudo snap install core22

Terminal window

3. Install snapcraft

sudo snap install snapcraft --classic

Terminal window

Configuration

  1. Create an UbuntuOne account.
  2. Go to the Snapcraft website and register an App name.
  3. Create a snapcraft.yaml file in your projects root.
  4. Adjust the names in the snapcraft.yaml file.
name: appnamebase: core22version: '0.1.0'summary: Your summary # 79 char long summarydescription: |  Your description
grade: stableconfinement: strict
layout:  /usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.1:    bind: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/webkit2gtk-4.1
apps:  appname:    command: usr/bin/appname    desktop: usr/share/applications/appname.desktop    extensions: [gnome]    #plugs:    #  - network    # Add whatever plugs you need here, see https://snapcraft.io/docs/snapcraft-interfaces for more info.    # The gnome extension already includes [ desktop, desktop-legacy, gsettings, opengl, wayland, x11, mount-observe, calendar-service ]    #  - single-instance-plug # add this if you're using the single-instance plugin    #slots:    # Add the slots you need to expose to other snaps    #  - single-instance-plug # add this if you're using the single-instance plugin
# Add these lines only if you're using the single-instance plugin# Check https://v2.tauri.app/plugin/single-instance/ for details#slots:#  single-instance:#    interface: dbus#    bus: session#    name: org.net_mydomain_MyApp.SingleInstance # Remember to change net_mydomain_MyApp to your app ID with "_" instead of "." and "-"##plugs:#  single-instance-plug:#    interface: dbus#    bus: session#    name: org.net_mydomain_MyApp.SingleInstance # Remember to change net_mydomain_MyApp to your app ID with "_" instead of "." and "-"
package-repositories:  - type: apt    components: [main]    suites: [noble]    key-id: 78E1918602959B9C59103100F1831DDAFC42E99D    url: http://ppa.launchpad.net/snappy-dev/snapcraft-daily/ubuntu
parts:  build-app:    plugin: dump    build-snaps:      - node/20/stable      - rustup/latest/stable    build-packages:      - libwebkit2gtk-4.1-dev      - build-essential      - curl      - wget      - file      - libxdo-dev      - libssl-dev      - libayatana-appindicator3-dev      - librsvg2-dev      - dpkg    stage-packages:      - libwebkit2gtk-4.1-0      - libayatana-appindicator3-1    source: .    override-build: |      set -eu      npm install      npm run tauri build -- --bundles deb      dpkg -x src-tauri/target/release/bundle/deb/*.deb $SNAPCRAFT_PART_INSTALL/      sed -i -e "s|Icon=appname|Icon=/usr/share/icons/hicolor/32x32/apps/appname.png|g" $SNAPCRAFT_PART_INSTALL/usr/share/applications/appname.desktop

Explanation

  • The name variable defines the name of your app and is required to be set to the name that you have registered earlier.
  • The base variable defines which core you are using.
  • The version variable defines the version, and should be updated with each change to the source repository.
  • The apps section allows you to expose the desktop and binary files to allow the user to run your app.
  • The package-repositories section allows you to add a package repository to help you satisfy your dependencies.
  • build-packages/build-snaps defines the build dependencies for your snap.
  • stage-packages/stage-snaps defines the runtime dependencies for your snap.
  • The override-build section runs a series of commands after the sources were pulled.

Building

sudo snapcraft

Terminal window

Testing

snap run your-app

Terminal window

Releasing Manually

snapcraft login # Login with your UbuntuOne credentialssnapcraft upload --release=stable mysnap_latest_amd64.snap

Terminal window

Building automatically

  1. On your apps developer page click on the builds tab.
  2. Click login with github.
  3. Enter in your repository’s details.

Support on Open CollectiveSponsor on GitHub

© 2026 Tauri Contributors. CC-BY / MIT


Last updated Oct 08, 2026