6

Я успешно использую Irssi в tmux для управления своими чатами. Я также попробовал отличную tmux-powerline, которая кажется действительно полнофункциональной.

Теперь мне интересно, есть ли способ заставить tmux уведомлять меня, когда кто-то отправляет мне сообщение в окне Irssi в tmux.

2 ответа2

1

Я написал плагин irssi под названием hilightnotify.pl.

Скрипт запускает настраиваемую команду, когда статус hilight устанавливается / удаляется в irssi. Я использую его для выполнения мигающего значка при упоминается мое имя и убить значок , когда статус hilight удаляется ( это означает , что я заметил сообщение), как описано в связанной статье и самого сценария, но можно запустить то , что один хочет. Если функция tmux, к которой вы стремитесь, поддерживает триггер CLI, она, вероятно, легко адаптируется к вашей ситуации.

0

Я в аналогичной ситуации, за исключением того, что я использую mcabber вместо irssi. Поскольку вы используете tmux-powerline, вы можете сделать что-то подобное.

Я настроил mcabber для записи входящих сообщений в ~/tmp/mcabber.out, а затем создал сегмент mcabber в ~/etc/tmux-powerline/ сегменты /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

Конечно, я создал запись в своем статусе слева:

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

Я называю окно, содержащее mcabber, чатом. Чтобы пометить сообщение как прочитанное, я смотрю на вывод $(list-windows) и вижу, активно ли это окно чата в ~/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

В моем .tmux.conf я использую строку состояния для запуска ~/bin/mcabber_mark_read при каждом изменении окна:

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

Я не программирую на Perl и не использую irssi, но после нескольких минут чтения страниц руководства и использования googles у меня может появиться решение, которое подойдет для irssi; NB, что это не проверено:

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

и затем я отредактировал msg-evnt.pl, чтобы он выглядел так:

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');

Я не уверен, хотите ли вы получать уведомления обо всех или только личных сообщениях, поэтому выбрал соответствующий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .