Quit on `mod1+q' key binding

* Loop our runner until it is "stopped";
* Use the event dispatcher to stop the runner on `mod1+q' key press;
* Tell the manager to grab the `q' key.
This commit is contained in:
Thibault Jouan
2015-04-08 02:56:10 +00:00
parent 224ae6be5f
commit ceac19b346
7 changed files with 73 additions and 4 deletions

View File

@@ -4,7 +4,9 @@ module Uh
class << self
def run env, **options
runner = new env, **options
runner.register_event_hooks
runner.connect_manager
runner.run_until { runner.stopped? }
end
end
@@ -25,14 +27,26 @@ module Uh
@stopped = true
end
def register_event_hooks
register_key_bindings_hooks
end
def connect_manager
@manager.connect
@env.log "Connected to X server"
@manager.grab_key :q
end
def run_until &block
@manager.handle_pending_events until block.call
end
private
def register_key_bindings_hooks
@events.on(:key, :q) { stop! }
end
end
end
end