{pkgs, ...}: let # Screenshot script with swappy integration screenshot = pkgs.writeShellScriptBin "screenshot" '' #!/usr/bin/env bash case "$1" in region) # Select region and edit grim -g "$(slurp)" - | swappy -f - ;; window) # Screenshot active window grim -g "$(hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | swappy -f - ;; screen) # Screenshot current monitor grim -o "$(hyprctl -j monitors | jq -r '.[] | select(.focused) | .name')" - | swappy -f - ;; all) # Screenshot all monitors grim - | swappy -f - ;; region-save) # Quick region screenshot (save without editing and copy to clipboard) filepath=~/Pictures/Screenshots/$(date +'%Y-%m-%d_%H-%M-%S.png') grim -g "$(slurp)" "$filepath" wl-copy < "$filepath" notify-send "Screenshot saved" "Saved and copied to clipboard" ;; *) echo "Usage: screenshot {region|window|screen|all|region-save}" exit 1 ;; esac ''; in { home.packages = with pkgs; [ grim # Screenshot utility slurp # Region selector swappy # Annotation tool jq # For window selection wl-clipboard # For copying to clipboard screenshot # Our wrapper script ]; # Create Screenshots directory home.file."Pictures/Screenshots/.keep".text = ""; # Swappy configuration home.file.".config/swappy/config".text = '' [Default] save_dir=$HOME/Pictures/Screenshots save_filename_format=screenshot_%Y%m%d_%H%M%S.png show_panel=true line_size=5 text_size=20 text_font=sans-serif paint_mode=brush early_exit=false fill_shape=false ''; }