X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=docs%2Fipc;h=83ab7218714df269cc01ad55302c47fe8b334a31;hb=3a378f7cb11f6adc42c2633d005b40a8376fff39;hp=e73ca6f85f66f7c2a9f4bbbad4dafb46af8a69a9;hpb=5a345db18bc92e23a54db16840412cd74b618d1d;p=i3%2Fi3 diff --git a/docs/ipc b/docs/ipc index e73ca6f8..83ab7218 100644 --- a/docs/ipc +++ b/docs/ipc @@ -1,7 +1,7 @@ IPC interface (interprocess communication) ========================================== -Michael Stapelberg -December 2011 +Michael Stapelberg +February 2012 This document describes how to interface with i3 from a separate process. This is useful for example to remote-control i3 (to write test cases for example) or @@ -11,8 +11,10 @@ workspace bar. The method of choice for IPC in our case is a unix socket because it has very little overhead on both sides and is usually available without headaches in most languages. In the default configuration file, the ipc-socket gets created -in +/tmp/i3-%u/ipc-socket.%p+ where +%u+ is your UNIX username and +%p+ is the -PID of i3. You can get the socketpath from i3 by calling +i3 --get-socketpath+. +in +/tmp/i3-%u.XXXXXX/ipc-socket.%p+ where +%u+ is your UNIX username, +%p+ is +the PID of i3 and XXXXXX is a string of random characters from the portable +filename character set (see mkdtemp(3)). You can get the socketpath from i3 by +calling +i3 --get-socketpath+. All i3 utilities, like +i3-msg+ and +i3-input+ will read the +I3_SOCKET_PATH+ X11 property, stored on the X11 root window. @@ -68,10 +70,6 @@ GET_BAR_CONFIG (6):: Gets the configuration (as JSON map) of the workspace bar with the given ID. If no ID is provided, an array with all configured bar IDs is returned instead. -GET_LOG_MARKERS (7):: - Gets the SHM log markers for the current position, the last wrap, the - SHM segment name and segment size. This is necessary for tools like - i3-dump-log which want to display the SHM log. So, a typical message could look like this: -------------------------------------------------- @@ -127,8 +125,6 @@ MARKS (5):: Reply to the GET_MARKS message. BAR_CONFIG (6):: Reply to the GET_BAR_CONFIG message. -LOG_MARKERS (7):: - Reply to the GET_LOG_MARKERS message. === COMMAND reply @@ -530,40 +526,6 @@ urgent_workspace_text/urgent_workspace_bar:: } -------------- -=== LOG_MARKERS reply - -Gets the SHM log markers for the current position, the last wrap, the -SHM segment name and segment size. This is necessary for tools like -i3-dump-log which want to display the SHM log. - -The reply is a JSON map with the following entries: - -shmname (string):: - The name of the SHM segment, will be of the format +/i3-log-+. -size (integer):: - The size (in bytes) of the SHM segment. If this is 0, SHM logging is - disabled. -offset_next_write (integer):: - The offset in the SHM segment at which the next write will happen. - Tools should start printing lines from here, since the bytes following - this offset are the oldest log lines. However, the first line might be - garbled, so it makes sense to skip all bytes until the first \0. -offset_last_wrap (integer):: - The offset in the SHM segment at which the last wrap occured. i3 only - stores entire messages in the SHM log, so it might waste a few bytes at - the end to be more efficient. Tools should not print content after the - offset_last_wrap. - -*Example*: ------------------------------ -{ - "offset_next_write":132839, - "offset_last_wrap":26214400, - "shmname":"/i3-log-3392", - "size":26214400 -} ------------------------------ - == Events [[events]] @@ -661,4 +623,5 @@ Ruby:: Perl:: http://search.cpan.org/search?query=AnyEvent::I3 Python:: - http://github.com/thepub/i3ipc + https://github.com/whitelynx/i3ipc + https://github.com/ziberna/i3-py (includes higher-level features)