SnapX is a hard fork of the application ShareX.
- SnapX is a cross-platform application.
- Elegance in user interfaces by separating essential settings from advanced or intermediate functionality
- Supporting high DPI screens
- Automatically tone maps HDR screenshots to SDR*
- It uses .NET 9, ImageSharp (cross-platform image library)
- And it will use SQLite to store settings & history.
- 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.
This project is built on Ubuntu 24.04 and is tested on the following distributions:
- Ubuntu 24.04
- Fedora 41
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.
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:
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.
Instructions for other projects within the SnapX solution are not provided yet.
git
gtk4-devel
on Fedora orlibgtk-4-dev
on Ubuntudotnet-sdk-9.0
ffmpeg
(7.0.0)clang
zlib-devel
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.
sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg7 # Ubuntu 24.04 doesn't have FFMPEG 7 packaged.
sudo apt install -y git libgtk-4-dev dotnet-sdk-9.0 ffmpeg clang
sudo dnf install -y git gtk4-devel dotnet-sdk-9.0 /usr/bin/ffmpeg clang zlib-devel @c-development @development-libs
Only do this if you're a developer, the solution does build, but 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.
git clone https://github.com/BrycensRanch/SnapX
cd SnapX
./build.sh # Calls NUKE (https://nuke.build)
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
Lastly...
I use Fedora Rawhide btw :^)