X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=usr_bin%2Fosd_server.py;h=a35cacff81a2555e226cd52034168c8b2f227079;hb=dcb6090b9e23b455fb7b043c340508e3373e6a40;hp=19143462ca134698ce09127178504b81f27671fa;hpb=e720deae78f1eda5e6f62629606c194f16796762;p=grml-scripts.git diff --git a/usr_bin/osd_server.py b/usr_bin/osd_server.py index 1914346..a35cacf 100755 --- a/usr_bin/osd_server.py +++ b/usr_bin/osd_server.py @@ -1,5 +1,5 @@ #!/usr/bin/python -# -*- coding: iso-8859-15 -*- +# -*- coding: utf-8 -*- # Copyright (C) 2005 2006 Alexander Bernauer # Copyright (C) 2005 2006 Rico Schiekel # Copyright (C) 2005 2006 Ulrich Dangel @@ -21,12 +21,17 @@ import sys, getopt, logging from socket import * -from os import popen from select import select +try: + import dbus +except ImportError: + print >>sys.stderr, 'Please install python-dbus' + raise SystemExit(1) + host='localhost' port=1234 -osdcmd = "/usr/bin/osd_cat" +timeout=5 def syntax(): print "osd_server.py [options]" @@ -34,39 +39,13 @@ def syntax(): print " -h --help print this message" print " -H --host host of the osd server (def: " + host + ")" print " -P --port port of the osd server (def: " + str(port) + ")" - print " -o --osd set new osd parameter string" + print " -t --timeout timeout in seconds (def: " + str(timeout) + ")" print " -l --log log file ('-' logs to stdout)" -def get_osd_paramstr(def_params, user_params): - ret = user_params - if user_params == '': - for n, v in def_params.iteritems(): - if v != '': - ret += n + "=" + v + " " - return ret - - - -osd_params={ '--pos': 'middle', - '--offset': '100', - '--align': 'center', - '--indent': '100', - '--font': - '\-\*\-helvetica\-\*\-r\-\*\-\*\-34\-\*\-\*\-\*\-\*\-\*\-iso8859\-15', - '--colour': 'green', - '--shadow': '0', - '--shadowcolour': '', - '--outline': '1', - '--outlinecolour': 'black', - '--age': '4', - '--lines': '5', - '--delay': '4' } - logfile_name = '' -user_osd_params = '' try: - opts, args = getopt.getopt(sys.argv[1:], "hH:P:o:l:", ["help", "host=", "port=", "osd=", "log="]) + opts, args = getopt.getopt(sys.argv[1:], "hH:P:l:t:", ["help", "host=", "port=", "log=", 'timeout=']) except getopt.GetoptError: syntax() sys.exit(2) @@ -79,10 +58,10 @@ for opt, arg in opts: host = arg elif opt in ("-P", "--port"): port = int(arg) - elif opt in ("-o", "--osd"): - user_osd_params = arg elif opt in ("-l", "--log"): logfile_name = arg + elif opt in ("-p", "--timeout"): + timeout=int(arg) l = socket(AF_INET, SOCK_STREAM) l.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) @@ -102,25 +81,19 @@ else: logger.setLevel(logging.INFO) logger.info("osd_server running on [%s] port [%d]" % (host, port)) -osdpipe = popen("%s %s" % (osdcmd, get_osd_paramstr(osd_params, user_osd_params)), 'w') -r = range(32,127) -r.extend([ord(umlaut) for umlaut in "äöüßÄÖܤ" ]) +bus = dbus.SessionBus() +devobj = bus.get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications') +notify = dbus.Interface(devobj, 'org.freedesktop.Notifications') while 1: (con, addr) = l.accept() message = con.recv(60).strip() con.close() - message = message.replace("\n", "") - message = ''.join(map(lambda a: not a in r \ - and '[%.2d]' % a \ - or chr(a), \ - [ord(c) for c in message]))[:60] - - logger.info(message) - osdpipe.write(message) - osdpipe.write("\n") - osdpipe.flush() + message = message.splitlines() + if message: + body = ' '.join([m for m in message[1:]]) + notify.Notify('', 0, '', message[0], body, '', [], timeout*1000) + logger.info(message) -osdpipe.close()