3 # bus type sender interface path member destination args command
7 # Headphones unplugged:
8 # S signal * org.freedesktop.Hal.Manager /org/freedesktop/Hal/Manager DeviceRemoved * * echo Headphones unplugged;
11 # S signal * com.nokia.csd.Call /com/nokia/csd/call Coming * * echo $DBUS_ARG1 is calling
16 if __name__ == '__main__':
18 from dbuscron import Logger, OptionsParser
20 options = OptionsParser('fvc:l:')
21 daemon = not options.f
25 logout = open(options.l, 'wb')
27 log = Logger(__name__, out=logout)
28 log.level = options.v + Logger.ERROR
31 from dbuscron.daemonize import daemonize
33 pidfile='/var/run/dbuscron.pid',
34 logfile='/var/log/dbuscron.log'
37 from dbuscron import DbusBus, DbusRule, Command, Commands, CrontabParser
42 crontab = CrontabParser(options.c or '/etc/dbuscrontab')
44 def load_config(parser):
45 for rule, cmd in parser:
46 matcher = DbusRule(**rule)
47 command = Command(cmd)
49 log.info('%s %s' % (matcher, command))
50 commands.add(matcher, command)
54 def reload_config_on_signal(sig_no, stack):
55 log.info('Signal #%d received: reloading config...' % (sig_no))
58 log.info('Done config reloading.')
61 signal.signal(signal.SIGHUP, reload_config_on_signal)
63 commands.environ = crontab.environ
64 bus.attach_handler(commands.handler)
68 except KeyboardInterrupt:
71 # vim: ts=8 sts=4 sw=4 et