sexta-feira, 29 de janeiro de 2010

Wish + Interpretador de comandos do linux para criação de janelas em interface gráfica

Um dia fiz um concurso e na prova caiu a pergunta: "Para que serve o comando wish?".
Chutei e acertei! Estou escrevendo esse artigo pois não acho muito pela Internet a explicação sobre esse comando, somente o man, que também não explica muito sobre sua funcionalidade.


[O que é o Wish]
Wish é um comando para criação de janelas para seus scripts feito em bash. Na verdade, o wish é um interpretador de comandos TCL/TK. Se quer saber como utilizar o wish, pesquise sobre TCL/TK, se pesquisar somente sobre o wish não encontrará muita coisa.


[TCL e TK]
TCL é uma linguagem de programação e o TK é um conjunto de funções gráficas para o TCL (criação de botões, labels, select, ...).


[Exemplo de aplicação]
Recentemente tive o seguinte problema: "rdesktop - Como utiliza-lo com interface gráfica?"
Utilizo muito o rdesktop para logar nos servidores Windows. O ruim é que esse é um programa de linha de comando, queria que ele fosse ativado com um clique em um ícone, mas como informar o endereço do servidor que quero logar? Se simplesmente fizer um script que chama o rdesktop não vai dar certo pois você precisa do parâmetro 1 que é o nome do servidor:
===
Script 1 - rdesktop em linha de comando
===
#!/bin/bash
rdesktop ${1}


Eis que surge o wish. Ao executar o script abaixo, uma janela com um input text aparecerá, informe o nome do servidor que queira logar que o rdesktop entrará em ação:
===
Script 2 - rdesktop com interface gráfica
===
#!/usr/bin/wish
#titulo da janela
wm title . "RDW - Nome do servidor"
#tamanho da janela
#larguraXaltura+x+y
#100000 faz ficar colado em baixo
wm geometry . 300x50+200+10000
#criando input text, nomeando variavel inputText e focando cursor do teclado nele
grid [entry .inputText -textvar inputText -just left] -ipadx 50 -rowspan 100
focus .inputText
#associando teclas ao input text e respectivas acoes
bind .inputText RDesktop
bind .inputText Sair

#########
# Funcoes
#########
proc RDesktop {} {
exec rdesktop -u usuario -d dominio -g 90% $::inputText &
exit
}

proc Sair {} {
exit 0
}


[Download]
Baixe o "Script 2 - rdesktop com interface gráfica" clicando em rdw-publico.sh.

Nenhum comentário: