Initial ThinkPad Hyprland dotfiles
This commit is contained in:
128
config/hypr/Scripts/screenshot-menu.sh
Executable file
128
config/hypr/Scripts/screenshot-menu.sh
Executable file
@@ -0,0 +1,128 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
screenshot_dir="${XDG_PICTURES_DIR:-$HOME/Pictures}/Screenshots"
|
||||
|
||||
notify() {
|
||||
notify-send " Screenshot" "$1"
|
||||
}
|
||||
|
||||
require_cmd() {
|
||||
local cmd="$1"
|
||||
|
||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||
notify "$cmd ist nicht installiert."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
filename() {
|
||||
date +%Y-%m-%d_%H-%M-%S.png
|
||||
}
|
||||
|
||||
take_hyprshot() {
|
||||
local mode="$1"
|
||||
local name="$2"
|
||||
|
||||
require_cmd hyprshot
|
||||
mkdir -p "$screenshot_dir"
|
||||
hyprshot -m "$mode" -o "$screenshot_dir" -f "$name" -s
|
||||
printf '%s/%s\n' "$screenshot_dir" "$name"
|
||||
}
|
||||
|
||||
annotate_region() {
|
||||
local name path
|
||||
|
||||
require_cmd satty
|
||||
name="$(filename)"
|
||||
path="$(take_hyprshot region "$name")"
|
||||
satty --filename "$path" --output-filename "$path"
|
||||
}
|
||||
|
||||
quick_region() {
|
||||
local name
|
||||
|
||||
name="$(filename)"
|
||||
take_hyprshot region "$name" >/dev/null
|
||||
notify "Bereich gespeichert."
|
||||
}
|
||||
|
||||
quick_window() {
|
||||
local name
|
||||
|
||||
name="$(filename)"
|
||||
take_hyprshot window "$name" >/dev/null
|
||||
notify "Fenster gespeichert."
|
||||
}
|
||||
|
||||
quick_output() {
|
||||
local name
|
||||
|
||||
name="$(filename)"
|
||||
take_hyprshot output "$name" >/dev/null
|
||||
notify "Bildschirm gespeichert."
|
||||
}
|
||||
|
||||
copy_region() {
|
||||
require_cmd hyprshot
|
||||
hyprshot -m region --clipboard-only -s
|
||||
notify "Bereich in die Zwischenablage kopiert."
|
||||
}
|
||||
|
||||
show_menu() {
|
||||
require_cmd wofi
|
||||
|
||||
local choice
|
||||
choice="$(
|
||||
printf '%s\n' \
|
||||
" Bereich markieren" \
|
||||
" Bereich speichern" \
|
||||
" Fenster speichern" \
|
||||
" Bildschirm speichern" \
|
||||
" Bereich kopieren" |
|
||||
wofi --dmenu --prompt " Screenshot" --insensitive
|
||||
)"
|
||||
|
||||
case "$choice" in
|
||||
*"Bereich markieren"*)
|
||||
annotate_region
|
||||
;;
|
||||
*"Bereich speichern"*)
|
||||
quick_region
|
||||
;;
|
||||
*"Fenster speichern"*)
|
||||
quick_window
|
||||
;;
|
||||
*"Bildschirm speichern"*)
|
||||
quick_output
|
||||
;;
|
||||
*"Bereich kopieren"*)
|
||||
copy_region
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
case "${1:-menu}" in
|
||||
annotate-region)
|
||||
annotate_region
|
||||
;;
|
||||
region)
|
||||
quick_region
|
||||
;;
|
||||
window)
|
||||
quick_window
|
||||
;;
|
||||
output)
|
||||
quick_output
|
||||
;;
|
||||
copy-region)
|
||||
copy_region
|
||||
;;
|
||||
menu)
|
||||
show_menu
|
||||
;;
|
||||
*)
|
||||
notify "Unbekannter Screenshot-Modus: $1"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user