Acessar o texto destacado do script?

Acessar o texto destacado do script?

É possível acessar o texto destacado através de um script de shell?

Quero criar um atalho de teclado para usar 'espeak' para ler o texto destacado.

Responder1

Sim, isso é relativamente fácil, existem muitas ferramentas para manipulação da área de transferência, eu as usei para preencher o registro de dispositivos Apple e verificação de e-mail junto com xdotool… muito mais fácil do que preencher o formulário 1000 vezes…

Então, configure um atalho para ser/home/bob/bin/speak.sh

speak.sh:

#!/bin/bash

xclip -o | xclip -selection clipboard -i
xclip -o | espeak

Responder2

resumindo: normalmente você não pode fazer isso (a menos que a seleção tenha sido copiada para a área de transferência)

longo: existem alguns casos especiais, por exemplo, o xterm possui um recurso que (normalmente está desabilitado) permite que uma aplicação leia o texto selecionado através de uma sequência de escape. Isso está descrito emSequências de controle XTerm:

        Ps = 5 2  -> Manipulate Selection Data.  These controls may
      be disabled using the allowWindowOps resource.  The parameter
      Pt is parsed as
           Pc; Pd
      The first, Pc, may contain zero or more characters from the
      set c  p  s  0  1  2  3  4  5  6  7 .  It is used to construct
      a list of selection parameters for clipboard, primary, select,
      or cut buffers 0 through 7 respectively, in the order given.
      If the parameter is empty, xterm uses s 0 , to specify the
      configurable primary/clipboard selection and cut buffer 0.
      The second parameter, Pd, gives the selection data.  Normally
      this is a string encoded in base64.  The data becomes the new
      selection, which is then available for pasting by other appli-
      cations.
      If the second parameter is a ? , xterm replies to the host
      with the selection data encoded using the same protocol.
      If the second parameter is neither a base64 string nor ? ,
      then the selection is cleared.

Isto é, se opermitirWindowOpsrecurso está ativado, um aplicativo pode fazer algo como

printf '\033]52;s;?\007'

e leia os dados de seleção como uma string base64. Mas esse é um caso especial.

É claro que alguns aplicativos são copiados para a área de transferência (consulte FAQ), mas não todos. Por exemplo, rxvt, etc., use a seleção primária. Não existe uma solução que funcione em qualquer lugar.

Leitura adicional:

informação relacionada