diff --git a/lib/uh/wm/runner.rb b/lib/uh/wm/runner.rb index 22625a7..6e6aab3 100644 --- a/lib/uh/wm/runner.rb +++ b/lib/uh/wm/runner.rb @@ -115,6 +115,10 @@ module Uh log "Managing client #{client}" layout << client end + @events.on :unmanage do |client| + log "Unmanaging client #{client}" + layout.remove client + end end def register_keybinds_hooks diff --git a/spec/uh/wm/runner_spec.rb b/spec/uh/wm/runner_spec.rb index 88a259f..f91c81f 100644 --- a/spec/uh/wm/runner_spec.rb +++ b/spec/uh/wm/runner_spec.rb @@ -2,6 +2,7 @@ SomeLayout = Class.new do define_method(:register) { |*args| } define_method(:suggest_geo) { Uh::Geo.new(0, 0, 42, 42) } define_method(:<<) { |*args| } + define_method(:remove) { |*args| } end module Uh @@ -93,6 +94,12 @@ module Uh expect(env.layout).to receive(:<<).with :client runner.events.emit :manage, args: :client end + + it 'registers for :unmanage event' do + runner.register_event_hooks + expect(env.layout).to receive(:remove).with :client + runner.events.emit :unmanage, args: :client + end end context 'keys hooks' do