| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #!/usr/bin/env python3
- import os
- import signal
- import sys
- from pathlib import Path
- import daemon
- import psutil
- from daemon.pidfile import PIDLockFile
- from inotify_simple import INotify, flags
- def cleanup():
- os.remove(pidfile)
- sys.exit()
- pidfile = '/tmp/iqutefy.pid'
- # check if pidfile refers to dead process
- # if so, remove it
- if os.path.isfile(pidfile):
- with open(pidfile) as pf:
- pid = int(pf.readline())
- if not psutil.pid_exists(pid):
- os.remove(pidfile)
- with daemon.DaemonContext(
- detach_process=False,
- pidfile=PIDLockFile(pidfile),
- signal_map={signal.SIGTERM: cleanup}):
- inotify = INotify()
- watch_flags = flags.CREATE | flags.MODIFY
- wd = inotify.add_watch(sys.argv[1], watch_flags)
- process = psutil.Process()
- # inotify iterator runs out immediately
- while True:
- for event in inotify.read():
- os.system('qutebrowser :config-source')
- # kill after qutebrowser exits
- # not reached on SIGKILL
- cleanup()
|