diff --git a/lib/uh/wm/runner.rb b/lib/uh/wm/runner.rb index a7477f7..22625a7 100644 --- a/lib/uh/wm/runner.rb +++ b/lib/uh/wm/runner.rb @@ -107,6 +107,10 @@ module Uh log "Registering layout `#{layout.class}'" layout.register display end + @events.on :configure do |window| + log "Configuring window: #{window}" + layout.suggest_geo + end @events.on :manage do |client| log "Managing client #{client}" layout << client diff --git a/spec/uh/wm/runner_spec.rb b/spec/uh/wm/runner_spec.rb index bda4bef..88e37f2 100644 --- a/spec/uh/wm/runner_spec.rb +++ b/spec/uh/wm/runner_spec.rb @@ -1,6 +1,7 @@ SomeLayout = Class.new do - define_method(:register) { |*args| } - define_method(:<<) { |*args| } + define_method(:register) { |*args| } + define_method(:suggest_geo) { Uh::Geo.new(0, 0, 42, 42) } + define_method(:<<) { |*args| } end module Uh @@ -80,6 +81,12 @@ module Uh runner.events.emit :connected, args: :display end + it 'registers layout hook for :configure event' do + runner.register_event_hooks + expect(runner.events.emit :configure, args: :window) + .to eq Geo.new(0, 0, 42, 42) + end + it 'registers layout hook for :manage event' do runner.register_event_hooks expect(env.layout).to receive(:<<).with :window