Skip to content

Gigas002/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.

Interactively select a region to capture (requires selector feature):

wayshot -g
# optionally, with custom background/foreground colors:
wayshot FILE -g --geometry-background-color 00000050 --geometry-foreground-color ffffffff

Capture a region using a geometry string (compatible with slurp/waysip):

wayshot FILE -g "$(slurp)"
# or with a literal geometry string:
wayshot -g "783,746 177x251"

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) jxl-encoder
logger --log-level flag, tracing output to stderr tracing-subscriber
notifications Desktop notifications after each capture; configurable click action notify-rust, rustix
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

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

Mirrored at https://git.sr.ht/~shinyzenith/wayshot | screenshot tool for wlroots based compositors implementing zwlr_screencopy_v1

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

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rust 98.9%
  • Other 1.1%