breadshot/README.md
Breadway 84539f2fcd
Some checks failed
check / check (push) Failing after 1s
Pin bread-utils to v0.7.1; document BOS screenshot binds
bread-utils moves from bread-ecosystem tag v0.3.0 to v0.7.1.
README states breadshot is the grim/slurp/wl-copy orchestrator BOS
binds Super+Shift+S/C/P to (not grimblast), not a GUI editor, and
not bread-screenshots.
2026-08-15 21:36:05 +08:00

112 lines
3 KiB
Markdown

# breadshot
Wayland screenshot **orchestrator** for the bread ecosystem — not a GUI editor.
It shells out to `grim`, `slurp`, and `wl-copy` with Hyprland-aware geometry
resolution, clipboard integration, and desktop notifications.
This is a different job from `bread-screenshots` (the crate in
`bread-ecosystem`): that one is a capture harness for screenshotting sibling
apps in CI. Do not merge the two.
On BOS, Hyprland binds `Super+Shift+S` / `C` / `P` to breadshot (not grimblast):
| Bind | Action | Command |
|------|--------|---------|
| `Super+Shift+S` | Region → file (and clipboard) | `breadshot region` |
| `Super+Shift+C` | Region → clipboard only | `breadshot region --clipboard-only` |
| `Super+Shift+P` | Screen → file | `breadshot active-output` |
## Requirements
Required (must be in `$PATH`):
- `grim` — Wayland screenshot tool
- `slurp` — region/window selection
- `wl-copy` (wl-clipboard) — clipboard write
- `hyprctl` — Hyprland IPC (for window and monitor geometry)
Optional:
- `hyprpicker` — screen freeze during selection (`--freeze`)
- `notify-send` — desktop notifications (silently skipped if absent)
## Build and install
```sh
# build only
cargo build --release
# build and install to /usr/local/bin
make install
# install to a custom prefix
make install PREFIX=/usr
```
## Usage
```
breadshot <mode> [options]
```
### Modes
| Mode | Description |
|---|---|
| `region` | Interactive region selection |
| `window` | Click to select a window on the active workspaces |
| `output` | Click to select a monitor |
| `active-window` | Capture the currently focused window |
| `active-output` | Capture the monitor containing the active workspace |
### Options
| Flag | Short | Description |
|---|---|---|
| `--clipboard-only` | `-c` | Copy to clipboard only, do not save to disk |
| `--silent` | `-s` | Suppress notifications |
| `--freeze` | `-z` | Freeze screen during selection (requires `hyprpicker`) |
| `--output-dir <DIR>` | `-o` | Override the save directory from config |
| `--filename <NAME>` | `-f` | Override the output filename (without path) |
| `--config <FILE>` | | Use a specific config file |
### Examples
```sh
# interactive region selection, save and copy
breadshot region
# capture active window to clipboard only
breadshot active-window --clipboard-only
# region selection with screen frozen, saved to a custom path
breadshot region --freeze --output-dir ~/Desktop --filename capture.png
```
## Configuration
Config file: `~/.config/breadshot/config.toml`
All keys are optional. Missing keys fall back to the defaults shown below.
```toml
# Directory where screenshots are saved
save_dir = "~/Pictures/Screenshots"
# Suppress notifications globally
silent = false
# Freeze screen during selection by default (requires hyprpicker)
freeze = false
# Notification display duration in milliseconds
notif_timeout = 5000
# strftime format used to generate filenames
# Filename pattern: <date_format>_breadshot.png
date_format = "%Y-%m-%d-%H%M%S"
```
## License
MIT — see [LICENSE](LICENSE).