mackstann / whimsy

A dynamic, hackable window manager written in Python

This URL has Read+Write access

mackstann (author)
Wed Dec 17 00:45:49 -0800 2008
commit  2c742ca6b26b35670a2e7df4d65ddfc4af985065
tree    c805c40f131a6b250c9d0445e03a697cb441f0c3
parent  9079b0e248731161d341555d2e43effeabd90e0b
whimsy / whimsy / main.py
b9f1051f » mackstann 2008-02-19 revised and updated public ... 1 # Written by Nick Welch in the years 2005-2008. Author disclaims copyright.
6c22086d » mackstann 2007-04-07 initial import 2
59cd9ade » mackstann 2008-09-11 removing logging crap 3 import os, signal
ba8b12b2 » mackstann 2008-07-10 no more infrastructure dir 4
4c92e6c2 » mackstann 2008-06-19 cleaning up of main.py 5 from Xlib import display
ba8b12b2 » mackstann 2008-07-10 no more infrastructure dir 6 from Xlib.support.connect import get_display
7
8 from whimsy.signals import publisher
7e9fecad » mackstann 2008-07-10 moving window_manager and c... 9 from whimsy.models.window_manager import window_manager
8cf7be95 » mackstann 2008-11-24 move responsibility for siz... 10 from whimsy.models.layout import layout
184d4de2 » mackstann 2008-07-10 put controllers in controll... 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 initial import 13
ba8b12b2 » mackstann 2008-07-10 no more infrastructure dir 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 always use new-style classes 20 class main(object):
eb385cb5 » mackstann 2008-07-10 refactored main.py into mai... 21 def __init__(self):
ba8b12b2 » mackstann 2008-07-10 no more infrastructure dir 22 os.environ['DISPLAY'] = get_display(None)[0]
eb385cb5 » mackstann 2008-07-10 refactored main.py into mai... 23
da8bb53c » mackstann 2008-08-18 get rid of alarm 24 self.dpy = display.Display()
25 self.hub = publisher()
a9ee224a » mackstann 2008-08-18 oops 26 self.wm = window_manager(self.hub, self.dpy)
8cf7be95 » mackstann 2008-11-24 move responsibility for siz... 27 self.layout = layout(self.hub, self.wm)
a9ee224a » mackstann 2008-08-18 oops 28 self.xec = x_event_controller(self.hub, self.dpy)
29 self.ticker = tick_controller(self.hub)
da8bb53c » mackstann 2008-08-18 get rid of alarm 30
31 self.hub.defaults['wm'] = self.wm
32 self.hub.defaults['hub'] = self.hub
33
f8f9f5c1 » mackstann 2008-09-11 renaming of publisher methods 34 self.hub.attach('tick', self.xec.select_and_emit_all)
eb385cb5 » mackstann 2008-07-10 refactored main.py into mai... 35
36 def run(self):
ba8b12b2 » mackstann 2008-07-10 no more infrastructure dir 37 signal.signal(signal.SIGCHLD, wait_signal_handler)
eb385cb5 » mackstann 2008-07-10 refactored main.py into mai... 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 addition of tick_controller... 46