hacksaw lets you select areas of your screen

(on x11)

screencast

Installation

Dependencies

Before installing, make sure you have the following libraries installed (this list is non-exhaustive):

On systems with apt, you should be able to run:

sh apt install libxcb-shape0-dev libxcb-xkb-dev

Once you have the dependencies

Simply run cargo install hacksaw to install from crates.io.

Manual installation alternative

Clone this repo, cd into it, and run cargo install --path .

Nixpkgs

hacksaw is in the NUR under nexromancers as nur.repos.nexromancers.pkgs.hacksaw.

Examples

Take a screenshot (with shotgun) of a selection/window and copy to clipboard

sh selection=$(hacksaw) # add hacksaw arguments inside as you wish shotgun -g "$selection" - | xclip -t 'image/png' -selection clipboard

Take a screenshot of a selection/window and save to a file

sh selection=$(hacksaw) # add hacksaw arguments inside as you wish shotgun -g "$selection" screenshot.png

Record an area of the screen with ffmpeg

```sh

!/bin/sh

#

record - record an area of the screen

dir=~/medias/videos/records current=$(date +%F_%H-%M-%S)

mkdir -p "$dir"

hacksaw -n | { IFS=+x read -r w h x y

w=$((w + w % 2))
h=$((h + h % 2))

ffmpeg               \
    -v 16            \
    -r 30            \
    -f x11grab       \
    -s "${w}x${h}"   \
    -i ":0.0+$x,$y"  \
    -preset slow     \
    -c:v h264        \
    -pix_fmt yuv420p \
    -crf 20          \
    "$dir/$current.mp4"

} ```

Also: open a terminal with the selected size and shape (on bspwm)

Features

Stability

Usage

``` USAGE: hacksaw [FLAGS] [OPTIONS]

FLAGS: -h, --help Prints help information -n, --no-guides Disable fighter pilot guide lines -V, --version Prints version information

OPTIONS: -f, --format Output format. You can use: %x for x-coordinate, %y for y-coordinate, %w for width, %h for height, %i for selected window id, %g as a shorthand for %wx%h+%x+%y (X geometry), %% for a literal '%'. Other %-codes will cause an error. [default: %g] -g, --guide-thickness Thickness of fighter pilot guide lines [default: 1] -c, --colour Hex colour of the lines (RGB or RGBA), '#' optional [default: #7f7f7f]

-r, --remove-decorations <remove-decorations>
        Number of (nested) window manager frames to try and remove [default: 0]

-s, --select-thickness <select-thickness>        Thickness of selection box lines [default: 1]

```