mackstann / whimsy
- Source
- Commits
- Network (1)
- Issues (0)
- Downloads (0)
- Wiki (1)
- Graphs
-
Branch:
master
commit 2c742ca6b26b35670a2e7df4d65ddfc4af985065
tree c805c40f131a6b250c9d0445e03a697cb441f0c3
parent 9079b0e248731161d341555d2e43effeabd90e0b
tree c805c40f131a6b250c9d0445e03a697cb441f0c3
parent 9079b0e248731161d341555d2e43effeabd90e0b
| b9f1051f » | mackstann | 2008-02-19 | 1 | # Written by Nick Welch in the years 2005-2008. Author disclaims copyright. | |
| 6c22086d » | mackstann | 2007-04-07 | 2 | ||
| 59cd9ade » | mackstann | 2008-09-11 | 3 | import os, signal | |
| ba8b12b2 » | mackstann | 2008-07-10 | 4 | ||
| 4c92e6c2 » | mackstann | 2008-06-19 | 5 | from Xlib import display | |
| ba8b12b2 » | mackstann | 2008-07-10 | 6 | from Xlib.support.connect import get_display | |
| 7 | |||||
| 8 | from whimsy.signals import publisher | ||||
| 7e9fecad » | mackstann | 2008-07-10 | 9 | from whimsy.models.window_manager import window_manager | |
| 8cf7be95 » | mackstann | 2008-11-24 | 10 | from whimsy.models.layout import layout | |
| 184d4de2 » | mackstann | 2008-07-10 | 11 | from whimsy.controllers.x_event_controller import x_event_controller | |
| 12 | from whimsy.controllers.tick_controller import tick_controller | ||||
| 6c22086d » | mackstann | 2007-04-07 | 13 | ||
| ba8b12b2 » | mackstann | 2008-07-10 | 14 | def wait_signal_handler(*args): | |
| 15 | try: | ||||
| 16 | os.waitpid(-1, os.WNOHANG | os.WUNTRACED) | ||||
| 17 | except OSError: | ||||
| 18 | pass | ||||
| 19 | |||||
| c83e5a8d » | mackstann | 2008-07-10 | 20 | class main(object): | |
| eb385cb5 » | mackstann | 2008-07-10 | 21 | def __init__(self): | |
| ba8b12b2 » | mackstann | 2008-07-10 | 22 | os.environ['DISPLAY'] = get_display(None)[0] | |
| eb385cb5 » | mackstann | 2008-07-10 | 23 | ||
| da8bb53c » | mackstann | 2008-08-18 | 24 | self.dpy = display.Display() | |
| 25 | self.hub = publisher() | ||||
| a9ee224a » | mackstann | 2008-08-18 | 26 | self.wm = window_manager(self.hub, self.dpy) | |
| 8cf7be95 » | mackstann | 2008-11-24 | 27 | self.layout = layout(self.hub, self.wm) | |
| a9ee224a » | mackstann | 2008-08-18 | 28 | self.xec = x_event_controller(self.hub, self.dpy) | |
| 29 | self.ticker = tick_controller(self.hub) | ||||
| da8bb53c » | mackstann | 2008-08-18 | 30 | ||
| 31 | self.hub.defaults['wm'] = self.wm | ||||
| 32 | self.hub.defaults['hub'] = self.hub | ||||
| 33 | |||||
| f8f9f5c1 » | mackstann | 2008-09-11 | 34 | self.hub.attach('tick', self.xec.select_and_emit_all) | |
| eb385cb5 » | mackstann | 2008-07-10 | 35 | ||
| 36 | def run(self): | ||||
| ba8b12b2 » | mackstann | 2008-07-10 | 37 | signal.signal(signal.SIGCHLD, wait_signal_handler) | |
| eb385cb5 » | mackstann | 2008-07-10 | 38 | signal.signal(signal.SIGTERM, lambda signum, frame: self.ticker.stop()) | |
| 39 | signal.signal(signal.SIGINT, lambda signum, frame: self.ticker.stop()) | ||||
| 40 | signal.signal(signal.SIGPIPE, lambda signum, frame: self.ticker.stop()) | ||||
| 41 | signal.signal(signal.SIGUSR1, lambda signum, frame: self.ticker.stop()) | ||||
| 42 | signal.signal(signal.SIGUSR2, lambda signum, frame: self.ticker.stop()) | ||||
| 43 | |||||
| 44 | self.wm.manage() | ||||
| 45 | self.ticker.tick_forever() | ||||
| 36c5574e » | mackstann | 2008-06-19 | 46 | ||
