DevSecOps

15 abr, 2014

Poupe tempo em tarefas de rotina no ambiente Linux

Publicidade

Se você deseja aumentar a eficiência do seu trabalho diário, feito no computador, a sua prioridade número 1 deve ser automatizar as tarefas rotineiras. O utilitário AutoKey é perfeito para realizar este trabalho.

À primeira vista, este utilitário se parece mais com um expansor de textos. Mas ao conhecê-lo melhor, vai ser possível ver que ele tem muitos talentos. Com este aplicativo, é possível automatizar virtualmente qualquer tarefa em seu ambiente gráfico. Desde a expansão de abreviações a operações complexas de formatação de texto. Isto te parece interessante? Continue lendo, então.

Começando a usar o AutoKey

O software aqui é escrito em Python e seu código-fonte é distribuído em um pacote que pode ser facilmente construído nas distribuições baseadas no Debian.

Se você estiver usando o Ubuntu ou um de seus derivados, instalar o AutoKey é fácil através da sua PPA que contém os binários. Neste caso, é fácil instalar o programa de dentro de um terminal, com três comandos simples:

$ sudo add‐apt‐repository ppa:cdekter/ppa
 $ sudo apt‐get update
 $ sudo install autokey‐gtk

Se você estiver usando alguma variante do Ubuntu baseada no KDE, então o ideal é instalar o pacote autokey-qt, em vez do autokey-gtk.

Tal como qualquer nova instalação de um software, é bom fazer alguns ajustes antes de partir para o uso prático. Para tanto, execute o AutoKey e, no menu, selecione Edit / Preferences. Uma série de opções úteis está dentro da seção General. Muitas delas são autoexplicativas, de forma que você pode facilmente descobrir quais vai querer habilitar ou não.

figura100

Na seção Special Hotkeys, você pode mudar os atalhos-padrão de teclado, tais como o que habilita a monitoração, o que mostra a janela principal do AutoKey e o que mostra um menu com a lista de abreviações.

O AutoKey pode lidar com scripts Python (e vamos falar disto mais tarde) e, se você quiser usar módulos Python em seus scripts, pode especificar o diretório em que estes se encontram na seção Script Engine. Qualquer módulo Python que você puser neste diretório ficará disponível para importação em seus scripts.

Por fim, a seção Interface permite selecionar o método a partir do qual o AutoKey irá receber as entradas do teclado e mouse. Na maioria dos casos o método padrão, X Record, funciona muito bem. Mas, se os atalhos de teclado (hotkeys) e as abreviações não estiverem respondendo bem, você pode experimentar outros métodos.

Uma vez ajustado o AutoKey, de acordo com as suas necessidades, você pode começar a povoá-lo com frases e scripts. Vamos começar com uma abreviação que se expande para uma assinatura.

Para manter as coisas organizadas, o AutoKey permite agrupar as entradas em pastas. Portanto, é uma boa ideia criar uma pasta separada para as suas frases. Para isto, selecione File / Create / New Top-Level Folder e dê um nome pra pasta. Ao selecionar a pasta, você pode ajustar sua configuração no painel Folder Settings. Habilite a opção Show in tray menu, por exemplo, para ter acesso a este item a partir do ícone do AutoKey. Se você atribuir uma hotkey à pasta, estas opções ficarão mais facilmente disponíveis.

O próximo passo é adicionar uma frase. Clique com o botão direito do mouse sobre a pasta recém-criada, selecione o item New Phrase no menu de contexto e dê um nome à nova entrada. No painel à direita, digite toda a sua assinatura.

figura2

Agora, você deve especificar as configurações da frase. Habilite a opção Show in tray menu, se desejar acessar a frase a partir do ícone de menu na bandeja do sistema. Habilite a opção Always prompt before pasting this phrase, caso queira confirmar sempre antes de inserir a frase. É possível especificar a maneira como o AutoKey insere a frase, usando a lista de opções Paste using.

Agora você vai precisar especificar o método que vai disparar a frase. O mais comum é atribuir uma abreviação à frase. Assim, toda vez em que a abreviação for detectada, o AutoKey automaticamente a expande pra frase apropriada. Para fazer isto, pressione o botão Set, ao lado da coluna Abbreviation e forneça a string abreviada no campo Abbreviation (ass, por exemplo).

Na caixa de diálogo Set Abbreviation, você pode ativar outras opções bastante úteis. Por exemplo, caso você use um caractere de espaço como gatilho pra disparar a abreviação, você vai querer ativar a opção Omit trigger character, que vai remover automaticamente o espaço em branco. E, para disparar a abreviação sem usar nenhum caractere de gatilho especial, habilite a opção Trigger immediately.

figura3

Uma outra possibilidade é usar uma combinação de teclas, como gatilho, para disparar a sua abreviação. Para atribuir uma combinação a esta ação, pressione o botão Set na coluna Hotkey e especifique a combinação de teclas desejada.

Por padrão, a frase pode ser disparada em qualquer janela que estiver ativa no momento. Mas o Autokey também permite especificar um, assim chamado, filtro de janela que vai acionar o gatilho apenas se o nome da janela ativa corresponder ao padrão especificado. Por exemplo, se você quiser que o gatilho do AutoKey seja acionado apenas dentro do editor Gedit, especifique o filtro .*gedit. Tal como pode ser visto, os filtros de janelas se baseiam em expressões regulares.

figura4

Uma vez feitos todos os ajustes, pressione o botão Save, no canto inferior, e teste as frases criadas.

Usando scripts Python no AutoKey

