# ferrishot
**Repository Path**: mirrors/ferrishot
## Basic Information
- **Project Name**: ferrishot
- **Description**: ferrisshot 是使用 Rust 和 Iced 开发的跨平台命令行截屏工具,目前支持以下平台: Windows MacOS Linux (X11) Linux (Waylan
- **Primary Language**: Rust
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://www.oschina.net/p/ferrishot
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-25
- **Last Updated**: 2025-09-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
ferrishot
Powerful screenshot app written in Rust, inspired by flameshot.
## Showcase
## Features
Run by typing `ferrishot` on the command line.
### Basic usage
- Select a region on the screen by left clicking and dragging.
- Resize the region by dragging on any of the sides and dragging
- Move the region around by dragging in the center
The selected region is surrounded by buttons, each with their own keybinding. Most notably:
- `Enter` copies screenshot to clipboard
- `Ctrl s` saves screenshot to a file. You can choose any valid extension like `.png`, `.webp`, `.jpg`
- `Ctrl u` uploads the screenshot to the internet
Hold `Shift` while resizing to have much more granular control over the size of the region.
#### Image Uploaded
You get a link and a QR Code, so you can easily send it to another device!
### Size Indicator
In the bottom-right corner, is a small box showing the height and width of the selection.
You can manually edit it to set a specific size.
### Keyboard Control
Ferrishot can be fully keyboard controlled, with no mouse! You can select any region on the screen in just
8 keystrokes. Pick a top-left corner by typing `t`, and pick a bottom-right corner by typing `b`:
We also have vim motions! There is a cheatsheet available by pressing `?` to view the motions:

You can see all of the keybindings declared in the default config file [`default.kdl`](./default.kdl)
### Config
Ferrishot is very customizable! You have _full_ control over the UI, color scheme and keybindings.
Create the default config file `ferrishot.kdl` by doing `ferrishot --dump-default-config`.
For reference, see the [default config file (`default.kdl`)](./default.kdl) which contains comments describing each option.
### Command-line interface
Ferrishot is fantastic for usage in scripts. It can be fully controlled without launching a UI.
#### `ferrishot`
A powerful screenshot app
**Usage:** `ferrishot [OPTIONS]`
###### **Options:**
- `-r`, `--region ` — Open with a region pre-selected
Format: `x++`
Each value can be absolute.
- 550 for `x` means top-left corner starts after 550px
- 100 for `height` means it will be 100px tall
Each can also be relative to the height (for `y` and `height`) or width (for `width` and `x`)
- 0.2 for `width` means it region takes up 20% of the width of the image.
- 0.5 for `y` means the top-left corner will be at the vertical center
The format can also end with 1 or 2 percentages, which shifts the region relative to the region's size
- If `width` is `250`, end region with `+30%` to move right by 75px or `-40%` to move left by 100px
- Supplying 2 percentage at the end like `+30%-10%`, the 1st affects x-offset and the 2nd affects y-offset
With the above syntax, you can create all the regions you want.
- `100x1.0+0.5+0-50%`: Create a 100px wide, full height, horizontally centered region
- `1.0x1.0+0+0`: Create a region that spans the full screen. You can use alias `full` for this
- `-l`, `--last-region` — Use last region
- `-a`, `--accept-on-select ` — Accept capture and perform the action as soon as a selection is made
If holding `ctrl` while you are releasing the left mouse button on the first selection,
the behavior is cancelled
It's quite useful to run ferrishot, select a region and have it instantly be copied to the
clipboard for example. In 90% of situations you won't want to do much post-processing of
the region and this makes that experience twice as fast. You can always opt-out with `ctrl`
Using this option with `--region` or `--last-region` will run ferrishot in 'headless mode',
without making a new window.
Possible values:
- `copy`:
Copy image to the clipboard
- `save`:
Save image to a file
- `upload`:
Upload image to the internet
- `-d`, `--delay ` — Wait this long before launch
- `-s`, `--save-path ` — Instead of opening a file picker to save the screenshot, save it to this path instead
- `-D`, `--dump-default-config` — Write contents of the default config to /home/e/.config/ferrishot.kdl
- `-C`, `--config-file ` — Use the provided config file
Default value: `/home/e/.config/ferrishot.kdl`
- `-S`, `--silent` — Run in silent mode. Do not print anything
- `-j`, `--json` — Print in JSON format
## Platform Support
- [x] Windows
- [x] MacOS
- [x] Linux (X11)
- [x] Linux (Wayland)
## Roadmap
Ferrishot is under heavy development! At the moment the goal is to implement all the features that [flameshot](https://github.com/flameshot-org/flameshot) has, including more than that.
- [ ] Draw shapes on the image
- Square
- Circle
- Arrow
- Pen
- [ ] Draw text on the image
- [ ] Other effects
- Blur / pixelate
- Numbered circles
- [ ] Pin screenshot
- [ ] Color picker
- [ ] In-app tool editing
## Installation
### Homebrew
```sh
brew install nik-rev/tap/ferrishot
```
### PowerShell
```sh
powershell -ExecutionPolicy Bypass -c "irm https://github.com/nik-rev/ferrishot/releases/latest/download/ferrishot-installer.ps1 | iex"
```
### Shell
```sh
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/nik-rev/ferrishot/releases/latest/download/ferrishot-installer.sh | sh
```
### Nix
Add it to your `flake.nix`:
```nix
# add it to your inputs
inputs.ferrishot.url = "github:nik-rev/ferrishot/main";
# then use it in home-manager for example
inputs.ferrishot.packages.${pkgs.system}.default
```
### Arch AUR
```sh
yay -S ferrishot-bin
```
### Cargo
If you use Linux, see [`CONTRIBUTING.md`](./CONTRIBUTING.md) for details on which dependencies you will need
```sh
cargo install ferrishot
```
## Contributing
See [`CONTRIBUTING.md`](./CONTRIBUTING.md)