śĪ!!i­’Õ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌNone(!$%&',-./145679:;=>?@ACDEHMPSX_`aefk*)i3ipcI3 IPC Commands 6https://i3wm.org/docs/ipc.html#_sending_messages_to_i3i3ipcJRun the payload as an i3 command (like the commands you can bind to keys).i3ipc$Get the list of current workspaces. i3ipcSSubscribe this IPC connection to the event types specified in the message payload. i3ipc Get the list of current outputs.i3ipcGet the i3 layout tree.i3ipc*Gets the names of all currently set marks.i3ipc`Gets the specified bar configuration or the names of all bar configurations if payload is empty.i3ipcGets the i3 version. i3ipc9Gets the names of all currently configured binding modes. i3ipc#Returns the last loaded i3 config. i3ipc.Sends a tick event with the specified payload. i3ipcOSends an i3 sync event with the specified random value to the specified window. i3ipc$Create a message for i3 based on on  Output of the form: "i3-ipc"  msglen  msgtype payloadi3ipcCreate a msg for i3 based on " without a message body, based on i3ipc"Send a message over the socket of  and some contenti3ipc Similar to  but with no message body     None(!$%&',-./145679:;=>?@ACDEHMPSX_`aefk‰_0i3ipc¦Config Reply The config reply is a map which currently only contains the "config" member, which is a string containing the config file as loaded by i3 most recently.i3ipc]BindingModes Reply The reply consists of an array of all currently configured binding modes.i3ipc Version ReplyBi3ipcøBarConfig Reply This can be used by third-party workspace bars (especially i3bar, but others are free to implement compatible alternatives) to get the bar block configuration from i3._i3ipc’ Marks Reply The reply consists of a single array of strings for each container that has a mark. A mark can only be set on one container, so the array is unique. The order of that array is undefined. If no window has a mark the response will be the empty array [].mi3ipc’2Tree Reply The reply consists of a serialized tree. Each node in the tree (representing one container) has at least the properties listed below. While the nodes might have more properties, please do not use any properties which are not documented here. They are not yet finalized and will probably change!oi3ipc±The internal ID (actually a C pointer value) of this container. Do not make any assumptions about it. You can use it to (re-)identify and address containers when talking to i3. pi3ipc’^The internal name of this container. For all containers which are part of the tree structure down to the workspace contents, this is set to a nice human-readable name of the container. For containers that have an X11 window, the content is the title (_NET_WM_NAME property) of that window. For all other containers, the content is not defined (yet). qi3ipcjType of this container. Can be one of "root", "output", "con", "floating_con", "workspace" or "dockarea". ri3ipc2The X11 display the node is drawn in. ex. "DP-4.8"si3ipc/Can either be "horizontal" "vertical" or "none"ti3ipcVCan be either "normal", "none" or "pixel", depending on the container s border style. ui3ipc&Number of pixels of the border width. vi3ipc˜Can be either "splith", "splitv", "stacked", "tabbed", "dockarea" or "output". Other values might be possible in the future, should we add new layouts. wi3ipcµThe percentage which this container takes in its parent. A value of null means that the percent property does not make sense for this container, for example for the root container. xi3ipc’The absolute display coordinates for this container. Display coordinates means that when you have two 1600x1200 monitors on a single X11 Display (the standard way), the coordinates of the first window on the second monitor are { "x": 1600, "y": 0, "width": 1600, "height": 1200 }. yi3ipc’wThe coordinates of the actual client window inside its container. These coordinates are relative to the container and do not include the window decoration (which is actually rendered on the parent container). So, when using the default layout, you will have a 2 pixel border on each side, making the window_rect { "x": 2, "y": 0, "width": 632, "height": 366 } (for example). zi3ipcœThe coordinates of the window decoration inside its container. These coordinates are relative to the container and do not include the actual client window. {i3ipczThe original geometry the window specified when i3 mapped it. Used when switching a window to floating mode, for example. |i3ipcńThe X11 window ID of the actual client window inside this container. This field is set to null for split containers or otherwise empty containers. This ID corresponds to what xwininfo(1) and other X11-related tools display (usually in hex). }i3ipcMX11 window properties title, instance, class, window_role and transient_for. ~i3ipcłWhether this container (window, split container, floating container or workspace) has the urgency hint set, directly or indirectly. All parent containers up until the workspace container will be marked urgent if they have at least one urgent child. i3ipc-Whether this container is currently focused. €i3ipcÓList of child node IDs (see nodes, floating_nodes and id) in focus order. Traversing the tree by following the first entry in this array will result in eventually reaching the one node with focused set to true. ‚i3ipcYThe floating child containers of this node. Only non-empty on nodes with type workspace. ƒi3ipc>The tiling (i.e. non-floating) child containers of this node. ‹i3ipcCOutputs Reply The reply consists of a serialized list of outputs. i3ipc„The logical number of the workspace. Corresponds to the command to switch to this workspace. For named workspaces, this will be -1. i3ipcYThe name of this workspace (by default num+1), as changed by the user. Encoded in UTF-8. ‘i3ipcpWhether this workspace is currently visible on an output (multiple workspaces can be visible at the same time). ’i3ipchWhether this workspace currently has the focus (only one workspace can have the focus at the same time).“i3ipc>Whether a window on this workspace has the "urgent" flag set. ”i3ipckThe rectangle of this workspace (equals the rect of the output it is on), consists of x, y, width, height. •i3ipc8The video output this workspace is on (LVDS1, VGA1, &). –i3ipcIWorkspaces Reply The reply consists of a serialized list of workspaces. ˜i3ipc6Success Reply used for Sync, Subscribe, Command, Tickœi3ipcJRun the payload as an i3 command (like the commands you can bind to keys).i3ipc$Get the list of current workspaces. ži3ipcSSubscribe this IPC connection to the event types specified in the message payload. Ÿi3ipc Get the list of current outputs. i3ipcGet the i3 layout tree.”i3ipc*Gets the names of all currently set marks.¢i3ipc`Gets the specified bar configuration or the names of all bar configurations if payload is empty.£i3ipcGets the i3 version.¤i3ipc9Gets the names of all currently configured binding modes.„i3ipc#Returns the last loaded i3 config. ¦i3ipc.Sends a tick event with the specified payload.§i3ipcOSends an i3 sync event with the specified random value to the specified window.— 6543210/.-,+*)('&%$#"!78A@?>=<;:9BCDKJIHGFELSRQPONMTUYXVWZ^]\[_`agfecbdhlkjimnƒ‚€~}|{zyxwvutsrqpo„…Љˆ‡†‹ŒŽ•”“’‘–—˜™š›§¦¤¢”Ÿœž £„Ø©Ŗ—›§¦¤¢”Ÿœž £„Ø©Ŗ˜™š–—Ž•”“’‘‹Œ„…Љˆ‡†mnƒ‚€~}|{zyxwvutsrqpohlkjiagfecbd_`Z^]\[TUYXVWLSRQPONMDKJIHGFEBC78A@?>=<;:9 6543210/.-,+*)('&%$#"!None*!"#$%&',-./145679:;=>?@ACDEHMPSX_`aefkŪĶ%i3ipcMTick Event This event is triggered by a subscription to tick events or by a  message.i3ipc’’Shutdown Event This event is triggered when the connection to the ipc is about to shutdown because of a user action such as a restart or exit command. The change (string) field indicates why the ipc is shutting down. It can be either "restart" or "exit".i3ipc Bind type(i3ipc’!Binding Event This event consists of a single serialized map reporting on the details of a binding that ran a command because of user input. The change (string) field indicates what sort of binding event was triggered (right now it will always be "run" but may be expanded in the future).*i3ipcright now this is always "run"+i3ipc&Details about the binding that was run,i3ipcļBarConfig_Update Event This event consists of a single serialized map reporting on options from the barconfig of the specified bar_id that were updated in i3. This event is the same as a GET_BAR_CONFIG reply for the bar with the given id..i3ipc$the window has become managed by i3 /i3ipcthe window has closed 0i3ipc$the window has received input focus 1i3ipcthe window s title has changed 2i3ipc1the window has entered or exited fullscreen mode 3i3ipc0the window has changed its position in the tree 4i3ipc0the window has transitioned to or from floating 5i3ipc7the window has become urgent or lost its urgent status 6i3ipc4a mark has been added to or removed from the window 7i3ipcHan unknown change, submit a PR to add a new WindowChange if you get this8i3ipc‰Window Event This event consists of a single serialized map containing a property change (string) which indicates the type of the change;i3ipc’OAdditionally a container (object) field will be present, which consists of the window s parent container. Be aware that for the "new" event, the container will hold the initial name of the newly reparented window (e.g. if you run urxvt with a shell that changes the title, you will still at this point get the window title as "urxvt").<i3ipc’qMode Event This event consists of a single serialized map containing a property change (string) which holds the name of current mode in use. The name is the same as specified in config when creating a mode. The default mode is simply named default. It contains a second property, pango_markup, which defines whether pango markup shall be used for displaying this mode.>i3ipcalways "default"?i3ipc<Whether pango markup should be used for displaying this mode@i3ipc©Output Event This event consists of a single serialized map containing a property change (string) which indicates the type of the change (currently only "unspecified").Bi3ipcCurrently only "unspecified"Ci3ipc’ņWorkspace Event This event consists of a single serialized map containing a property change (string) which indicates the type of the change ("focus", "init", "empty", "urgent", "reload", "rename", "restored", "move"). A current (object) property will be present with the affected workspace whenever the type of event affects a workspace (otherwise, it will be +null). When the change is "focus", an old (object) property will be present with the previous workspace. When the first switch occurs (when i3 focuses the workspace visible at the beginning) there is no previous workspace, and the old property will be set to null. Also note that if the previous is empty it will get destroyed when switching, but will still be present in the "old" property.Ei3ipcType of workspace changeFi3ipcIIf the type of event affects the workspace this will have a Just instanceGi3ipcIWill be Just only when change is Focus and there was a previous workspaceRi3ipc5Responses to the various events you can subscribe to.Si3ipcSee C­ for response. 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). Ti3ipcSee @w for response. Sent when RandR issues a change notification (of either screens, outputs, CRTCs or output properties). Ui3ipcSee <; for response. Sent whenever i3 changes its binding mode. Vi3ipcSee 8Ż for response. Sent when a client s window is successfully reparented (that is when i3 has finished fitting it into a container), when a window received input focus or when certain properties of the window have changed. Wi3ipcSee ,Š for response. Sent when the hidden_state or mode field in the barconfig of any bar instance was updated and when the config is reloaded.Xi3ipcSee (^ for response. Sent when a configured command binding is triggered with the keyboard or mouse Yi3ipcSee Y for response. Sent when the ipc shuts down because of a restart or exit by user command Zi3ipcSee ” for response. Sent when the ipc client subscribes to the tick event (with "first": true) or when any ipc client sends a SEND_TICK message (with "first": false).I !"'&%$#()+*,-76543210/.89;:<=?>@ABCDGFEHQPONMLJIKRYXWVTSZU[\IRYXWVTSZU[\HQPONMLJIKCDGFE@AB<=?>89;:-76543210/.,()+*!"'&%$# None(!$%&',-./145679:;=>?@ACDEHMPSX_`aefkšt ›i3ipc3Subscribe from i3 have the following types (https:/i3wm.orgdocs/ipc.html#_events)œi3ipc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). i3ipcgSent when RandR issues a change notification (of either screens, outputs, CRTCs or output properties). ži3ipc+Sent whenever i3 changes its binding mode. Ÿi3ipcĶSent when a client s window is successfully reparented (that is when i3 has finished fitting it into a container), when a window received input focus or when certain properties of the window have changed.  i3ipc{Sent when the hidden_state or mode field in the barconfig of any bar instance was updated and when the config is reloaded. ”i3ipcOSent when a configured command binding is triggered with the keyboard or mouse ¢i3ipcJSent when the ipc shuts down because of a restart or exit by user command £i3ipc”Sent when the ipc client subscribes to the tick event (with "first": true) or when any ipc client sends a SEND_TICK message (with "first": false). ›ž£œŸ ”¢ ›ž£œŸ ”¢(c) 2019 Evan CameronBSD3%Evan Cameron <cameron.evan@gmail.com>None(!$%&',-./145679:;=>?@ACDEHMPSX_`aefkq©i3ipc5Useful for when you are receiving Events or Messages.Õi3ipcException type¬i3ipc"Get a new unix socket path from i3­i3ipc$Get a new unix socket path from sway®i3ipcSubscribe with a list of 4 types, and subscribe will to respond with specific Æi3ipc A version of ®i that allows the use of any monad transformer on top of MonadIO (kept around for backwards compatibility)°i3ipc%Connect to an i3 socket and return it±i3ipc$Connect to SWAY socket and return it²i3ipc)Get and parse the response using i3's IPC³i3ipc;Parse response from socket, returning either an error or a ©, representing a sum type of a › or “i3ipcHLike receive but strict-- will use eitherDecode' under the hood to parseµi3ipcZReceive but specifically for msgs, for when you know the response won't include any Events¶i3ipcLike µ but strict-- uses eitherDecode'·i3ipc³ specifically for Eventøi3ipclike · but strict-- uses eitherDecode'¹i3ipcfRun a command represented as a ByteString, all the following functions are convenience wrappers around 0Msg.sendMsgPayload soc Msg.X b >> receiveMsg soc Or, if there is no message body: 'Msg.sendMsg soc Msg.X >> receiveMsg socÄi3ipc#Get a bar's config based on it's idÅi3ipcLike Ä but strict'©«Ŗ¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻ'¬­©«Ŗ®Æ³“µ¶²°±·ø¹ŗ»¼½¾æĄĮĀĘĒÄÅĆČÉŹĖĢĶĪĻÖ      !"#$%&'()*+,-./0123456789:;;<=>?@ABCDEEFGHIJKLMNOPQRSTUVVWXYZ[\]^_``abcdefghijklmmnopqrstuvwxyz{|}~€‚ƒƒ„…†‡ˆ‰‰ŠŠ‹ŒŽ‘’’““”•    –—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’       !""#$%%&'(()**+,-./01234567Šƒ89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Šƒ89:;<}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®$i3ipc-0.2.0.0-2YNjrOd0NLg9KCfnA0qdC7 I3IPC.Message I3IPC.Reply I3IPC.EventI3IPC.SubscribeI3IPCTick SubscribeEvent MessageType RunCommand WorkspacesOutputsTreeMarks BarConfigVersion BindingModesConfigSynccreateMsgPayload createMsgsendMsgPayloadsendMsg$fEnumMessageType$fShowMessageType$fEqMessageType ConfigReplyc_configBindingModesReply VersionReplyv_majorv_minorv_patchv_human_readablev_loaded_config_file_nameBarPart Background Statusline SeparatorFocusedBackgroundFocusedStatuslineFocusedSeparatorFocusedWorkspaceTextFocusedWorkspaceBgFocusedWorkspaceBorderActiveWorkspaceTextActiveWorkspaceBgActiveWorkspaceBorderInactiveWorkspaceTextInactiveWorkspaceBgInactiveWorkspaceBorderUrgentWorkspaceTextUrgentWorkspaceBgUrgentWorkspaceBorderBindingModeText BindingModeBgBindingModeBorderUnknownBarPartBarConfigReplybar_idbar_mode bar_positionbar_status_commandbar_fontbar_workspace_buttonsbar_binding_mode_indicator bar_verbose bar_colorsBarIds NodeLayoutSplitHorizontalLayoutSplitVerticalLayout StackedLayout TabbedLayoutDockAreaLayout OutputLayout UnknownLayoutNodeTypeRootType OutputTypeConTypeFloatingConType WorkspaceType DockAreaType UnknownTypeRectxywidthheight NodeBorderNormalNonePixel UnknownBorder MarksReplyWindowPropertyTitleInstanceClass WindowRole TransientForUnknownPropertyNodeOrientation HorizontalVertical OrientNone UnknownOrientNodenode_id node_name node_type node_outputnode_orientation node_bordernode_current_border_width node_layout node_percent node_rectnode_window_rectnode_deco_rect node_geometry node_windownode_window_properties node_urgent node_focused node_focus node_stickynode_floating_nodes node_nodesOutput output_name output_activeoutput_primaryoutput_current_workspace output_rect OutputsReply Workspacews_numws_name ws_visible ws_focused ws_urgentws_rect ws_outputWorkspaceReplySuccesssuccessMsgReply toMsgReply' toMsgReply decodeBarIds$fToJSONSuccess$fToJSONNodeOrientation$fFromJSONNodeOrientation$fToJSONWindowProperty$fFromJSONWindowProperty$fToJSONKeyWindowProperty$fFromJSONKeyWindowProperty$fToJSONMarksReply$fFromJSONNodeBorder$fToJSONNodeBorder $fToJSONRect$fFromJSONOutput$fToJSONOutput$fFromJSONOutputsReply$fToJSONOutputsReply$fFromJSONWorkspace$fToJSONWorkspace$fFromJSONWorkspaceReply$fToJSONWorkspaceReply$fFromJSONNodeType$fToJSONNodeType$fFromJSONNodeLayout$fToJSONNodeLayout$fFromJSONNode $fToJSONNode$fFromJSONBarIds$fToJSONBarIds$fToJSONBarPart$fFromJSONBarPart$fToJSONKeyBarPart$fFromJSONBarConfigReply$fToJSONBarConfigReply$fFromJSONVersionReply$fToJSONVersionReply$fFromJSONBindingModesReply$fToJSONBindingModesReply$fFromJSONConfigReply$fToJSONConfigReply $fEqSuccess $fShowSuccess$fGenericSuccess$fFromJSONSuccess$fEqNodeOrientation$fGenericNodeOrientation$fShowNodeOrientation$fEqWindowProperty$fEnumWindowProperty$fOrdWindowProperty$fGenericWindowProperty$fShowWindowProperty$fEqMarksReply$fGenericMarksReply$fShowMarksReply$fFromJSONMarksReply$fEqNodeBorder$fGenericNodeBorder$fShowNodeBorder$fEqRect $fGenericRect $fShowRect$fFromJSONRect $fEqOutput $fShowOutput$fGenericOutput$fEqOutputsReply$fGenericOutputsReply$fShowOutputsReply $fEqWorkspace$fGenericWorkspace$fShowWorkspace$fEqWorkspaceReply$fGenericWorkspaceReply$fShowWorkspaceReply $fEqNodeType$fGenericNodeType$fShowNodeType$fEqNodeLayout$fGenericNodeLayout$fShowNodeLayout$fEqNode $fGenericNode $fShowNode $fEqBarIds$fGenericBarIds $fShowBarIds $fEqBarPart $fEnumBarPart $fOrdBarPart$fGenericBarPart $fShowBarPart$fFromJSONKeyBarPart$fEqBarConfigReply$fGenericBarConfigReply$fShowBarConfigReply$fEqVersionReply$fGenericVersionReply$fShowVersionReply$fEqBindingModesReply$fGenericBindingModesReply$fShowBindingModesReply$fEqConfigReply$fGenericConfigReply$fShowConfigReply$fShowMsgReply $fEqMsgReply TickEvent tick_first tick_payloadShutdownChangeRestartExit ShutdownEventshutdown_changeBindTypeKeyboardMouse BindingObject bind_commandbind_event_state_maskbind_input_code bind_symbolbind_input_type BindingEvent bind_change bind_bindingBarConfigUpdateEvent WindowChangeWinNewWinCloseWinFocusWinTitleWinFullscreenModeWinMove WinFloating WinUrgentWinMark WinUnknown WindowEvent win_change win_container ModeEvent mode_changemode_pango_markup OutputEvent output_changeWorkspaceEvent wrk_change wrk_currentwrk_oldWorkspaceChangeFocusInitEmptyUrgentRenameReloadRestoredMove UnknownChangeModeWindowBarConfigUpdateBindingShutdowntoEvent'toEvent$fFromJSONWorkspaceChange$fToJSONWorkspaceChange$fFromJSONWorkspaceEvent$fToJSONWorkspaceEvent$fFromJSONOutputEvent$fToJSONOutputEvent$fFromJSONModeEvent$fToJSONModeEvent$fFromJSONWindowChange$fToJSONWindowChange$fFromJSONWindowEvent$fToJSONWindowEvent$fToJSONBindType$fFromJSONBindType$fFromJSONBindingObject$fToJSONBindingObject$fFromJSONBindingEvent$fToJSONBindingEvent$fToJSONShutdownChange$fFromJSONShutdownChange$fToJSONShutdownEvent$fFromJSONShutdownEvent$fFromJSONTickEvent$fToJSONTickEvent$fEqWorkspaceChange$fGenericWorkspaceChange$fShowWorkspaceChange$fEqWorkspaceEvent$fGenericWorkspaceEvent$fShowWorkspaceEvent$fEqOutputEvent$fGenericOutputEvent$fShowOutputEvent $fEqModeEvent$fGenericModeEvent$fShowModeEvent$fEqWindowChange$fShowWindowChange$fGenericWindowChange$fEqWindowEvent$fShowWindowEvent$fGenericWindowEvent $fEqBindType$fShowBindType$fGenericBindType$fEqBindingObject$fShowBindingObject$fGenericBindingObject$fEqBindingEvent$fShowBindingEvent$fGenericBindingEvent$fEqShutdownChange$fShowShutdownChange$fGenericShutdownChange$fEqShutdownEvent$fShowShutdownEvent$fGenericShutdownEvent $fEqTickEvent$fShowTickEvent$fGenericTickEvent $fEqEvent $fShowEvent$fToJSONSubscribe$fEnumSubscribe $fEqSubscribe$fGenericSubscribe$fShowSubscribeResponseMessage getSocketPathgetSwaySocketPath subscribe subscribeM connecti3 connectswaygetReplyreceivereceive' receiveMsg receiveMsg' receiveEvent receiveEvent' runCommand runCommand' getWorkspacesgetWorkspaces' getOutputs getOutputs'getTreegetTree'getMarks getMarks' getBarIds getBarConfig getBarConfig' getVersion getVersion'getBindingModesgetBindingModes' getConfig getConfig'getTickgetTick'getSyncgetSync'$fExceptionI3Exception$fShowI3Exception$fEqI3Exception$fShowResponse $fEqResponse I3Exception