Snapshot (Camera App)
- Project type (Core or Development): Core
- Project codename (not generic name): Snapshot
- Current repository location: https://gitlab.gnome.org/msandova/snapshot
Links to design mockups and relevant issues
- Teams/Design/initiatives#12 (closed)
- Teams/Design/initiatives#91 (closed)
- https://gitlab.gnome.org/Teams/Design/app-mockups/-/tree/master/camera
- https://gitlab.gnome.org/jwestman/camera
Dependencies not included in GNOME runtime
Pipewire newer than 0.3.65¹gst-plugins-good (png, jpeg)gst-plugins-base (ogg, theora, vorbis)
EDIT: As of 16-03 we don't have any dependency not in the runtime, the rust sdk, and the llvm extension. The later is used only to use mold
to link, and can be dropped easily.
Installation/build instructions
GNOME Builder
GNOME Builder is the environment used for developing this application. It can use Flatpak manifests to create a consistent building and running environment cross-distro. Thus, it is highly recommended you use it.
- Download GNOME Builder.
- In Builder, click the "Clone Repository" button at the bottom, using https://gitlab.gnome.org/msandova/snapshot.git as the URL.
- Click the build button at the top once the project is loaded.
Installation
Depending on how you want it installed instructions can differ. If you used GNOME Builder to build it, clicking the bar at the top window will open a submenu with "Export Bundle". This will create a Flatpak bundle, which can be installed on any system that supports Flatpak.
In order for the Snapshot Flatpak to be able to use the camera portal, you must install a bundle. Once you have a bundle installed, development builds will work properly.
Planned features
The following features are not implemented yet but are planned to be added until inclusion into Core/Development:
- Video recording is broken. Sometimes it crops the duration of videos (blocker for inclusion in Core)
- Record audio when recording (blocker for inclusion in Core)
- Adaptive layout, depends on a upcoming feature of libadwaita
More information
GNOME needs a modern and simple camera app. Snapshot aims to provide a familiar user experience, while following modern GNOME design patterns and good performance.
Long term we want to add basic format preferences for video recording and support camera flash.
App replacement
Apps that will be replaced: Cheese
Abandoned features
With the app replacement, the following features that are currently available in Core, will be abandoned:
- Photo-booth mode
- Video filters and effects
¹ We require 0.3.64 for the portal to work correctly making use of pipewires' gstdeviceprovider, we can use the xdg-run/pipewire-0
permission until this lands in the runtime instead. The app currently tries to use the portal and if it fails either on the portal or on pipewire side, it will just use pipewire directly.
We also require newer than 0.3.65 for pipewiresrc to provide dmabufs and convert them to GL textures before applying rotations (they are expensive on CPU) but this can be removed or tweaked in such a way that we don't need to depend on a newer version of pipewire.