tmux notifica quando alguém me escreve no Irssi

6

Estou usando com sucesso o Irssi dentro do tmux para gerenciar meus bate-papos. Eu também tentei o ótimo tmux-powerline , que parece realmente cheio de recursos.

Agora, estou me perguntando se existe um método para fazer o tmux me avisar quando alguém me enviar uma mensagem na janela do Irssi no tmux.

    
por fradeve 06.02.2013 / 10:47

2 respostas

1

Eu escrevi um plugin da irssi chamado hilightnotify.pl .

O script executa um comando configurável quando hilight status é definido / removido dentro do irssi. Eu o uso para executar um ícone de bandeja piscando quando meu nome é mencionado e mato o ícone quando hilight status é removido (o que significa que observei a mensagem), conforme descrito no artigo vinculado e no próprio script, mas pode ser executado o que se quer. Se a função tmux que você está depois suporta um acionador CLI, provavelmente é adaptável à sua situação.

    
por 06.02.2013 / 11:43
0

Estou em uma situação semelhante, exceto que uso o mcabber em vez do irssi. Já que você usa o tmux-powerline, você pode fazer algo assim.

Eu customizava o mcabber para escrever mensagens de entrada para ~ / tmp / mcabber.out e então eu criei um segmento mcabber em ~ / etc / tmux-powerline / segments / mcabber:

#!/usr/bin/env bash

segment_path=$(dirname $0)
source "$segment_path/../lib.sh"

echo $(roll_stuff "$(cat ~/tmp/mcabber.out)" 100 1)

exit 0

É claro que criei uma entrada no meu status:

declare -A mcabber
mcabber+=(["script"]="${segments_path}/mcabber")
mcabber+=(["foreground"]="colour1")
mcabber+=(["background"]="colour0")
mcabber+=(["separator"]="${default}")
register_segment "mcabber"

Eu nomeio a janela que contém o mcabber para 'chat'. Para marcar uma mensagem como lida, vejo a saída de $ (list-windows) e vejo se essa janela de bate-papo está ativa em ~ / bin / mcabber_mark_read:

#!/usr/bin/env bash

sleep 5
# check to see that among the tmux windows, the active one is called 'chat'
tmux list-windows | grep chat | grep -q '(active)$'
if [[ $? -eq 0 ]]; then
    rm ~/tmp/mcabber.out
fi

No meu arquivo .tmux.conf eu uso a barra de status para executar ~ / bin / mcabber_mark_read sempre que eu mudo de janela:

set-window-option -g window-status-current-format '[#(~/bin/mcabber_mark_read)#I:#W#F]'

Eu não programo no perl nem uso o irssi, mas com alguns minutos lendo as man pages e usando o googles, eu posso ter uma solução que funcione para o irssi; NB que isto não foi testado :

$ mkdir -p ~/.irssi/scripts/autorun
$ cp /usr/share/irssi/scripts/msg-event.pl ~/.irssi/scripts/autorun/msg-event.pl

e editei o msg-evnt.pl para ficar assim:

use Irssi;
use strict;
use vars qw($VERSION %IRSSI);

sub event_msg {
    my ($server, $data, $nick, $host) = @_;
    open(MYFILE, '>', '~/tmp/mcabber.out');
    print MYFILE $text;
    close(MYFILE)
}

#Irssi::signal_add('event privmsg', 'event_msg');
Irssi::signal_add('event pubmsg', 'event_msg');

Não sei se você deseja ser notificado de todas ou apenas mensagens particulares, por isso, escolha de forma adequada.

    
por 13.02.2013 / 03:23