Snapcraft
The app store for Linux
Publish your app for Linux users — for desktop, cloud, and Internet of Things.
Package & publish your appPublish your app for Linux users — for desktop, cloud, and Internet of Things.
Package & publish your appWhat language or framework does your app use?
In just a few steps, you’ll have an example C/C++ app in the Snap Store.
Continue ›name: dosbox
version: "0.74-svn"
summary: DOS emulator
description: |
DOSBox is a x86 emulator with Tandy/Hercules/
CGA/EGA/VGA/SVGA graphics sound and DOS. It's
been designed to run old DOS games under
platforms that don't support it.
confinement: devmode
base: core18
parts:
dosbox:
plugin: autotools
source-type: tar
source: http://source.dosbox.com/dosboxsvn.tgz
build-packages:
- g++
- make
- libsdl1.2-dev
- libpng-dev
- libsdl-net1.2-dev
- libsdl-sound1.2-dev
- libasound2-dev
stage-packages:
- libsdl-sound1.2
- libsdl-net1.2
- libxcursor1
- libxi6
- libxinerama1
- libxrandr2
- libxrender1
- libopenal1
- libsndio6.1
- libspeex1
- libvorbisfile3
- libwayland-client0
- libwayland-cursor0
- libwayland-egl1-mesa
- libxkbcommon0
- libglu1-mesa
- libasound2
- libasyncns0
- libbsd0
- libcaca0
- libdbus-1-3
- libflac8
- libgcc1
- libgcrypt20
- libgl1
- libglvnd0
- libglx0
- libgpg-error0
- liblz4-1
- liblzma5
- libncursesw5
- libogg0
- libpng16-16
- libpulse0
- libsdl1.2debian
- libslang2
- libsndfile1
- libstdc++6
- libsystemd0
- libtinfo5
- libvorbis0a
- libvorbisenc2
- libwrap0
- libx11-6
- libxau6
- libxcb1
- libxdmcp6
- libxext6
- zlib1g
apps:
dosbox:
command: dosbox
environment:
"LD_LIBRARY_PATH": "$SNAP/usr/lib/
$SNAPCRAFT_ARCH_TRIPLET/pulseaudio"
"DISABLE_WAYLAND": "1"
In just a few steps, you’ll have an example Electron app in the Snap Store.
Continue ›{
"name": "electron-quick-start",
"version": "1.0.0",
"description": "A minimal Electron application",
"main": "main.js",
"scripts": {
"start": "electron .",
"dist": "build --linux snap"
},
"repository": "https://github.com/electron/electron-quick-start",
"keywords": [
"Electron",
"quick",
"start",
"tutorial",
"demo"
],
"author": "GitHub",
"license": "CC0-1.0",
"devDependencies": {
"electron": "^2.0.0",
"electron-builder": "^20.27.1"
}
}
Programming in Go makes it easy to create a zip of your app that runs across Linux, without dependencies. However, end user discovery and update management remain a challenge. Snaps fill this gap, letting you distribute a Go app in an app store experience for end users.
In just a few steps, you’ll have an example Go app in the Snap Store.
Continue ›name: httplab
version: git
summary: An interactive web server.
description: |
HTTPLab let you inspect HTTP requests and forge
responses.
confinement: devmode
base: core18
parts:
httplab:
plugin: go
go-importpath: github.com/gchaincl/httplab
source: .
source-type: git
build-packages:
- gcc
apps:
httplab:
command: bin/httplab
Distributing a Java application for Linux and reaching the widest possible audience is complicated. Typically, the user has to make sure the JRE/SDK version and their environment are configured correctly. When a Linux distribution changes the delivered JRE, this can be problematic for applications. Snapcraft ensures the correct JRE is shipped alongside the application at all times.
In just a few steps, you’ll have an example Java app in the Snap Store.
Continue ›name: freeplane
version: '1.6.10'
summary: Application for Mind Mapping, Knowledge and Project Management
description: |
Freeplane is a free and open source software
application that supports thinking, sharing
information and getting things done at work,
in school and at home. The core of the
software is tools for mind mapping (also known
as concept mapping or information mapping)
and using mapped information.
confinement: devmode
parts:
freeplane:
after: [desktop-glib-only]
plugin: gradle
source: .
build: |
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
gradle release -x test -x createGitTag
install: |
unzip DIST/freeplane_bin-*.zip -d $SNAPCRAFT_PART_INSTALL/
build-packages:
- unzip
- openjdk-8-jdk
apps:
freeplane:
command: desktop-launch $SNAP/freeplane-1.6.10/freeplane.sh
In just a few steps, you’ll have an example MOOS app in the Snap Store.
Continue ›name: moos
version: '0.1'
summary: MOOS Example
description: |
This example includes MOOSDB, the main communication mechanism for all MOOS
apps.
confinement: devmode
base: core18
parts:
moos:
source: https://github.com/themoos/core-moos/archive/v10.4.0.tar.gz
plugin: cmake
build-packages: [g++]
apps:
MOOSDB:
command: bin/MOOSDB
With npm you can distribute apps to other developers, but it’s not tailored to end users. Snaps let you distribute your Node app in an app store experience.
In just a few steps, you’ll have an example Node.js app in the Snap Store.
Continue ›name: wethr
version: git
summary: Command line weather tool.
description: |
Get current weather:-
$ wethr
Get current weather in metric units
$ wethr --metric
Get current weather in imperial units
$ wethr --imperial
confinement: devmode
base: core18
parts:
wethr:
plugin: nodejs
source: .
apps:
wethr:
command: wethr
Distributing the Linux build of your app as a zip lets you provide one download and set of instructions for all of Linux. However, end user discovery and update management remain a challenge. Snaps fill this gap, letting you wrap your existing Linux build in an app store experience for end users.
In just a few steps, you’ll have an example pre-built app in the Snap Store.
Continue ›name: geekbench4
version: 4.2.0
summary: Cross-Platform Benchmark
description: |
Geekbench 4 measures your system's power and tells
you whether your computer is ready to roar. How
strong is your mobile device or desktop computer?
How will it perform when push comes to crunch?
These are the questions that Geekbench can answer.
confinement: devmode
base: core18
parts:
geekbench4:
plugin: dump
source: http://cdn.geekbench.com/Geekbench-$SNAPCRAFT_PROJECT_VERSION-Linux.tar.gz
apps:
geekbench4:
command: geekbench4
With PyPI you can distribute apps to other developers, but it’s not tailored to end users. Virtualenv lets you install an app’s dependencies in isolation, but it’s not automatically used for installs from PyPI. Snaps let you distribute a dependency-isolated Python app in an app store experience for end users.
In just a few steps, you’ll have an example Python app in the Snap Store.
Continue ›name: offlineimap
version: git
summary: OfflineIMAP
description: |
OfflineIMAP is software that downloads your email mailbox(es) as local
Maildirs. OfflineIMAP will synchronize both sides via IMAP.
confinement: devmode
base: core18
parts:
offlineimap:
plugin: python
python-version: python2
source: .
stage-packages:
- python-six
apps:
offlineimap:
command: bin/offlineimap
In just a few steps, you’ll have an example ROS app in the Snap Store.
Continue ›name: ros-talker-listener
version: '0.1'
summary: ROS Talker/Listener Example
description: |
This example launches a ROS talker and listener.
confinement: devmode
base: core18
parts:
ros-tutorials:
plugin: catkin
source: https://github.com/ros/ros_tutorials.git
source-branch: melodic-devel
source-space: roscpp_tutorials/
apps:
ros-talker-listener:
command: roslaunch roscpp_tutorials talker_listener.launch
In just a few steps, you’ll have an example ROS2 app in the Snap Store.
Continue ›name: ros2-talker-listener
version: '0.1'
summary: ROS2 Talker/Listener Example
description: |
This example launches a ROS2 talker and listener.
confinement: devmode
base: core18
parts:
ros-demos:
plugin: colcon
source: https://github.com/ros2/demos.git
source-branch: crystal
colcon-rosdistro: crystal
colcon-source-space: demo_nodes_cpp
build-packages: [make, gcc, g++]
stage-packages: [ros-crystal-ros2launch]
apps:
ros2-talker-listener:
command: opt/ros/crystal/bin/ros2 launch demo_nodes_cpp talker_listener.launch.py
Linux install instructions for Ruby applications often get complicated. To prevent modules from different Ruby applications clashing with each other, developer tools like rvm or rbenv must be used. With snapcraft, it’s one command to produce a bundle that works anywhere.
In just a few steps, you’ll have an example Ruby app in the Snap Store.
Continue ›name: mdl
version: "0.5.0"
summary: Markdown lint tool
description: |
Style checker/lint tool for markdown files
confinement: devmode
base: core18
parts:
mdl:
source: .
plugin: ruby
gems:
- rake
- bundler
override-build: |
snapcraftctl build
rake install
build-packages:
- git
apps:
mdl:
command: bin/mdl
You can distribute your apps across Linux using a musl-enabled version of Rust, with all the dependencies satisfied. However, end user discovery and update management remain a challenge. Snaps fill this gap, letting you distribute a Rust app in an app store experience for end users.
In just a few steps, you’ll have an example Rust app in the Snap Store.
Continue ›name: xsv
version: git
summary: A fast CSV command line toolkit written in Rust
description: |
xsv is a command line program for indexing,
slicing, analyzing, splitting and joining CSV
files. Commands should be simple, fast and
composable:
- Simple tasks should be easy.
- Performance trade offs should be exposed
in the CLI interface.
- Composition should not come at the
expense of performance.
confinement: devmode
base: core18
parts:
xsv:
plugin: rust
source: .
apps:
xsv:
command: bin/xsv
“The auto-updating feature is huge”
Due to the nature of our platform, we release updates more than daily which admittedly can be annoying for our users to constantly update.
Therefore, having them done seamlessly in the background makes life for our users so much easier. It’s great to see snaps as the first serious attempt to try and unify the community.
Jeff Dickey
CLI engineer, Heroku
“Starting with snaps is easy”
We definitely find Snapcraft easier as it is yaml based and provides details of what artifacts are needed. Debian packaging has things that need to be followed which can be distribution specific, which creates complication.
The modular containment is what appealed about snaps and [we] can see it will be a lot more flexible. Starting with snaps is easy and the resources that are provided are clean and structured which aids adoption.
Lee Coward and Rakesh Singh
.NET (Microsoft)
“A major software discovery tool”
The Snap store provides additional exposure to our tools for many of our existing and potential users. The decision to use it came quite naturally. We believe the store will be a major software discovery tool on Linux, so the more people find out about our tools naturally and install them more easily, the better for everyone.
Aleksey Rostovskiy
Engineer, JetBrains
Snaps work across Linux on any distribution or version. Bundle your dependencies and assets, simplifying installs to a single standard command.
Reach beyond your existing audience with a listing on the Snap Store, the front page for app discovery on Ubuntu and other popular distros.
Make data-driven decisions with active install metrics. Watch as automatic updates migrate users to your latest release. Understand your audience with geographic and version breakdowns.