Skip to content

SnapX is a free, open-source, cross-platform tool that lets you capture or record any area of your screen and instantly share it with a single keypress. Upload images, videos, text, and more to multiple supported destinations—all with ease. ShareX fork

License

Notifications You must be signed in to change notification settings

BrycensRanch/SnapX

SnapX Banner

SnapX

Capture, share, and boost productivity. All in one.


GitHub Workflow Status License Release Downloads

AUR Package Base COPR My Homebrew Tap
Discord Support me on Ko-fi Support me on PayPal

GitHub Repository

Caution

This project is under development and is not ready for use.

Note

DISCLAIMER: SnapX is a hard fork of the Windows application ShareX.

Feature-wise

[1] When tested on KDE Plasma Wayland 6.2.90 with HDR, the resulting screenshots' colors were not blown out. Your mileage may vary.

Technical Details

  • It uses .NET 9, ImageSharp (cross-platform image library)
  • Dependency on Newtonsoft.JSON dropped, traded out for more strict yet performant System.Text.Json
  • And it will use SQLite to image metadata like image hashes & history by default yet keeping JSON as an option.
  • The UI is now defined in a more modern, declarative style using MVVM and XAML, providing a clear improvement over the older WinForms approach.
  • UI is GPU accelerated, leading to a more responsive UI & yet less CPU usage while navigating the UI. (Fixes low performance on 4K screens with a weak CPU)
  • Respects XDG directory specification, Symlinks ~/Documents/SnapX to respective config/data directory on Linux/macOS
  • Uses Direct3D11 & WinRT to capture on Windows, XCap on macOS, and XDG portals on Linux.
  • Supports PNG (including animated variant), WEBP (including animated variant), JPEG, GIFs (should be smaller than your typical ShareX GIF), TIFF, and BMP image formats.
  • Supports 95% of ShareX uploaders (we're a fork!!)
  • Supports Google Photos Image Uploader after the new API change.
  • The ability to fully configure SnapX via the Command Line via command flags & environment variables. Additionally, you can configure SnapX using the Windows Registry.
  • Additionally, all uploaders are now forced to use HTTPS <2.0 & optionally use TLS 1.3 out of the box.
  • Keeps compatibility with the custom uploader configuration format (.sxcu)
  • As a user, you do NOT need to have .NET installed. Whether you're on Linux, Windows, or macOS.

What does this all mean? It means you'll be able to have a more performant, reliable, and modern application.

You will not receive any support from the ShareX project for this software.
If you have any issues with this project, please open an issue in this repository.

However, it's important to note that this project is maintained by volunteers.
We may not be able to provide support for all issues.
We will do our best to help you, but we cannot guarantee that we will be able to resolve your issue.

For further information, please check the source code.

Supported Linux Distributions

This project is built on Ubuntu 24.04 and is tested on the following distributions:

  • Fedora 41+
  • Ubuntu 24.04+

Note

If you're using a different distribution, there will be a Flatpak package available when possible. If you're using a distribution that doesn't support Flatpak, you can build the project from source.

Packages for testers

SnapX is not yet in a usable state. These packages are provided for making testing easier.

SnapX is packaged on:

Additionally, you can download nightly builds from here.

Development Dependencies

  • git
  • dotnet-sdk-9.0
  • ffmpeg (7)
  • rust & cargo (<1.80) (macOS only, the rest use SharpCapture)
  • clang
  • zlib-devel

IDE of Choice

JetBrains Rider is the recommended IDE. It works on Linux, Windows, and macOS. It's free for noncommercial use.

JetBrains Rider - The world's most loved .NET and game dev IDE

Fedora 41+ 🌟

sudo dnf in -y git dotnet-sdk-aot-9.0 /usr/bin/ffmpeg

Ubuntu 24.04+ ⚡

sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository ppa:dotnet/backports -y # Ubuntu 24.04 doesn't have .NET 9 packaged. Do not add this PPA on Ubuntu 24.10+
sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg7 -y # Ubuntu 24.04 doesn't have FFMPEG 7 packaged.
sudo apt install -y git dotnet-sdk-9.0 ffmpeg clang zlib1g-dev libsm6

Windows 10 22H2+ 🪟

End of life Windows versions are not supported. For example, Windows 11 22H2 is at its EOL and, thus, unsupported.

SnapX now uses the Windows SDK to generate C# Windows API binding code.
You need the Windows 11 SDK 10.0.26100.0.
It works on Windows 10, too.

# Installing Visual Studio Community
# You cannot build with NativeAOT without it on Windows. It has the linker program. However, you can compile on Rider or whatever your favorite IDE is after you've installed Visual Studio.
# See https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot
winget install --id Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended"
winget install -e --id Git.Git
# Install Rider (optional)
winget install -e --id JetBrains.Rider

macOS Ventura+ (13) 🍎

End of life macOS versions are not supported. For example, macOS Monterey is at its EOL and thus, unsupported.

Using the script to install the .NET SDK from the .NET team makes sure you don't run into homebrew .NET weirdness with Rider not detecting it.

xcode-select --install
brew install ffmpeg@7 rust
git --version # If prompted to install Git, do it.
exec $SHELL -l

Tip

If you're using MacPorts, run this instead of the brew install command:

sudo port selfupdate
sudo port install ffmpeg7 cargo

Building from Source

Caution

Only do this if you're a developer; you should have a backup of all your ShareX/SnapX data.
I do mean it when I say the project isn't ready for use.

Important

Additionally, it seems SnapX hasn't been able to create the configuration file(s) it expects.
I've been testing with my ShareX configuration. You should place it in the configuration directory that it expects.

On Linux, it's ~/.config/SnapX

On Windows, it's %USERPROFILE%\Documents\SnapX

On macOS, it's ~/Library/Application Support/SnapX

git clone https://github.com/BrycensRanch/SnapX
cd SnapX
./build.sh # Linux/macOS
.\build.ps1 # If on Windows
Output/snapx-ui/snapx-ui # Run SnapX.Avalonia
# Nothing is stopping you from using regular .NET building tools
# dotnet publish -c Release ./SnapX.sln
# SnapX.Avalonia/bin/Release/net9.0/linux-x64/publish/snapx-ui

Contributions

Contributions are welcome. The documentation for contributing is a work in progress, but here is a rough draft.

Donators 💖

Thank you so much!

Roadmap

See Progress.md

About

SnapX is a free, open-source, cross-platform tool that lets you capture or record any area of your screen and instantly share it with a single keypress. Upload images, videos, text, and more to multiple supported destinations—all with ease. ShareX fork

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 234

Languages