Xsel-Tools

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Man kennt das: man kennt ein Wort nicht und möchte es in Wikipedia nachschlagen, oder in Google danach suchen bzw. es in leo.dict.org übersetzen lassen. Mit Hilfe dieser Skripte kann man mittels Tastenkombination dieses automatisieren:

  • das Wort "highlighten"
  • Tastenkombination
  • der Browser öffnet das entsprechende Tab mit dem richtigen Suchbegriff
  • ist die XSel leer, dann öffnet sich ein Eingabefenster

Benötigt werden die Pakete xsel und zenity. Die Tastenkombination zum Auslösen können dann im KDE-Kontrollcenter eingestellt werden.

Hier das Skript für eine Google-Suche: (absolute Pfade müssen angepasst werden)

#!/bin/bash

x=`xsel -o | sed -e "s/ /+/g"` # xsel -o: Auslesen X-Selection, sed ersetzen von Leerzeichen durch +

if [ $x != "" ] # wenn X-Selection leer ist, Eingabeskript im Terminal aufrufen, sonst Übergabe an Firefox
    then
        firefox "http://www.google.de/search?hl=de&q=$x"
     else
        exec /data/Batch/Linux/google_input.sh
fi


dazu gehört das Skript google_input, falls die XSel leer ist:

#!/bin/bash
# Dieses Skript liest die Eingabe von der Tastatur und sucht nacht diesem
# Wort in Google

#echo "Gib Suchbegriff(e) für Google:"
#echo
#read text
text=`zenity --entry --text "Gib Suchbegriff für Google" --title "Abfragefenster"` || exit 1

firefox "http://www.google.de/search?hl=de&q="`echo $text | sed -e "s/ /+/g"`&

Ich habe auf der Tastenkombination Win+Ö die Google-Suche und Win+Alt+Ö das Input-Skript gelegt, weil man nicht immer sicher gehen kann, dass die XSel auch wirklich leer ist.

Hier alle Skripte nochmal zum Herunterladen, inkl. Wikipedia und Leo.dict.org: snippet_xseltools.tar (10.24 Kb)

Version 2

Nachdem ich (Didi) momentan ein wenig mit der ZShell rumspiele habe ich das ganze nochmal in einem einzigen Script und mit dmenu als Eingabemethode geschrieben, aber es ist recht einfach dmenu z.b mit zenity zu ersetzen.

Kommandozeilenoptionen

ption Wirkung
-x die xselection wird ignoriert
-s <searchengine> man wird nicht nach der Suchmaschine gefragt, sondern die Angegebene benutzt
#!/bin/zsh

setopt shwordsplit

XSEL='xsel -o'
BROWSER='firefox'

rinput() {
  dmenu -b  -sf '#eee' -sb '#567' -nf '#bbb' -nb '#222' -p "$1" | tr -d '\
'
}

while getopts xs: opt; do
  case $opt in
    (x)
      xclip="no"
      ;;
    (s)
      engine=$OPTARG
      ;;
    (\\?)
      print "Bad option $opt"
      return 1
      ;;
  esac
done

# Init the engines
# Enginge: engines[$label]='searchurl'
# Searchurl: must be in singlequotes and $x is replaced by keywords

typeset -A engines

engines[google]='http://www.google.de/search?hl=de&q=$x'
engines[leo]='http://dict.leo.org/ende?search=$x'
engines[wikipedia]='http://www.google.de/search?hl=de&q=$x&domains=http://de.wikipedia.org&sitesearch=http://de.wikipedia.org'

# Read the X selection

if [[ $xclip != "no" ]]; then
 x=$($XSEL | sed 's/ /+/g')
fi

while [[ -z "$engines[$engine]" ]]; do
  engine=$(print -l ${(k)engines} | rinput "Search Engine>")
done

if [[ $x == "" ]]; then
 x=$(echo |rinput "Keyword>" |sed 's/ /+/g;')
fi

url=$( sed 's/\\$x/'$x'/g' <<< "$engines[$engine]")

command $BROWSER "$url" &