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.

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 Discord Server

Repo

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

⚠️ Disclaimer

SnapX is a hard fork of the application ShareX.

Feature wise

  • SnapX is a cross-platform application.
  • Elegance in user interfaces by separating essential settings from advanced or intermediate functionality
  • Supporting high DPI screens
  • Screenshots on an HDR monitor aren't blown out*

[1]: When tested on KDE Plasma Wayland 6.2.90 with HDR on the resulting screenshot's 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 store settings & 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. For SnapX.GTK4, it uses BindingSharp
  • Respects XDG directory specification and uses XDG portals on Linux
  • Supports PNG (including animated variant), WEBP (including animated variant), JPEG, GIFs, TIFF, and BMP image formats.
  • 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 uses TLS 1.3 out of the box.
  • Keeps compatability 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, and 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+

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.

Other platforms

When I initially started this port, I only came with one main goal: ShareX on Modern Linux on native Wayland. I realized my work could be used on other platforms such as macOS or Windows...

That's why SnapX.Avalonia was created.

Powered by FluentAvalonia, it should look something like this. Screenshot from FluentSearch: screenshot of the FluentSearch application that looks like a modern native Windows application

For screenshots, it uses your operating system's respective APIs. On Linux Wayland, it uses portals. This is a less performant implementation as it has to delete the requested screenshot file after reading it into memory.

Development Dependencies

Instructions for other projects within the SnapX solution are not provided yet.

SnapX.GTK4 does not use header files and only requires the binary GTK4 package at runtime.

  • git
  • gtk4 on Fedora or libgtk-4-1 on Ubuntu
  • dotnet-sdk-9.0
  • ffmpeg (7.0.0)
  • clang
  • zlib-devel

Fedora 41+ 🌟

sudo dnf install -y git gtk4 dotnet-sdk-9.0 /usr/bin/ffmpeg clang zlib-devel @c-development @development-libs

Ubuntu 24.04+ ⚡

sudo apt update -q && sudo apt install -y software-properties-common
sudo add-apt-repository ppa:dotnet/backports # 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 # Ubuntu 24.04 doesn't have FFMPEG 7 packaged.
sudo apt install -y git libgtk-4-1 dotnet-sdk-9.0 ffmpeg clang

Windows 10 22H2+ 🪟

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

# Installing Visual Studio Community
# You cannot build with NativeAOT without it.
# Regardless if you like Rider or VSCode more. https://stackoverflow.com/a/78392544/27578554
winget install --id Microsoft.VisualStudio.2022.Community --override "--quiet --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended"
winget install -e --id Git.Git

macOS Ventura+ 🍎

Avalonia can run on macOS 11 or 12. But you can't develop with such an old version.

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

cd ~/Downloads
curl -O https://dot.net/v1/dotnet-install.sh # Official installation script from .NET team
chmod +x dotnet-install.sh
./dotnet-install.sh -Channel current
git --version # If prompted to install Git, do it.
exec $SHELL -l

Building from Source

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

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 it expects.

On Linux, its ~/.config/SnapX

On Windows, its %USERPROFILE%\Documents\SnapX

On macOS, its ~/Library/Application Support/SnapX

git clone https://github.com/BrycensRanch/SnapX
cd SnapX
./build.sh # Calls NUKE (https://nuke.build) (Linux/macOS)
.\build.ps1 # If on Windows
Output/snapx-ui/snapx-ui # Run SnapX.Avalonia
Output/snapx-gtk/snapx-gtk # Run SnapX.GTK4
# There is nothing stopping you from using regular dotnet building tools
# dotnet publish -c Release
# 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.


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.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages