Holen Sie sich Wort unter Cursor in X11

9

Für einige Skripte muss ich das Wort aktuell unter dem Cursor haben.

Kann xdotooloder ein ähnliches Tool es bekommen?

UniversallyUniqueID
quelle
Meinst du ausgewähltes Wort? Dann ja. (Aber nicht xdotool)
Jacob Vlijm

Antworten:

10

So erhalten Sie den aktuell ausgewählten Text

Sie können den aktuell ausgewählten Text mit dem folgenden Befehl abrufen:

echo $(xclip -o -sel)

... aber Sie müssen xclipzuerst installieren :

sudo apt-get install xclip

Von man xclip:

-o, -out
    prints the selection to standard out (generally for piping to a file or program) 

und:

-selection
    specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD

Siehe auch hier oder wie immer man xclip.


BEARBEITEN

Problemumgehung bei der letzten Auswahl

Aus einem Kommentar habe ich verstanden, dass xclipdie letzte Auswahl ausgegeben wird, auch wenn nichts mehr ausgewählt ist (z. B. wenn die Datei geschlossen ist). Das scheint ein Problem in Ihrer Situation zu sein.

Obwohl es xselauch dieses Problem gibt, kann es umgangen werden: Wenn wir Ihr Skript dazu bringen, nicht nur die aktuelle Auswahl in das Skript zu lesen, sondern auch den gleichen Inhalt in eine Datei zu schreiben. Wir können dann prüfen, ob sich die neue Auswahl von der letzten Auswahl unterscheidet. Wenn nicht, können wir daraus schließen, dass keine neue Auswahl getroffen wird und der Befehl höchstwahrscheinlich eine veraltete Auswahl erzeugt. Wir können dann das Skript anweisen, zu bestehen.

Ein Beispiel (mit xsel, was in diesem Fall leichte Vorteile hat):

#!/bin/bash

# make sure the file to store the last selection exists
f=~/.old_sel
touch $f
# get the previous & current selection
old=$(cat "$f"); new=$(xsel -o)

if [ "$old" != "$new" ]; then
  # if selection changed, store the new selection to remember
  echo "$new" > "$f"
  # do the action, whatever that may be
  echo $new
fi

Sie müssen nicht sagen, dass Sie Folgendes installieren müssen xsel:

sudo apt-get install xsel
Jacob Vlijm
quelle
Gibt es eine Möglichkeit, dies ohne Auswahl zu tun?
UniversallyUniqueID
1
@ BharadwajRaju Das würde mich wirklich überraschen, mit welcher aktuellen Anwendung soll kommuniziert werden? Du würdest es nicht wissen! Es würde eine globale Texterkennung erfordern, was auf dem Bildschirm passiert. Und selbst dann ... ich sehe es nicht.
Jacob Vlijm
Gibt es eine Möglichkeit, festzustellen, ob derzeit Text ausgewählt ist? Denn selbst wenn es keine xclipgibt, wird der zuletzt ausgewählte Text zurückgegeben.
UniversallyUniqueID
@ BharadwajRaju siehe mein Update.
Jacob Vlijm
Manchmal (zufällig) kehrt es zurück Error: Target STRING not availableund wird beendet.
UniversallyUniqueID