A screenshot utlity tool made for wayland
  • Rust 97.6%
  • Nix 1.9%
  • Shell 0.5%
Find a file
vMohammad24 63cad31d18
All checks were successful
Build / build (push) Successful in 2m51s
ci: use upload/download-artifact@v3
2026-06-16 05:03:44 +03:00
.forgejo/workflows ci: use upload/download-artifact@v3 2026-06-16 05:03:44 +03:00
assets feat(libframr): add support for KDE backend (KWin). 2026-05-04 17:07:20 +03:00
libframr chore: bump to 0.12.0/0.6.0 2026-06-06 17:45:34 +03:00
nix refactor(nix): change description for programs.framr.settings 2026-05-15 00:37:41 +03:00
src fix(upload): escape quotations 2026-06-10 21:30:46 +03:00
.envrc first commit 2026-04-25 17:42:57 +03:00
.gitignore add readme and update flake 2026-04-26 19:28:33 +03:00
Cargo.lock chore: bump 2026-06-08 20:34:37 +03:00
Cargo.toml chore: bump 2026-06-08 20:34:37 +03:00
flake.lock ci: update flake & create workflow to build and publish to cachix 2026-04-26 20:13:25 +03:00
flake.nix feat(recording): implement hardware encoding 2026-06-06 17:41:13 +03:00
LICENSE first commit 2026-04-25 17:42:57 +03:00
PKGBUILD aur: apparently it doesnt like gstreamer vaapi 2026-06-06 18:44:22 +03:00
PKGBUILD-bin aur: apparently it doesnt like gstreamer vaapi 2026-06-06 18:44:22 +03:00
README.md ci: use forgejo for actions 2026-06-16 04:25:13 +03:00
rustfmt.toml add config creation/parsing/importing and switch to anyhow and tokio 2026-04-25 21:35:25 +03:00

📸 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.

AUR Release License: AGPL-3.0 Built with Rust

framr demo: select a region, screenshot uploads automatically, URL lands on the clipboard

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
framr region selection UI

📦 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.

framr registers a framr:// protocol so importing an uploader is one click:

  • Base64 config: framr://eyJOYW1lIjogIk15IFVwbG9hZGVyIiwgLi4ufQ== (base64 of an .sxcu or .iscu file)
  • 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.