Obtenir un mot sous le curseur dans X11

9

Pour certains scripts, j'ai besoin de placer le mot actuellement sous le curseur.

Peut xdotoolou un outil similaire obtenir?

UniversallyUniqueID
la source
Voulez-vous dire le mot sélectionné ? Alors oui. (Mais pas xdotool)
Jacob Vlijm

Réponses:

10

Comment obtenir le texte actuellement sélectionné

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

echo $(xclip -o -sel)

... mais vous devez d' xclipabord installer :

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.


ÉDITER

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

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

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

Un exemple (utilisation 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

Inutile de dire que vous devez installer xsel:

sudo apt-get install xsel
Jacob Vlijm
la source
Existe-t-il un moyen de le faire sans sélection?
UniversallyUniqueID
1
@BharadwajRaju Cela me surprendrait vraiment, avec quelle application actuelle communiquer? Tu ne saurais pas! Cela nécessiterait une reconnaissance globale du texte sur ce qui se passe à l'écran. Et même alors .. je ne vois pas que cela se produise.
Jacob Vlijm
Existe-t-il un moyen de rechercher si un texte est actuellement sélectionné? Parce que même s'il n'y en a pas, xclipretourne le dernier texte sélectionné.
UniversallyUniqueID
@BharadwajRaju voir ma mise à jour.
Jacob Vlijm
Parfois (au hasard), il revient Error: Target STRING not availableet se termine.
UniversallyUniqueID