Cole texto para outro aplicativo a partir do script via atalho

2

Deixe-me descrever o que quero alcançar. Estamos usando a autenticação de dois fatores e eu gostaria de criar um script que irá gerar token TOTP para mim e colá-lo para digamos o Firefox em algum atalho. Então eu criei um script como este

#!/bin/sh

echo $(oathtool --totp some-seed)

No entanto, se eu atribuir um atalho para esse script, ele não poderá imprimir o PIN em outro local que não seja o console. Ok, eu sei que era ingênuo tentar, mas qual seria o melhor para alcançar meu objetivo?

    
por Petr Mensik 04.12.2014 / 16:58

4 respostas

3

Você pode usar xclip .

oathtool --totp some-seed | xclip

A saída do seu comando estará na seleção primária do X e você poderá colá-lo com um clique do meio.

Você também pode enviá-lo para a área de transferência para colar com Ctrl + V no Firefox:

some_command | xclip -selection clipboard

Ou use xdotool conforme explicado nesta pergunta

    
por 04.12.2014 / 17:16
1

Aqui está uma solução que funciona sem problemas.

Instale o script sendkeys aqui: link

Para o seu caso, faça o seguinte:

oathtool --totp some-seed | xargs sendkeys.sh 'Firefox'

Isso enviará a saída de oathtool para a janela aberta do Firefox.

O script procura janelas de acordo com seu título. Então, se você, digamos, quiser enviar seu script para o Libreoffice Writer, basta usar "Writer".

    
por 23.01.2015 / 14:38
1

A ação xbindkeys abaixo funciona sem mexer na área de transferência, utilizando o comando xvkbd.

xvkbd é um programa de teclado virtual (gráfico) para o X Window System.

xvkbd -xsendevent -text 'oathtool 00'
    
por 22.02.2015 / 11:56
0

Você pode combinar xbindkeys e xdotool para ligar uma chave para injetar a saída de um comando em qualquer aplicativo que tenha o foco. Escolha uma chave, por ex. Ctrl + Deslocamento + F1 , e coloque o seguinte no seu ~/.xbindkeysrc :

"xdotool type $(oathtool --totp some-seed)"
control+shift+F1

Você precisará iniciar o programa xbindkeys com sua sessão. Se você estiver usando um ambiente de área de trabalho, adicione-o aos programas de inicialização. Se você iniciar sua sessão a partir de um script como ~/.xinitrc , adicione xbindkeys lá.

    
por 05.12.2014 / 02:17