Para algunas secuencias de comandos, necesito obtener la palabra actualmente debajo del cursor.
¿Puede xdotool
o una herramienta similar obtenerlo?
Para algunas secuencias de comandos, necesito obtener la palabra actualmente debajo del cursor.
¿Puede xdotool
o una herramienta similar obtenerlo?
Respuestas:
Puede obtener el texto seleccionado actualmente con el comando:
echo $(xclip -o -sel)
... pero xclip
primero deberías instalar :
sudo apt-get install xclip
De man xclip
:
-o, -out
prints the selection to standard out (generally for piping to a file or program)
y:
-selection
specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
Ver también aquí o, como siempre man xclip
,.
De un comentario, entendí que xclip
genera la última selección, incluso si ya no hay nada seleccionado (por ejemplo, cuando el archivo está cerrado). Eso parece ser un problema en su situación.
Aunque xsel
también tiene este problema, se puede solucionar: si hacemos que su script no solo lea la selección actual en el script, sino que también escriba el mismo contenido en un archivo. Luego podemos verificar si la nueva selección es diferente de la última selección. Si no, podemos concluir que no se realiza una nueva selección, y el comando probablemente produce una selección desactualizada. Entonces podemos decirle al script que pase.
Un ejemplo (usando xsel
, que tiene ligeras ventajas en este caso):
#!/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
No es necesario decir que necesitaría instalar xsel
:
sudo apt-get install xsel
xclip
devuelve el último texto seleccionado.
Error: Target STRING not available
y sale.