{"id":28089341,"url":"https://github.com/nik-rev/ferrishot","last_synced_at":"2025-05-13T12:57:06.156Z","repository":{"id":287483284,"uuid":"962961573","full_name":"nik-rev/ferrishot","owner":"nik-rev","description":"A powerful screenshot app written in Rust 📸🦀","archived":false,"fork":false,"pushed_at":"2025-05-09T11:44:29.000Z","size":1798,"stargazers_count":169,"open_issues_count":7,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-12T06:42:51.875Z","etag":null,"topics":["capture","cross-platform","flameshot","free-software","gnu-linux","gui","iced","image-editing","rust","screenshot"],"latest_commit_sha":null,"homepage":"https://ferrishot.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nik-rev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-09T00:13:07.000Z","updated_at":"2025-05-10T10:41:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"8080a9b1-d39d-463a-ac1a-b4a22bb9a793","html_url":"https://github.com/nik-rev/ferrishot","commit_stats":null,"previous_names":["nik-rev/ferrishot"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik-rev%2Fferrishot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik-rev%2Fferrishot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik-rev%2Fferrishot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nik-rev%2Fferrishot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nik-rev","download_url":"https://codeload.github.com/nik-rev/ferrishot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253948346,"owners_count":21988953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["capture","cross-platform","flameshot","free-software","gnu-linux","gui","iced","image-editing","rust","screenshot"],"created_at":"2025-05-13T12:57:05.651Z","updated_at":"2025-05-13T12:57:06.138Z","avatar_url":"https://github.com/nik-rev.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003ch1\u003e\n      \u003ca href=\"https://github.com/nik-rev/ferrishot\"\u003e\n        \u003cimg height=\"64px\" width=\"64px\" src=\"assets/icons/Ferrishot.svg\" /\u003e\n      \u003c/a\u003e\n      \u003cbr /\u003e\n      ferrishot\n    \u003c/h1\u003e\n    \u003ch4\u003ePowerful screenshot app written in Rust, inspired by \u003ca href=\"https://github.com/flameshot-org/flameshot\"\u003eflameshot\u003ca /\u003e.\u003c/h4\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/nik-rev/ferrishot/releases\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/release/nik-rev/ferrishot.svg\" alt=\"latest release\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://discord.gg/hvaNHymCVy\"\u003e\n      \u003cimg src=\"https://img.shields.io/discord/1366137972763787354?logo=discord\u0026logoColor=white\" alt=\"Chat on Discord\"\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Showcase\n\n\u003chttps://github.com/user-attachments/assets/ebbbfe85-b81e-4f26-9453-545dd1b2ce38\u003e\n\n## Features\n\nRun by typing `ferrishot` on the command line.\n\n### Basic usage\n\n- Select a region on the screen by left clicking and dragging.\n- Resize the region by dragging on any of the sides and dragging\n- Move the region around by dragging in the center\n\nThe selected region is surrounded by buttons, each with their own keybinding. Most notably:\n\n- `Enter` copies screenshot to clipboard\n- `Ctrl s` saves screenshot to a file. You can choose any valid extension like `.png`, `.webp`, `.jpg`\n- `Ctrl u` uploads the screenshot to the internet\n\nHold `Shift` while resizing to have much more granular control over the size of the region.\n\n#### Image Uploaded\n\nYou get a link and a QR Code, so you can easily send it to another device!\n\n\u003cimg height=\"400px\" src=\"assets/image_uploaded_online.webp\" /\u003e\n\n### Size Indicator\n\nIn the bottom-right corner, is a small box showing the height and width of the selection.\nYou can manually edit it to set a specific size.\n\n### Keyboard Control\n\nFerrishot can be fully keyboard controlled, with no mouse! You can select any region on the screen in just\n8 keystrokes. Pick a top-left corner by typing `t`, and pick a bottom-right corner by typing `b`:\n\n\u003chttps://github.com/user-attachments/assets/7b013780-4213-4770-bbb4-6c9c8a383eb3\u003e\n\nWe also have vim motions! There is a cheatsheet available by pressing `?` to view the motions:\n\n![cheatsheet](./assets/cheatsheet.webp)\n\nYou can see all of the keybindings declared in the default config file [`default.kdl`](./default.kdl)\n\n### Config\n\nFerrishot is very customizable! You have _full_ control over the UI, color scheme and keybindings.\n\nCreate the default config file `ferrishot.kdl` by doing `ferrishot --dump-default-config`.\n\nFor reference, see the [default config file (`default.kdl`)](./default.kdl) which contains comments describing each option.\n\n### Command-line interface\n\nFerrishot is fantastic for usage in scripts. It can be fully controlled without launching a UI.\n\n#### `ferrishot`\n\nA powerful screenshot app\n\n**Usage:** `ferrishot [OPTIONS]`\n\n###### **Options:**\n\n- `-r`, `--region \u003cWxH+X+Y\u003e` — Open with a region pre-selected\n\n  Format: `\u003cwidth\u003ex\u003cheight\u003e+\u003ctop-left-x\u003e+\u003ctop-left-y\u003e`\n\n  Each value can be absolute.\n\n  - 550 for `x` means top-left corner starts after 550px\n  - 100 for `height` means it will be 100px tall\n\n  Each can also be relative to the height (for `y` and `height`) or width (for `width` and `x`)\n\n  - 0.2 for `width` means it region takes up 20% of the width of the image.\n  - 0.5 for `y` means the top-left corner will be at the vertical center\n\n  The format can also end with 1 or 2 percentages, which shifts the region relative to the region's size\n\n  - If `width` is `250`, end region with `+30%` to move right by 75px or `-40%` to move left by 100px\n  - Supplying 2 percentage at the end like `+30%-10%`, the 1st affects x-offset and the 2nd affects y-offset\n\n  With the above syntax, you can create all the regions you want.\n\n  - `100x1.0+0.5+0-50%`: Create a 100px wide, full height, horizontally centered region\n  - `1.0x1.0+0+0`: Create a region that spans the full screen. You can use alias `full` for this\n\n- `-l`, `--last-region` — Use last region\n- `-a`, `--accept-on-select \u003cACTION\u003e` — Accept capture and perform the action as soon as a selection is made\n\n  If holding `ctrl` while you are releasing the left mouse button on the first selection,\n  the behavior is cancelled\n\n  It's quite useful to run ferrishot, select a region and have it instantly be copied to the\n  clipboard for example. In 90% of situations you won't want to do much post-processing of\n  the region and this makes that experience twice as fast. You can always opt-out with `ctrl`\n\n  Using this option with `--region` or `--last-region` will run ferrishot in 'headless mode',\n  without making a new window.\n\n  Possible values:\n\n  - `copy`:\n    Copy image to the clipboard\n  - `save`:\n    Save image to a file\n  - `upload`:\n    Upload image to the internet\n\n- `-d`, `--delay \u003cMILLISECONDS\u003e` — Wait this long before launch\n- `-s`, `--save-path \u003cPATH\u003e` — Instead of opening a file picker to save the screenshot, save it to this path instead\n- `-D`, `--dump-default-config` — Write contents of the default config to /home/e/.config/ferrishot.kdl\n- `-C`, `--config-file \u003cFILE.KDL\u003e` — Use the provided config file\n\n  Default value: `/home/e/.config/ferrishot.kdl`\n\n- `-S`, `--silent` — Run in silent mode. Do not print anything\n- `-j`, `--json` — Print in JSON format\n\n## Platform Support\n\n- [x] Windows\n- [x] MacOS\n- [x] Linux (X11)\n- [x] Linux (Wayland)\n\n## Roadmap\n\nFerrishot 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.\n\n- [ ] Draw shapes on the image\n  - Square\n  - Circle\n  - Arrow\n  - Pen\n- [ ] Draw text on the image\n- [ ] Other effects\n  - Blur / pixelate\n  - Numbered circles\n- [ ] Pin screenshot\n- [ ] Color picker\n- [ ] In-app tool editing\n\n## Installation\n\n### Homebrew\n\n```sh\nbrew install nik-rev/tap/ferrishot\n```\n\n### PowerShell\n\n```sh\npowershell -ExecutionPolicy Bypass -c \"irm https://github.com/nik-rev/ferrishot/releases/latest/download/ferrishot-installer.ps1 | iex\"\n```\n\n### Shell\n\n```sh\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/nik-rev/ferrishot/releases/latest/download/ferrishot-installer.sh | sh\n```\n\n### Nix\n\nAdd it to your `flake.nix`:\n\n```nix\n# add it to your inputs\ninputs.ferrishot.url = \"github:nik-rev/ferrishot/main\";\n# then use it in home-manager for example\ninputs.ferrishot.packages.${pkgs.system}.default\n```\n\n### Arch AUR\n\n```sh\nyay -S ferrishot-bin\n```\n\n### Cargo\n\nIf you use Linux, see [`CONTRIBUTING.md`](./CONTRIBUTING.md) for details on which dependencies you will need.\n\n```sh\ncargo install ferrishot\n```\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnik-rev%2Fferrishot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnik-rev%2Fferrishot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnik-rev%2Fferrishot/lists"}