Ubuntu Screenshots automatisch in jpg konvertieren

(mit Hilfe von perplexity, aber da kam auch viel Mist)

  • sreenshots werden in jpg konvertiert
  • umbenannt
  • in die recently-used-Liste eingetragen
  • screenshots älter als 30d werden gelöscht
  • Benutzt das python-Skript $HOME/bin/gtk_recent (https://github.com/rbtylee/gtk_recent)

Bash-Skript $HOME/bin/screenshot2jpg.sh

#!/usr/bin/env bash
set -euo pipefail

ORDNER="$HOME/Bilder/Bildschirmfotos"
QUALITAET=85
SERVICE_TAG="screenshot-convert"

log() {
  logger -t "$SERVICE_TAG" "$1"
}

add_to_recent() {
  local file="$1"
  $HOME/bin/gtk_recent $0 $file
}

cleanup_old() {
  find "$ORDNER" -maxdepth 1 -type f \
    \( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' \) \
    -mtime +30 -delete
  log "Screenshots älter als 30 Tage gelöscht"
}

trap cleanup_old EXIT

log "Service gestartet"

inotifywait -m -e close_write,moved_to,create --format '%w%f' "$ORDNER" |
while IFS= read -r datei; do
  [[ -f "$datei" ]] || continue

  case "${datei,,}" in
    *.png)
      zeitstempel="$(date +%Y%m%d_%H%M%S)"
      ziel="$ORDNER/screenshot_${zeitstempel}.jpg"

      if command -v magick >/dev/null 2>&1; then
        magick "$datei" -quality "$QUALITAET" "$ziel"
      else
        convert "$datei" -quality "$QUALITAET" "$ziel"
      fi

      add_to_recent "$ziel"
      rm -f -- "$datei"
      log "Konvertiert, in Zuletzt benutzt eingetragen und gelöscht: $datei -> $ziel"
      ;;
  esac
done

Service-Datei $HOME/.config/systemd/user/screenshot2jpg.service

[Unit]
Description=PNG nach JPEG im Screenshot-Ordner konvertieren

[Service]
ExecStart=%h/bin/screenshot2jpg.sh
Restart=always
RestartSec=2

[Install]
WantedBy=default.target