Отримайте слово під курсором у X11


9

Для деяких сценаріїв мені потрібно отримати слово, яке зараз знаходиться під курсором.

Може отримати xdotoolчи подібний інструмент?


Ви маєте на увазі вибране слово? Тоді так. (Але не xdotool)
— Яків Влійм

Відповіді:


10

Як отримати текст, який ви вибрали на даний момент

Ви можете отримати поточно вибраний текст за допомогою команди:

echo $(xclip -o -sel)

... але вам потрібно спочатку встановити xclip:

sudo apt-get install xclip

Від man xclip:

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

і:

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

Дивіться також тут , або, як завжди, man xclip.


EDIT

Вирішення проблем з останнім вибором

З коментаря я зрозумів, що xclipвидає останній вибір, навіть якщо вже нічого не вибрано (наприклад, коли файл закритий). Це, здається, є проблемою у вашій ситуації.

Хоча xselтакож є ця проблема, її можна вирішити: якщо ми зробимо ваш сценарій не тільки прочитати поточний вибір у сценарій, але і записати той самий вміст у файл. Потім ми можемо перевірити, чи відрізняється новий вибір від останнього. Якщо ні, то можна зробити висновок, що новий вибір не робиться, і команда, швидше за все, створює застарілий вибір. Потім ми можемо сказати сценарій пройти.

Приклад (використання xsel, яке має в цьому випадку невеликі переваги):

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

Не потрібно говорити, що вам потрібно буде встановити xsel:

sudo apt-get install xsel

Чи є спосіб це зробити без вибору?
— UniversallyUniqueID

1
@BharadwajRaju Це дійсно мене здивувало б, з яким поточним додатком спілкуватися? Ви б не знали! Це вимагатиме деякого глобального розпізнавання тексту щодо того, що відбувається на екрані. І навіть тоді .. Я не бачу, щоб це сталося.
— Яків Влійм

Чи є спосіб знайти, чи є якийсь текст на даний момент вибраний? Тому що навіть якщо такої немає, xclipповертає останній вибраний текст.
— UniversallyUniqueID

@BharadwajRaju дивись моє оновлення.
— Яків Влійм

Іноді (випадковим чином) воно повертається Error: Target STRING not availableі виходить.
— UniversallyUniqueID
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.