Esse é o primeiro artigo de uma série que irei escrever sobre o modo texto. A série tem como objetivo principal explorar a possibilidade de usar um computador com Linux sem o uso de um servidor X. Neste artigo será tratado um excelente cliente MSN em modo texto - o Pebrot.
A interface do Pebrot é simples, embora possa não parecer a princípio. Isso acontece porque, apesar de simples, ela não é muito intuitiva. Mas pense melhor, imagine a situação a seguir: você está trabalhando em modo texto, portanto esqueça o mouse (tudo bem que algumas aplicações até tenham suporte ao roedor, mas não é o caso do Pebrot), como passar de uma parte a outra na interface de um programa? Os outros clientes MSN, como o tmsnc e o centericq, disponibilizará o TAB para esse função. Tudo bem, usar o tab é legal, ajuda a adaptação do usuário, mas, quando se está tratando de agilidade no modo texto, nada supera o poder dos comandos. Pretendo mostrar como esse tipo de interface é um dos grandes diferenciais do Pebrot.
Primeiro é interessante entender a interface do Pebrot: toda ela é composta por apenas 3 elementos. Observe os números em vermelho na figura abaixo:
1) Barra de janelas de chat: Aqui ficam as localizadas as janelas abertas. A janela ativa é determinada por colchetes.
2) Campo de mensagens: Campo onde são exibidas qualquer mensagem de retorno ao usuário.
3) Campo de escrita: Local onde todos os comandos do usuário serão digitados.
De toda a interação possível com o programa apenas três ações não são baseadas em comandos: a alternação entre as janelas de chat ativas, através do TAB, a rolagem do campo de mensagens, através do PAGE UP e PAGE DOWN e o serviço desempenhado pelo CTRL+L, que redesenha a tela (use se a tela estiver aparecendo estranha). Os comandos são digitados no campo de escrita; qualquer linha digitada iniciada por "/" ou "\" são consideradas comandos, sendo que o Pebrot não irá diferenciar entre as barras. A qualquer momento, para descobrir os comandos possíveis use o comando /h, ele listará, com comentários (em inglês), os comandos do Pebrot. Os comandos disponíveis são:
\<número>
Cria um chat com o usuário que estiver com o número indicado na lista.
\c
Fecha o chat ativo (aquele que estiver entre colchetes no campo das janelas).
tab
Muda o chat ativo.
\i <número>
Convida (invite) o usuário que estiver com o número indicado na lista para o chat ativo.
\l
Lista os usuários conectados.
\l <lista>
Mostra a lista requisitada. A lista pode ser:
fl: Forward list, usuários na sua lista de contatos
rl: Reverse list, usuários que tem você na lista deles
al: Allow list, usuários permitidos para ver seu status
bl: Block list, usuários não permitidos para ver seu status
\u
Lista os usuários na janela de chat ativa.
\n <novo_nick>
Muda o nick para <novo_nick>.
\a <usuário>
Adiciona <usuário> para sua lista de contatos.
\b <usuário>
Bloqueia <usuário>.
\r <usuário>
Remove <usuário> da sua lista de contatos.
\o <usuário>
Abre uma janela de chat com um usuário que não está na sua lista de contatos.
\s <status>
Muda status. Os status podem ser:
nln: Online
fln: Offline
hdn: Parecer Offline
idl: Inativo
awy: Ausente
bsy: Ocupado
brb: Volto Logo
phn: Ao telefone
lun: Comendo
\f <arquivo>
Envia <arquivo> para o usuário na janela de chat ativa.
\fa
Aceita a recepção de um arquivo.
\fr <posição>
Rejeita o download de um arquivo. Especifique sua posição na barra das janelas de chat. Você pode inserir vários números, apenas os separe por espaços em branco. Se não houver nenhuma posição especificada, todos os pedidos serão rejeitados.
\fc <posição>
Cancela o envio de um arquivo. Se nenhuma posição for inserida, todos os envios serão cancelados.
\!
Executa um comando no shell!! A saída do comando aparece no campo de mensagens (isso pode estragar a exibição, use ctrl+l para corrigir).
\e
Limpa conteúdo da janela ativa.
\d <arquivo>
Grava o conteúdo de um chat em um arquivo. Se não for fornecido um arquivo, o programa irá gravar num arquivo temporário ("pebrot-dump").
Ctrl-l
Redesenha a tela.
\h \?
Ajuda.
\q Ctrl-d
Fechar o programa.
Lembrando que:
<número> = refere-se a posição do usuário na lista dos usuário conectados
<usuário> = refere-se ao passport MSN do contato (nome@dominio)
<posição> = refere-se a posição na barra de janelas de chat.
<arquivo> = refere-se ao caminho completo do arquivo.
[2] Comentário enviado por removido em 03/01/2007 - 10:00h
recomendo que deem uma olhada no msnp http://msnp.sourceforge.net/ ele é escrito em python e usa curses, é muito bonito e bem feito, levicimo e um forte concorrente.
[4] Comentário enviado por fsamoreira em 03/01/2007 - 12:02h
o problema que eu encontrei no msnp é principalmente o fato de que a última atualização dele é de janeiro de 2004. ou seja, a 3 anos que não mechem nele
[11] Comentário enviado por EdDeAlmeida em 04/01/2007 - 20:21h
Muito bom o pebrot! Gosto de programar no console, mas como tenho de dar assistência a alguns clientes via MSN, acabava ficando preso ao X. Agora posso preogramar em paz, com o pebrot noutro terminal. Vou hackear o código para ver se implemento algumas coisas, como avisos quando chegam mensagens e coisas assim.
Obrigado.
[12] Comentário enviado por tenchi em 07/01/2007 - 18:36h
Ah, você disse que vai escrever sobre o screen. Não sei se você já viu, mas no site do Aurélio tem bastande coisa sobre este programa. Na verdade foi lá que eu aprendi sobre o screen.
[15] Comentário enviado por rafa-ctba em 03/06/2007 - 23:33h
Estou com o seguinte problema ao tentar entrar pelo pebrot:
Traceback (most recent call last):
File "/home/daniel/.pebrot/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1886, in main
curses.wrapper( gogogo )
File "curses/wrapper.py", line 44, in wrapper
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1848, in gogogo
con.loopInput()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1524, in loopInput
self.oneStep()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1454, in oneStep
st= self.Text.getLine( self.handleInput, self.step )
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/ui.py", line 250, in getLine
idleFunc()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 920, in step
self.processMsgs()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 1004, in processMsgs
msg= Msg( res[1] )
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 512, in __init__
expLen= len( MSGS[self.type] )+1
KeyError: 'NOT'
[17] Comentário enviado por lucaspolo em 21/12/2008 - 21:53h
Realmente é muito interessante esse Pebrot!
Eu ainda li um outro artigo seu sobre páginas antigas e vi sobre máquinas antigas e dicas de como monta-las, dai comecei a juntar as idéias do tico e do teco e agora to pensando em montar uma máquininha só por brincadeira...
[18] Comentário enviado por david fonseca em 13/08/2009 - 22:34h
Amigos aki ta assim quando eu chamo o $ pebrot
david@david-ubuntu:~$ pebrot
/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1980, in main
os.mkdir( MAIN_LOG_DIR )
OSError: [Errno 13] Permission denied: '/home/david/.pebrot/logs/'
[19] Comentário enviado por El Camaleon em 08/04/2011 - 00:29h
Sem querer reviver esse tópico .. mas eu queria uma solução para o problema acima afinal ele esta sendo o meu nos dias de hoje. Após seguir todos os passos listados acima sobre instalação depois ter ir e colocar o arquivo pebrotrc na pasta ./pebrot e enfim perceber que o pebrot vai funcionar e ficar a um passo de usá-lo acontece esse erro que o David citou.
Eu consigo entrar com meu usuário ele chega a pedir senha e entra na tela e começa a carregar quando ele esta carregando a tela simplesmente fecha e o que resta é a mensagem:
/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5
Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1886, in main
curses.wrapper( gogogo )
File "/usr/lib/python2.6/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1848, in gogogo
con.loopInput()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1524, in loopInput
self.oneStep()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1454, in oneStep
st= self.Text.getLine( self.handleInput, self.step )
File "/usr/local/lib/python2.6/dist-packages/pypebrot/ui.py", line 250, in getLine
idleFunc()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 920, in step
self.processMsgs()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 1004, in processMsgs
msg= Msg( res[1] )
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 512, in __init__
expLen= len( MSGS[self.type] )+1
KeyError: 'NOT'
Agradeço a ajuda de todos, peço desculpas por estar revivendo esse tópico mas gostaria de ajuda. Mais uma vez obrigado.
[21] Comentário enviado por khyron em 11/05/2012 - 11:37h
bom dia!...
tb estou com esse problema...alguem poderia ajudar ???
$pebrot
/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead
Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1886, in main
File "/usr/lib/python2.6/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1822, in gogogo
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 756, in getPassword
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 483, in fatalError