Além da habilidade de inserir texto pré-definido e expandir abreviações, o AutoKey pode lidar com os scripts Python, que abrem um mundo novo às possibilidades de automação no desktop.

Ainda que você não seja um expert em programação Python, você pode facilmente criar scripts que são verdadeiros poupadores de tempo. Por exemplo, você pode criar um script de uma linha em Python que lança um dos seus aplicativos mais usados. Para isto, crie uma nova pasta no AutoKey para usar com seus scripts e selecione File / Create / New Script e digite a seguinte linha:

system.exec_command("digikam", False)

Atribua uma combinação de teclas ao script criado e, daqui pra frente, você poderá lançar o aplicativo digiKam, fazendo uso do atalho de teclado que você mesmo especificou.

figura5

De modo similar, você pode criar scripts para outros aplicativos. Indo mais longe, você pode criar um lançador de aplicativos. Para isto, crie um novo script e digite o código abaixo:

items = ["chromium‐browser", "gnome‐terminal", "digikam"]
 retCode, choice = dialog.list_menu(items)
 if retCode == 0:
 system.exec_command(choice, False)

A primeira linha do código especifica os itens selecionáveis e você pode adicionar quantos mais itens necessitar. A segunda linha ordena a exibição de uma lista de itens selecionáveis.

Quando o usuário seleciona um item da lista e pressiona OK, o item selecionado é, então, passado para o script, que executa o aplicativo selecionado.

Você pode fazer algumas outras coisas legais, fazendo uso dos scripts no AutoKey. Que tal um que permita pesquisar uma palavra usando o serviço Google Define? Você pode fazê-lo no AutoKey, com o seguinte código:

 import webbrowser
 word = clipboard.get_selection()
 webbrowser.open("http://google.com/search?q=define:"+word)

O script usa a rotina clipboard.get_selection para obter a seleção da área de transferência, que é repassada como parte de uma URL à função webbrowser.open. Este mesmo script pode ser adaptado a outros serviços, com uma simples substituição da URL. Por exemplo, você pode usar a URL aqui para procurar palavras na WordNet:

webbrowser.open( "http://wordnetweb.princeton.edu/perl/webwn?s="+word)

O script em questão permite pesquisar palavras selecionadas, mas você o pode modificar para que ele peça a palavra a ser pesquisada, usando a rotina dialog.input_dialog:

 import webbrowser
 retCode, word = dialog.input_dialog("Enter word", "Enter the word you want to look up")
 webbrowser.open("http://google.com/search?q=define:”+word)

E aqui vai outro script simples que cola o texto selecionado em um documento, já aberto, do LibreOffice:

 text = clipboard.get_selection()
 #window.activate(“LibreOffice” )
 #keyboard.send_keys(text+”<enter>” )
 if window.wait_for_focus(“.*LibreOffice.*” ):
 keyboard.send_keys(“<ctrl>+n” )
 keyboard.send_keys(text+”<enter>” )

Você precisa substituir certos caracteres em um determinado fragmento de texto?

Aqui vai um script que faz o serviço:

def specialchar(rstr):
 rstr=rstr.replace("\'", "&#8217;" )
 rstr=rstr.replace("»", "&#187;" )
 rstr=rstr.replace("‐‐", "&#151;" )
 return rstr
 text = clipboard.get_selection()
 rtext = specialchar(text)
 keyboard.send_keys(rtext)

figura6

Este script substitui os caracteres especiais por seus códigos em HTML, mas você pode, facilmente, adaptá-lo para executar outras tarefas.

Finalmente, a listagem 1 mostra um script mais complexo, que eu tirei do Grupo de Usuários do AutoKey do Google. Tal como você já deve ter deduzido, se analisou o código, o script encurta certa URL usando o serviço de encurtamento is.dg.

O AutoKey também permite gravar macros, o que provê uma forma de criar scripts através da gravação das teclas pressionadas no teclado e das ações do mouse. Simplesmente crie uma nova entrada de script, clique no botão Record e o AutoKey irá gravar suas ações.

figura7

Uma vez povoado o AutoKey com scripts e frases, você vai querer fazer uma cópia de segurança de todas as entradas. O AutoKey guarda seus dados no arquivo  ~/.config/autokey/autotokey.json. Ao fazer backup deste arquivo, os seus dados estarão a salvo.

Conclusão

O AutoKey é uma ferramenta necessária a qualquer um que queira automatizar as tarefas tediosas do dia a dia no uso do computador. Para obter o máximo deste utilitário, você precisa ter um maior conhecimento de Python. Mas, ainda que programação não seja o seu lado forte, o AutoKey é útil em uma série de situações. Dê-lhe uma chance e você, provavelmente, irá acabar por incorporá-lo ao seu arsenal de ferramentas de produtividade.

Listagem 1

1  import urllib, urllib2, urlparse, httplib
2  def query(url):
3  shortener = ‘is.gd’
4  service = ‘/api.php?longurl=’
5  c = httplib.HTTPConnection(shortener)
6  c.request(“GET”, service + urllib.quote(url))
7  r = c.getresponse()
8  shorturl = r.read().strip()
9  if (“Error” not in shorturl) and (“http://” + urlparse.urlparse(shortener) [1] in shorturl):
10  return shorturl
11  else:
12  raise IOError
13  long = clipboard.get_selection()
14  short = query(long)
15  keyboard.send_keys(short)

***

Artigo originalmente publicado na Linux Magazine: http://www.linuxnewmedia.com.br/lm/materia/poupe_tempo_em_tarefas_de_rotina