Skip to content

waycrate/wayshot

wayshot

A native, blazing-fast πŸš€πŸš€πŸš€ screenshot tool for wlroots based compositors such as sway and river written in Rust.


Portal integration

xdg-desktop-portal-luminous is a xdg-desktop-portal backend for wlroots based compositors, providing screenshot and screencast capabilities.

Some usage examples:

NOTE: Read man 7 wayshot for more examples.

NOTE: Read man 5 wayshot for config file information.

NOTE: Read man wayshot for flag information.

Screenshot and crop region:

wayshot -g

Fullscreen:

wayshot

Screenshot and copy to clipboard:

wayshot --clipboard

Pick color with information:

wayshot --color

Capture a specific output:

wayshot --list-outputs   # see available output names
wayshot -o eDP-1

Interactively choose a window to capture:

wayshot --choose-toplevel

Pick a hex color code, using ImageMagick:

wayshot -g - | convert - -format '%[pixel:p{0,0}]' txt:-|grep -E "#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})" -o

Shell completions:

wayshot --completions fish | source
wayshot --completions zsh > ~/.zfunc/_wayshot
wayshot --completions bash > /etc/bash_completion.d/wayshot
wayshot --completions elvish >> ~/.config/elvish/rc.elv
wayshot --completions pwsh >> $PROFILE
wayshot --completions nushell | save -f ~/.config/nushell/completions/wayshot.nu

Optional features

All features are enabled in the default build. To reduce binary size or compile-time dependencies, features can be selectively disabled:

cargo build --no-default-features --features clipboard,logger,notifications
Feature What it adds Extra dependency
jpeg JPEG encoding (--encoding / .jpg) via image
pnm PNM/PPM encoding (--encoding / .ppm) via image
qoi QOI encoding (--encoding / .qoi) via image
webp WebP encoding (--encoding / .webp) via image
avif AVIF encoding (--encoding / .avif) rav1e (via image)
clipboard --clipboard flag, copy to Wayland clipboard wl-clipboard-rs
color_picker --color flag, freeze screen and pick a pixel color β€”
jxl JPEG-XL encoding (--encoding / .jxl) libjxl / jpegxl-rs
logger --log-level flag, tracing output to stderr tracing-subscriber
notifications Desktop notifications after each capture notify-rust
selector --geometry flag, interactive region selection libwaysip
completions --completions <SHELL> flag, generate shell completion scripts clap_complete (+ nushell)

Clipboard without the built-in feature

If you build without the clipboard feature, you can still pipe stdout to wl-copy:

wayshot - | wl-copy

Alternatively, set stdout = true in your config file to always write to stdout, then pipe as usual.

Installation

AUR:

wayshot-git & wayshot-bin have been packaged.

Compile time dependencies:

  • scdoc (If present, man-pages will be generated.)
  • rustup
  • make
  • pkg-config
  • libjxl (optional β€” only needed when the jxl feature is enabled)

Compiling:

  • git clone https://github.com/waycrate/wayshot && cd wayshot
  • make setup
  • make
  • sudo make install

Support:

  1. https://matrix.to/#/#waycrate-tools:matrix.org
  2. https://discord.gg/KKZRDYrRYW

Smithay Developers:

Massive thanks to smithay developer Cmeissl and Victor Berger. Without them this project won't be possible as my wayland knowledge is limited.

About

screenshot tool for wayland compositors.

Resources

License

BSD-2-Clause, GPL-3.0 licenses found

Licenses found

BSD-2-Clause
LICENSE-BSD
GPL-3.0
LICENSE-GPL

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

 

Contributors

Languages