feat(home): add satty for screenshot annotation
All checks were successful
Check / eval (push) Successful in 3m1s
All checks were successful
Check / eval (push) Successful in 3m1s
Added satty (Wayland-native screenshot annotation tool) and integrated it with the Capture flow. Wired `$mod SHIFT, Print` to slurp a region and open satty. Added "Annotate region" to the rofi Capture menu (Tools > Capture). Added satty's configuration via home-manager to inject the active theme's palette colors into its UI. Verified: V1 (flake check --no-build, home activation package build). Pending: V3 hardware/visual check for the satty UI (queued in HARDWARE-QUEUE.md).
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
./mime.nix # default applications (mimeapps.list), degrades with the suite
|
||||
./recording.nix # nomarchy-record: screen recording behind Capture + the bar ⏺
|
||||
./battery-notify.nix # low-battery toasts at the bar's 25/10% thresholds
|
||||
./satty.nix # satty screenshot annotation tool, themed
|
||||
];
|
||||
|
||||
# Clipboard history (wl-paste watcher); browsed via the SUPER+CTRL+V
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
{ mods = ""; key = "Print"; action = "exec, grim -g \"$(slurp)\" - | wl-copy"; desc = "Screenshot region → clipboard"; }
|
||||
{ mods = "SHIFT"; key = "Print"; action = "exec, f=$HOME/Pictures/Screenshots/$(date +%Y%m%d-%H%M%S).png; mkdir -p $HOME/Pictures/Screenshots && grim -g \"$(slurp)\" \"$f\" && notify-send \"Screenshot saved\" \"$f\""; desc = "Screenshot region → file"; }
|
||||
{ mods = "CTRL"; key = "Print"; action = "exec, f=$HOME/Pictures/Screenshots/$(date +%Y%m%d-%H%M%S).png; mkdir -p $HOME/Pictures/Screenshots && grim \"$f\" && notify-send \"Screenshot saved\" \"$f\""; desc = "Screenshot screen → file"; }
|
||||
{ mods = "$mod SHIFT"; key = "Print"; action = "exec, f=$HOME/Pictures/Screenshots/$(date +%Y%m%d-%H%M%S).png; mkdir -p $HOME/Pictures/Screenshots && grim -g \"$(slurp)\" - | satty --filename - --fullscreen --output-filename \"$f\""; desc = "Annotate region"; }
|
||||
];
|
||||
|
||||
# Rendered only when the session has >1 layout (a comma in
|
||||
|
||||
@@ -460,6 +460,7 @@ ${themeRows}
|
||||
choice=$( {
|
||||
row "Region → clipboard${hintForBind "" "Print"}" applets-screenshooter
|
||||
row "Region → file${hintForBind "SHIFT" "Print"}" applets-screenshooter
|
||||
command -v satty >/dev/null 2>&1 && row "Annotate region${hintForBind "$mod SHIFT" "Print"}" edit-image
|
||||
row "Full screen → clipboard" camera-photo
|
||||
row "Full screen → file${hintForBind "CTRL" "Print"}" camera-photo
|
||||
command -v tesseract >/dev/null 2>&1 && row "OCR region → clipboard" scanner
|
||||
@@ -482,6 +483,7 @@ ${themeRows}
|
||||
*"Region → clipboard"*) grim -g "$(slurp)" - | wl-copy ;;
|
||||
*"Region → file"*) mkdir -p "$dir"; grim -g "$(slurp)" "$file" \
|
||||
&& notify-send "Screenshot saved" "$file" ;;
|
||||
*"Annotate region"*) mkdir -p "$dir"; grim -g "$(slurp)" - | satty --filename - --fullscreen --output-filename "$file" ;;
|
||||
*"OCR region"*)
|
||||
# Select → screenshot → tesseract → clipboard. Esc in slurp
|
||||
# cancels silently (the recording.nix pattern); recognizing
|
||||
|
||||
31
modules/home/satty.nix
Normal file
31
modules/home/satty.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.nomarchy;
|
||||
t = cfg.theme;
|
||||
c = t.colors;
|
||||
in
|
||||
{
|
||||
config = lib.mkIf (pkgs.lib.meta.availableOn pkgs.stdenv.hostPlatform pkgs.satty) {
|
||||
home.packages = [ pkgs.satty ];
|
||||
|
||||
xdg.configFile."satty/config.toml".text = ''
|
||||
[general]
|
||||
# Set the default tool to pointer or arrow?
|
||||
initial-tool = "arrow"
|
||||
copy-command = "wl-copy"
|
||||
# Hitting copy also saves? Let the user hit save if they want to save.
|
||||
# save-after-copy = false
|
||||
|
||||
[color-palette]
|
||||
palette = [
|
||||
"${c.accent}ff",
|
||||
"${c.bad}ff",
|
||||
"${c.warn}ff",
|
||||
"${c.good}ff",
|
||||
"${c.text}ff",
|
||||
"${c.base}ff"
|
||||
]
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user