Files
PowerToys/src
Korb 97aeab4e96 [Shortcut Guide] Add support for Greenshot (#49407)
## Summary of the Pull Request

Adds a Shortcut Guide manifest for **Greenshot**.

- **New manifest:**
`src/modules/ShortcutGuide/ShortcutGuide.Ui/Assets/ShortcutGuide/Manifests/Greenshot.Greenshot.en-US.yml`:
32 shortcuts for `Greenshot.exe`, grouped into five sections:
* **Capture:** Capture region, Capture last region, Capture window,
Capture fullscreen, Capture Internet Explorer tab
* **While selecting a region:** switch region/window mode, select a
child window element, toggle magnifier, confirm selection, cancel
capture
* **Editor - draw:**
rectangle/ellipse/line/arrow/freehand/highlight/obfuscate/crop/text/selection
tools, enlarge screenshot, crop to visible elements, paste image from
clipboard
* **Editor - text:** insert line break, delete previous word, select all
text, finish editing
* **Editor - export:** save, save as, copy image to clipboard, print,
e-mail
- **No code changes.** The manifest is auto-included via the existing
`Manifests/*.yml` glob in `ShortcutGuide.Ui.csproj`.
- `BackgroundProcess: true`, matching the bundled PowerToys-itself
manifest, since Greenshot's core value is its global capture hotkeys,
which work regardless of the currently focused window.
- Introduces a `<PrtScn>` token for the Print Screen key (not previously
needed by any bundled manifest, since Greenshot's capture shortcuts are
all built around it) alongside the existing `<Space>`, `<Enter>`,
`<Esc>`, `<Backspace>`, `<PageDown>` named-key tokens.

## PR Checklist

- [ ] **Closes:** #ISSUE_NUMBER
- [ ] **Communication:** discussed in the linked issue
- [ ] **Tests:** N/A for data; relies on the existing manifest
deserialization path
- [x] **Localization:** all end-user-facing strings can be localized
- [ ] **Dev docs:** N/A, no schema changes
- [ ] **New binaries:** N/A
- [ ] **Documentation updated:** N/A
- [x] **Local run:** see issue screenshot

## Detailed Description of the Pull Request / Additional comments

The Shortcut Guide displays per-app shortcuts from YAML manifests,
matched to the foreground window (or shown continuously for background
processes) via `WindowFilter`/`BackgroundProcess`. Adding support for an
app is purely additive: drop a `<PackageName>.<locale>.yml` file in the
`Manifests` folder and it's picked up by the existing build glob and
index generator.

- `PackageName: Greenshot.Greenshot` is the WinGet package identifier;
`WindowFilter: "Greenshot.exe"` is the process name (confirmed against a
signed 1.3.315 build).
- `Name: Greenshot` is the display name shown in the Shortcut Guide app
picker.
- Shortcut names follow the repo's sentence-case convention (capitalize
only the first word plus proper nouns/product names).
- Five shortcuts are marked `Recommended`: Capture region, Capture last
region, Capture window, Save, Copy image to clipboard — the capture and
export actions used most often.
- Shortcut source: Greenshot's official help page
(https://getgreenshot.org/help/), cross-checked against the unofficial
`defkey.com` reference.

## Validation Steps Performed

- **Source fidelity:** every shortcut and modifier combination matches
the official Greenshot help page one-to-one; no unofficial-source
shortcuts were added without confirming them against the official page.

--- 

Closes #49406

---------

Co-authored-by: Korb <korwin+git@pm.me>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Muyuan Li <116717757+MuyuanMS@users.noreply.github.com>
2026-08-03 16:53:56 +02:00
..

PowerToys Source Code

Code organization

The PowerToys are split into DLLs for each PowerToy module (modules folder), and an executable (runner folder) that loads and manages those DLLs.

The settings window is a separate executable, contained in settings-ui folder. It utilizes a WebView to display an HTML-based settings window.

The common contains code for a static library with helper functions, used by both the runner and the PowerToys modules.