mcabber (Уведомления о новых сообщениях)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

mcabber

Сообщение evgsd »

Решил поделиться своим скриптом, может кому пригодится.

Чтобы работало в mcabberrc включить:

Код: Выделить всё

set events_command = ~/.mcabber/имя_скрипта #Например: event.py
set events_ignore_active_window = 0
set event_log_files = 1
set event_log_dir = /tmp


Скрипт писал на основе примера из исходников

Код: Выделить всё

#!/usr/bin/python
#-*- coding: UTF-8 -*-
#by evgs
#27/08/2009
import sys,os,pynotify,locale

muc_nick = 'evgs' # Свой ник

encoding  = (locale.getdefaultlocale())[1]

if len(sys.argv) == 5:
    event,arg1,arg2,filename = sys.argv[1:5]
else:
    event,arg1,arg2 = sys.argv[1:4]
    filename = None

if filename is not None:
    f = file(filename)
    message = f.read()
else:
    message = 'Empty file'

def showNotify(arg, arg2):
    pynotify.init('mcnotify')
    msgbox = pynotify.Notification(unicode(arg, encoding), unicode(arg2, encoding))
    msgbox.set_timeout(3000)
    msgbox.set_urgency(pynotify.URGENCY_LOW)
    msgbox.show()
    pynotify.uninit()

if event == 'MSG':
    if arg1 == 'IN':
        arg2 = arg2[:arg2.index('@')]
        arg2 = 'Новое сообщение от '+ arg2
        showNotify(arg2, message)
    elif arg1 == 'MUC':
        From = message[message.index('<')+1:message.index('>')]
        msg = message[message.index('>')+2:-1]
        arg2 = arg2 + ' от ' + From
        if muc_nick in msg:
            showNotify(arg2, msg)

elif event == 'STATUS':
    st = { 'O':'Доступен', \
           'F':'Готов поболтать', \
           'A':'Ушел', \
           'N':'Недоступен', \
           'D':'Занят', \
           'I':'Невидим', \
           '_':'Отключен', \
           '?':'error', \
           'X':'requested'}
    showNotify(arg2, st[arg1])

if filename is not None and os.path.exists(filename):
    os.remove(filename)


Файл сделать исполняемым и положить по адресу, указанному в mcabberrc

Выглядит примерно так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали:
Аватара пользователя
SilentOS
Сообщения: 251
Статус: Важный воевода
ОС: SuSE

Re: mcabber

Сообщение SilentOS »

Спасибо, попробуем :)
Спасибо сказали:
stfoo
Сообщения: 12

Re: mcabber

Сообщение stfoo »

Не могу заставить работать скрипт в mcabber. При запуске из командной строки скрипт исправно показывает попап, а в mcabber нет. При этом, если в скрипт дописать звуковое оповещение, то оно работает как из командной строки, так и в самом mcabber. То есть, не работает именно отображение попапов. В чём тут дело?
Спасибо сказали:
Аватара пользователя
VarLog
Сообщения: 311
ОС: openSUSE 12.2

Re: mcabber

Сообщение VarLog »

Код: Выделить всё

set events_command = ~/.mcabber/имя_скрипта

В этой опции точно указан путь к вашему скрипту?
На самом деле всё очень просто...
Спасибо сказали:
Xandry
Сообщения: 980
ОС: openSUSE

Re: mcabber

Сообщение Xandry »

У меня тоже не робит.

$ python ~/.mcabber/event.py
Traceback (most recent call last):
File "/home/xandry/.mcabber/event.py", line 14, in <module>
event,arg1,arg2 = sys.argv[1:4]
ValueError: need more than 0 values to unpack

Примечание: обнаружена зависимость в виде libnotify и python-notify.
Спасибо сказали:
Аватара пользователя
evgsd
Сообщения: 38
ОС: Ubuntu Linux

Re: mcabber

Сообщение evgsd »

Xandry писал(а):
05.12.2009 21:29
У меня тоже не робит.

$ python ~/.mcabber/event.py
Traceback (most recent call last):
File "/home/xandry/.mcabber/event.py", line 14, in <module>
event,arg1,arg2 = sys.argv[1:4]
ValueError: need more than 0 values to unpack

Примечание: обнаружена зависимость в виде libnotify и python-notify.

извиняюсь, про зависимости написать забыл. Действительно зависит от python-notify.
по поводу работы скрипта, сам столкнулся с такой проблемой после переустановки, не работает как надо, причем из консоли все норм и нужные файлы создает, но почему то не показывает попап. Буду разбираться.
jid: evgsd@jabber.ru
Все будет хорошо. Я узнавал...
Спасибо сказали: