5th Mar, 2009

IRC: qirssi – trayicon e notificações para o irssi

qirssi

Lancei hoje o qirssi, que oferece notificações de novas mensagens e um trayicon aos usuários do irssi.

Usando o qirssi, você pode fechar a janela do irssi e depois reabri-la de forma transparente clicando sobre o trayicon.

O recurso de notificação de mensagens é configurável. O tipo de notificação (ícone e/ou balão) pode ser escolhido de acordo com o tipo de mensagem (privada ou pública). Caso o usuário deseje, as notificações podem ser habilitadas apenas para mensagens públicas que casem com certa expressão regular, e apenas para mensagens privadas cujo remetente case com outra expressão regular.

O restante deste artigo ensinará a instalar e configurar o qirssi.

1. Instalando o qirssi

No Arch Linux: instale o pacote qirssi a partir do AUR ou do repositório [archlinuxbr]. Não se esqueça de votar no AUR caso goste do programa.

Em outros sistemas:

Como pré-requisito, você deve ter instalada a Qt e seus pacotes de desenvolvimento.

Baixe o código fonte na página do qirssi, descompacte-o e entre no diretório:

tar -zxvf qirssi-*.tar.gz
cd qirssi-*

Compile o qirssi:

qmake qirssi.pro
make

Para finalizar, instale o aplicativo qirssi, e o script Perl qirssi.pl que será utilizado pelo irssi:

install -s -m755 qirssi /usr/bin
install -m644 qirssi.pl /usr/share/irssi/scripts

2. Configurando o irssi

Edite o arquivo ~/.irssi/startup. Diga ao irssi para carregar o script qirssi.pl e defina suas opções preferidas para o qirssi.

Por exemplo:

script load qirssi.pl
qirssi priv icon,balloon
qirssi pub icon ^seunick

Com as configurações acima, você será notificado por uma mudança de ícone e por um balão de mensagens sempre que receber qualquer mensagem privada, e será notificado apenas por uma mudança de ícone caso receba uma mensagem pública que contenha seunick no início da mensagem.

Veja a seção a seguir para maiores informações sobre as opções suportadas.

3. Comandos /qirssi suportados

Nos comandos listados abaixo, tipo_notificacao pode ser icon, balloon, ou uma combinação de ambos.

Atualmente, o qirssi suporta os seguintes comandos:

  • /qirssi priv tipo_notificacao regex_nick

    Com isso, você será notificado a respeito de uma mensagem privada se o nick da pessoa que lhe enviou a mensagem contiver a expressão regular regex_nick.

    Se regex_nick for omitido, você receberá notificações a respeito de qualquer mensagem privada, não importando quem a tenha enviado.

  • /qirssi pub tipo_notificacao regex_msg

    Com isso, você será notificado a respeito de uma mensagem pública se o corpo da mensagem contiver a expressão regular regex_msg.
  • /qirssi

    Com isso, você receberá na tela uma pequena ajuda do qirssi. Serão exibidas também as opções de notificação atualmente configuradas.

4. Terminal utilizado para abrir o irssi

Por padrão, o qirssi chama o terminal urxvt (rxvt-unicode) para abrir o irssi.

Caso queira mudar o terminal padrão, você deve definir a variável de ambiente QIRSSI_TERM. Por exemplo, caso você desejasse utilizar o uxterm:

export QIRSSI_TERM="uxterm -e"

5. Maiores informações

Para maiores informações, leia a documentação na página do qirssi.

Responses

[...] neste artigo como instalar e configurar o [...]

Muito legal essa idéia. Parabéns.
Contudo, estou tendo um problema para na hora do
‘qmake qirssi.pro’. Veja:
qmake qirssi.pro
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: qirssi.pro

Any help would be appreciated.

Olá Athunye,

Geralmente não é necessário exportar essa váriável de ambiente QMAKESPEC, mas parece que em alguns casos raros ela pode ser necessária, caso o qmake não detecte qual o seu sistema operacional, compilador ou arquitetura.

O conteúdo dessa variável vai depender do seu sistema operacional e do seu compilador. Se você está usando o g++ com o Linux, por exemplo, faça:

export QMAKESPEC=linux-g++

Se está usando o g++ com o NetBSD, faça:

export QMAKESPEC=netbsd-g++

E assim por diante.

Mais informações: http://lists.trolltech.com/qt-interest/2004-11/thread01224-0.html

No Debian Lenny instalei a qmake e quando dou o make aparece o seguinte erro:

root@dev:/home/fernando/programas/qirssi-20090305# qmake qirssi.pro
root@dev:/home/fernando/programas/qirssi-20090305# make
g++ -c -pipe -g -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3 -o main.o main.cpp
main.cpp:22:17: error: QMenu: Arquivo ou diretório não encontrado
In file included from main.cpp:24:
commandprocessor.h:29:27: error: QSocketNotifier: Arquivo ou diretório não encontrado
In file included from main.cpp:25:
trayhandler.h:25:19: error: QObject: Arquivo ou diretório não encontrado
trayhandler.h:26:27: error: QSystemTrayIcon: Arquivo ou diretório não encontrado
In file included from trayhandler.h:32,
from main.cpp:25:
main.h:29:24: error: QApplication: Arquivo ou diretório não encontrado
main.h:31:17: error: QIcon: Arquivo ou diretório não encontrado
In file included from main.cpp:24:
commandprocessor.h:31: error: expected class-name before ‘{’ token
commandprocessor.h:32: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
commandprocessor.h:34: error: expected ‘;’ before ‘public’
commandprocessor.h:37: error: expected `:’ before ‘slots’
commandprocessor.h:38: error: expected primary-expression before ‘void’
commandprocessor.h:38: error: ISO C++ forbids declaration of ‘slots’ with no type
commandprocessor.h:38: error: expected ‘;’ before ‘void’
In file included from trayhandler.h:32,
from main.cpp:25:
main.h:35: error: expected class-name before ‘{’ token
main.h:37: error: ISO C++ forbids declaration of ‘QIcon’ with no type
main.h:37: error: expected ‘;’ before ‘*’ token
main.h:38: error: ISO C++ forbids declaration of ‘QSystemTrayIcon’ with no type
main.h:38: error: expected ‘;’ before ‘*’ token
In file included from main.cpp:25:
trayhandler.h:34: error: expected class-name before ‘{’ token
trayhandler.h:35: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
trayhandler.h:36: error: expected ‘;’ before ‘public’
trayhandler.h:38: error: expected `;’ before ‘public’
trayhandler.h:38: error: expected `:’ before ‘slots’
trayhandler.h:42: error: expected primary-expression before ‘void’
trayhandler.h:42: error: ISO C++ forbids declaration of ‘slots’ with no type
trayhandler.h:42: error: expected ‘;’ before ‘void’
trayhandler.h:51: error: expected `;’ before ‘void’
trayhandler.h:51: error: ‘QSystemTrayIcon’ has not been declared
trayhandler.h:51: error: expected ‘,’ or ‘…’ before ‘reason’
trayhandler.h: In member function ‘void TrayHandler::activated(int)’:
trayhandler.h:53: error: ‘reset_icon’ was not declared in this scope
trayhandler.h:56: error: ‘reason’ was not declared in this scope
trayhandler.h:56: error: ‘QSystemTrayIcon’ has not been declared
trayhandler.h: At global scope:
trayhandler.h:51: warning: unused parameter ‘ActivationReason’
main.cpp:30: error: expected class-name before ‘{’ token
main.cpp:32: error: expected `)’ before ‘*’ token
main.cpp: In constructor ‘App::App(int, char**)’:
main.cpp:44: error: class ‘App’ does not have any field named ‘QApplication’
main.cpp:46: error: ‘icon_on’ was not declared in this scope
main.cpp:46: error: expected type-specifier before ‘QIcon’
main.cpp:46: error: expected `;’ before ‘QIcon’
main.cpp:47: error: ‘icon_off’ was not declared in this scope
main.cpp:47: error: expected type-specifier before ‘QIcon’
main.cpp:47: error: expected `;’ before ‘QIcon’
main.cpp:48: error: ‘trayicon’ was not declared in this scope
main.cpp:48: error: expected type-specifier before ‘QSystemTrayIcon’
main.cpp:48: error: expected `;’ before ‘QSystemTrayIcon’
main.cpp:49: error: no matching function for call to ‘TrayHandler::TrayHandler(App* const)’
trayhandler.h:34: note: candidates are: TrayHandler::TrayHandler()
trayhandler.h:34: note: TrayHandler::TrayHandler(const TrayHandler&)
main.cpp:57: error: no matching function for call to ‘ContextMenu::ContextMenu(App* const)’
main.cpp:30: note: candidates are: ContextMenu::ContextMenu()
main.cpp:30: note: ContextMenu::ContextMenu(const ContextMenu&)
main.cpp:58: error: ‘QSystemTrayIcon’ has not been declared
main.cpp:58: error: ‘activated’ was not declared in this scope
main.cpp:58: error: ‘SIGNAL’ was not declared in this scope
main.cpp:58: error: ‘QSystemTrayIcon’ has not been declared
main.cpp:58: error: ‘SLOT’ was not declared in this scope
main.cpp:59: error: ‘messageClicked’ was not declared in this scope
main.cpp:59: error: ‘reset_icon’ was not declared in this scope
main.cpp:61: error: no matching function for call to ‘CommandProcessor::CommandProcessor(App* const)’
commandprocessor.h:31: note: candidates are: CommandProcessor::CommandProcessor()
commandprocessor.h:31: note: CommandProcessor::CommandProcessor(const CommandProcessor&)
main.cpp: In destructor ‘App::~App()’:
main.cpp:65: error: ‘icon_on’ was not declared in this scope
main.cpp:66: error: ‘icon_off’ was not declared in this scope
main.cpp: In function ‘int main(int, char**)’:
main.cpp:73: error: ‘class App’ has no member named ‘exec’
make: ** [main.o] Erro 1
root@dev:/home/fernando/programas/qirssi-20090305#

Olá Fernando,

Note o seguinte: -I/usr/share/qt3/mkspecs/default -I. -I/usr/include/qt3

Isso indica que o qmake que você está usando é o qmake do Qt3, e não o do Qt4.

No Debian Lenny o pacote do qmake do Qt4 é chamado qt4-qmake e eles renomeiam o executável para qmake-qt4:

http://packages.debian.org/stable/i386/qt4-qmake/filelist

Leave a response

Your response:

Categories