Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

Commit

Permalink
docs/ipc: document that the highest bit is 1 for event replies
Browse files Browse the repository at this point in the history
  • Loading branch information
stapelberg committed Jan 29, 2011
1 parent ac8fb23 commit f1aa9d7
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions docs/ipc
Expand Up @@ -237,7 +237,8 @@ rect (map)::
To get informed when certain things happen in i3, clients can subscribe to
events. Events consist of a name (like "workspace") and an event reply type
(like I3_IPC_EVENT_WORKSPACE). The events sent by i3 are in the same format
as replies to specific commands.
as replies to specific commands. However, the highest bit of the message type
is set to 1 to indicate that this is an event reply instead of a normal reply.

Caveat: As soon as you subscribe to an event, it is not guaranteed any longer
that the requests to i3 are processed in order. This means, the following
Expand All @@ -258,16 +259,38 @@ type: SUBSCRIBE
payload: [ "workspace", "focus" ]
---------------------------------


=== Available events

workspace::
The numbers in parenthesis is the event type (keep in mind that you need to
strip the highest bit first).

workspace (0)::
Sent when the user switches to a different workspace, when a new
workspace is initialized or when a workspace is removed (because the
last client vanished).
output::
output (1)::
Sent when RandR issues a change notification (of either screens,
outputs, CRTCs or output properties).

*Example:*
--------------------------------------------------------------------
# the appropriate 4 bytes read from the socket are stored in $input

# unpack a 32-bit unsigned integer
my $message_type = unpack("L", $input);

# check if the highest bit is 1
my $is_event = (($message_type >> 31) == 1);

# use the other bits
my $event_type = ($message_type & 0x7F);

if ($is_event) {
say "Received event of type $event_type";
}
--------------------------------------------------------------------

=== workspace event

This event consists of a single serialized map containing a property
Expand Down

0 comments on commit f1aa9d7

Please sign in to comment.