web-dev-qa-db-fra.com

Obtenir le mot sous le curseur dans X11

Pour certains scripts, je dois obtenir le mot actuellement sous le curseur.

xdotool ou un outil similaire peut-il l'obtenir?

8

Comment obtenir le texte sélectionné

Vous pouvez obtenir le texte actuellement sélectionné avec la commande suivante:

echo $(xclip -o -sel)

... mais vous devez d'abord installer xclip:

Sudo apt-get install xclip

De man xclip:

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

et:

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

Voir aussi ici ou, comme toujours, man xclip.


MODIFIER

Problèmes de contournement avec la dernière sélection

D’un commentaire, j’ai compris que xclip affiche la dernière sélection , même s’il n’ya plus rien de sélectionné (par exemple, lorsque le fichier est fermé) . Cela semble être un problème dans votre situation.

Bien que xsel ait également ce problème, il peut être résolu: si nous faisons en sorte que votre script ne lise pas seulement la sélection actuelle dans le script, mais également écrit le même contenu dans un fichier. Nous pouvons alors vérifier si une nouvelle sélection est différente de la dernière sélection. Sinon, nous pouvons conclure qu'aucune nouvelle sélection n'est faite et que la commande produit probablement une sélection obsolète. Nous pouvons alors dire au script de passer.

Un exemple (en utilisant xsel, qui présente de légers avantages dans ce cas):

#!/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

Pas besoin de dire que vous auriez besoin d'installer xsel:

Sudo apt-get install xsel
9
Jacob Vlijm