Advertisement
Guest User

Klipper-Replace-Text.bash

a guest
Aug 31st, 2011
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.43 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. # Ersetze den übergebenen Text aus der Zwischenablage mit
  4. # einem neuen Text.
  5. # Bsp.: Mache aus "SgDuH" "Sehr geehrte Damen und Herren"
  6.  
  7. # Datei mit den Kurz- und Langtexten
  8. replace_db="$HOME/var/klipper-replace-text.txt"
  9.  
  10. # Das Script wird von Klipper aufgerufen, wenn irgendein Prefix
  11. # in die Zwischenablage kopiert wurde. Dieser Prefix ist abzuschneiden.
  12. prefix=",,,"
  13.  
  14. # Holen:
  15. # qdbus org.kde.klipper /klipper  org.kde.klipper.klipper.getClipboardContents
  16. # Setzen:
  17. # qdbus org.kde.klipper /klipper  org.kde.klipper.klipper.setClipboardContents Klipper-Replace-Text
  18.  
  19. # Wurde Text auf der Kommandozeile uebergeben?
  20. if [[ "$#" -eq 0 ]]; then
  21.   # Hole Text aus der Zwischenablage
  22.   clip=$( qdbus org.kde.klipper /klipper org.kde.klipper.klipper.getClipboardContents )
  23. else
  24.   # Text von der Kommandozeile nehmen
  25.   clip="$@"
  26. fi
  27.  
  28. # Entferne prefix vom clip
  29. clip_clean=${clip#$prefix}
  30. # Mache den Text "safe"
  31. clip_quoted=$( printf "%q" "$clip_clean" )
  32.  
  33. # Suche in der "DatenbanK"
  34. replace=$( awk -F'°' "/^${clip_quoted}/ "'{print $2}' "$replace_db" 2> /dev/null )
  35.  
  36. # Was gefunden?
  37. [[ -z "$replace" ]] && exit 1
  38.  
  39. # Expandiere evtl. vorhandene Backslash Sequenzen (\n -> Zeilenumbruch)
  40. replace_bs=$( printf "%b" "$replace" )
  41.  
  42. # Speichere in Zwischenablage
  43. qdbus org.kde.klipper /klipper org.kde.klipper.klipper.setClipboardContents "$replace_bs" > /dev/null 2>&1
  44. printf "%s\n" "$replace_bs"
  45.  
  46. exit $?
  47. # EOF #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement