Skip to content

Commit d338889

Browse files
author
Tony Crisci
committed
implement the shutdown event
1 parent 9f671a1 commit d338889

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

i3ipc/i3ipc.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class Event(object):
3333
WINDOW = (1 << 3)
3434
BARCONFIG_UPDATE = (1 << 4)
3535
BINDING = (1 << 5)
36-
# 1 << 6 is shutdown
36+
SHUTDOWN = (1 << 6)
3737
TICK = (1 << 7)
3838

3939

@@ -620,6 +620,8 @@ def subscribe(self, events):
620620
events_obj.append("barconfig_update")
621621
if events & Event.BINDING:
622622
events_obj.append("binding")
623+
if events & Event.SHUTDOWN:
624+
events_obj.append("shutdown")
623625
if events & Event.TICK:
624626
events_obj.append("tick")
625627

@@ -656,6 +658,8 @@ def on(self, detailed_event, handler):
656658
event_type = Event.BARCONFIG_UPDATE
657659
elif event == "binding":
658660
event_type = Event.BINDING
661+
elif event == "shutdown":
662+
event_type = Event.SHUTDOWN
659663
elif event == "tick":
660664
event_type = Event.TICK
661665

@@ -711,6 +715,9 @@ def event_socket_poll(self):
711715
elif msg_type == Event.BINDING:
712716
event_name = 'binding'
713717
event = BindingEvent(data)
718+
elif msg_type == Event.SHUTDOWN:
719+
event_name = 'shutdown'
720+
event = GenericEvent(data)
714721
elif msg_type == Event.TICK:
715722
event_name = 'tick'
716723
event = TickEvent(data)

test/test_shutdown_event.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from threading import Timer
2+
from ipctest import IpcTest
3+
import i3ipc
4+
5+
6+
class TestShutdownEvent(IpcTest):
7+
event = None
8+
9+
def restart_func(t, i3):
10+
i3.command('restart')
11+
12+
def on_shutdown(self, i3, e):
13+
self.event = e
14+
i3.main_quit()
15+
16+
def test_shutdown_event(self, i3):
17+
i3.on('shutdown::restart', self.on_shutdown)
18+
Timer(0.001, self.restart_func, args=(i3, )).start()
19+
i3.main(timeout=1)
20+
assert self.event

0 commit comments

Comments
 (0)