- Rust 97.6%
- Nix 1.9%
- Shell 0.5%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| assets | ||
| libframr | ||
| nix | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| PKGBUILD | ||
| PKGBUILD-bin | ||
| README.md | ||
| rustfmt.toml | ||
📸 framr
ShareX-style screenshots & screen recording for Wayland.
Capture a region, annotate-free instant upload to any ShareX/iShare-compatible host, link on your clipboard — all in under two seconds.
If you came from Windows and miss ShareX, framr is for you: it reads your existing .sxcu / .iscu uploader configs and brings the same capture → upload → clipboard workflow to Hyprland, Sway, river, and KDE Plasma (Wayland).
✨ Features
- Any uploader, zero lock-in — works with every ShareX/iShare-compatible host (nest.rip, zipline, chibisafe, your own server…). Import configs instantly via
framr://deeplinks. - Fast region selection — custom selection UI with keyboard shortcuts, undo/redo, and configurable colors. No slurp dependency.
- Screen recording — capture video, not just stills.
- Multi-monitor capture — grab several outputs with a single command.
- Native notifications — know the moment your link is ready.
- Single Rust binary — no runtime, no Electron, no Python deps.
🆚 Why framr?
| framr | grim + slurp / grimblast / hyprshot | flameshot | |
|---|---|---|---|
| Region & full-screen capture | ✅ | ✅ | ✅ |
| Screen recording | ✅ | ❌ | ❌ |
| Upload to any custom host | ✅ ShareX-compatible | ❌ | Imgur only |
Import ShareX .sxcu configs |
✅ | ❌ | ❌ |
| Wayland-native | ✅ | ✅ | partial |
| Selection UI w/ undo & shortcuts | ✅ | ❌ | ✅ |
Note
framr currently supports wlroots-based compositors (sway, Hyprland, river, …) and KDE Plasma on Wayland. X11 and GNOME are not supported yet (roadmap). framr is in active development — found a bug? Open an issue.
🚀 Quick start
# Arch Linux
yay -S framr # or framr-bin
# take a region screenshot and upload it
framr # ← replace with your actual capture command/flags
📦 Installation
Binary
Pre-built binaries for Linux (x86_64) are on the Releases page.
Arch Linux (AUR)
framr is available in the AUR as framr and framr-bin:
yay -S framr
Nix
nix profile add github:vMohammad24/framr
Home Manager module — manage your framr config declaratively
# flake.nix
{
inputs.framr.url = "github:vMohammad24/framr";
outputs = { framr, ... }: {
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
modules = [
framr.homeManagerModules.default
{
programs.framr = {
enable = true;
settings = {
default_action = "UploadAndCopy";
default_capture = "Area";
default_uploader = "nest.rip";
uploaders = [
{
name = "nest.rip";
request_method = "POST";
request_url = "https://nest.rip/api/files/upload";
body_type = "FormData";
file_form_name = "files";
output_url = "{json:fileURL}";
error_message = "{json:message}";
headers = [ [ "authorization" "your_api_key" ] ]; # file:/path/works/as/well
}
];
};
};
}
];
};
};
}
Gentoo (community-maintained)
eselect repository add roxy-overlay git https://codeberg.org/key/roxy-overlay.git
eselect repository enable roxy-overlay
emaint sync -r roxy-overlay
emerge media-gfx/framr
Cargo (from source)
cargo install --git https://github.com/vMohammad24/framr.git
Build dependencies
If building from source or running the raw binary, you'll need: wayland, libxkbcommon, cairo, pango, dbus, libxcursor.
🔗 Importing uploaders (deeplinks)
framr registers a framr:// protocol so importing an uploader is one click:
- Base64 config:
framr://eyJOYW1lIjogIk15IFVwbG9hZGVyIiwgLi4ufQ==(base64 of an.sxcuor.iscufile) - Direct link:
framr://https://example.com/uploader.sxcu
On NixOS/Home Manager the handler registers automatically. Elsewhere, run:
framr config protocol
💡 If you run an image host: link a
framr://deeplink in your docs and your Linux users get one-click setup.
⌨️ Example keybindings
# Hyprland (~/.config/hypr/hyprland.conf)
bind = , Print, exec, framr # ← fill in real flags
bind = SHIFT, Print, exec, framr # full screen
bind = CTRL, Print, exec, framr # record
🗺️ Roadmap
- Multi-monitor screen capture in one command
- Configurable default action
- Home Manager module (NixOS)
framr://deeplinks for uploader import- Notification support
- Custom selection UI (keyboard shortcuts, undo/redo, configurable colors)
- Screen recording
- Multi-monitor recording
🤝 Contributing
Contributions are welcome! Have an idea or found a bug? Open an issue or submit a pull request.
📄 License
framr is licensed under the GNU AGPL-3.0.
🙏 Credits
- wayshot — inspiration for some code snippets.