Provided by: sway_1.9-1build2_amd64 bug

NAME

       sway-ipc - IPC protocol for sway

DESCRIPTION

       This  details the interprocess communication (IPC) protocol for sway(1). This IPC protocol can be used to
       control or obtain information from a sway process.

       The IPC protocol uses a UNIX socket as the method of communication. The path to the socket is  stored  in
       the environment variable SWAYSOCK and, for backwards compatibility with i3, I3SOCK. You can also retrieve
       the socket path by calling sway --get-socketpath.

MESSAGE AND REPLY FORMAT

       The format for messages and replies is:
           <magic-string> <payload-length> <payload-type> <payload>
       Where
            <magic-string> is i3-ipc, for compatibility with i3
            <payload-length> is a 32-bit integer in native byte order
            <payload-type> is a 32-bit integer in native byte order

       For example, sending the exit command would look like the following hexdump:
           00000000 | 69 33 2d 69 70 63 04 00 00 00 00 00 00 00 65 78 |i3-ipc........ex|
           00000010 | 69 74                                           |it              |

       The payload for replies will be a valid serialized JSON data structure.

MESSAGES AND REPLIES

       The following message types and their corresponding reply types are currently supported. For all replies,
       any properties not listed are subject to removal.

       ┌─────────────┬───────────────────┬──────────────────────────────┐
       │ TYPE NUMBERMESSAGE NAMEPURPOSE            │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      0      │    RUN_COMMAND    │ Runs  the  payload  as  sway │
       │             │                   │ commands                     │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      1      │  GET_WORKSPACES   │ Get  the  list  of   current │
       │             │                   │ workspaces                   │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      2      │     SUBSCRIBE     │ Subscribe the IPC connection │
       │             │                   │ to  the events listed in the │
       │             │                   │ payload                      │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      3      │    GET_OUTPUTS    │ Get  the  list  of   current │
       │             │                   │ outputs                      │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      4      │     GET_TREE      │ Get the node layout tree     │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      5      │     GET_MARKS     │ Get  the  names  of  all the │
       │             │                   │ marks currently set          │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      6      │  GET_BAR_CONFIG   │ Get the specified bar config │
       │             │                   │ or  a  list  of  bar  config │
       │             │                   │ names                        │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      7      │    GET_VERSION    │ Get the version of sway that │
       │             │                   │ owns the IPC socket          │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      8      │ GET_BINDING_MODES │ Get the list of binding mode │
       │             │                   │ names                        │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │      9      │    GET_CONFIG     │ Returns  the config that was │
       │             │                   │ last loaded                  │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │     10      │     SEND_TICK     │ Sends a tick event with  the │
       │             │                   │ specified payload            │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │     11      │       SYNC        │ Replies  failure  object for │
       │             │                   │ i3 compatibility             │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │     12      │ GET_BINDING_STATE │ Request the current  binding │
       │             │                   │ state,  e.g.  the  currently │
       │             │                   │ active binding mode name.    │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │     100     │    GET_INPUTS     │ Get  the   list   of   input │
       │             │                   │ devices                      │
       ├─────────────┼───────────────────┼──────────────────────────────┤
       │     101     │     GET_SEATS     │ Get the list of seats        │
       └─────────────┴───────────────────┴──────────────────────────────┘

   0. RUN_COMMAND
       MESSAGE
       Parses and runs the payload as sway commands

       REPLY
       An  array of objects corresponding to each command that was parsed. Each object has the property success,
       which is a boolean indicating whether the command  was  successful.  The  object  may  also  contain  the
       properties  error and parse_error. The error property is a human readable error message while parse_error
       is a boolean indicating whether the reason the command failed was because the command was unknown or  not
       able to be parsed.

       Example Reply:
           [
                {
                     "success": true
                },
                {
                     "success": false,
                     "parse_error": true,
                     "error": "Invalid/unknown command"
                }
           ]

   1. GET_WORKSPACES
       MESSAGE
       Retrieves the list of workspaces.

       REPLY
       The  reply  is  an  array  of  objects  corresponding  to  each  workspace. Each object has the following
       properties:

       ┌──────────┬───────────┬──────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────┼───────────┼──────────────────────────────┤
       │   num    │  integer  │ The workspace number  or  -1 │
       │          │           │ for  workspaces  that do not │
       │          │           │ start with a number          │
       ├──────────┼───────────┼──────────────────────────────┤
       │   name   │  string   │ The name of the workspace    │
       ├──────────┼───────────┼──────────────────────────────┤
       │ visible  │  boolean  │ Whether  the  workspace   is │
       │          │           │ currently   visible  on  any │
       │          │           │ output                       │
       ├──────────┼───────────┼──────────────────────────────┤
       │ focused  │  boolean  │ Whether  the  workspace   is │
       │          │           │ currently   focused  by  the │
       │          │           │ default seat (seat0)         │
       ├──────────┼───────────┼──────────────────────────────┤
       │  urgent  │  boolean  │ Whether  a   view   on   the │
       │          │           │ workspace   has  the  urgent │
       │          │           │ flag set                     │
       ├──────────┼───────────┼──────────────────────────────┤
       │   rect   │  object   │ The bounds of the workspace. │
       │          │           │ It consists of x, y,  width, │
       │          │           │ and height                   │
       ├──────────┼───────────┼──────────────────────────────┤
       │  output  │  string   │ The  name of the output that │
       │          │           │ the workspace is on          │
       └──────────┴───────────┴──────────────────────────────┘

       Example Reply:
           [
                {
                     "num": 1,
                     "name": "1",
                     "visible": true,
                     "focused": true,
                     "rect": {
                          "x": 0,
                          "y": 23,
                          "width": 1920,
                          "height": 1057
                     },
                     "output": "eDP-1"
                },
           ]

   2. SUBSCRIBE
       MESSAGE
       Subscribe this IPC connection to the event types specified in the message payload. The payload should  be
       a valid JSON array of events. See the EVENTS section for the list of supported events.

       REPLY
       A  single  object  that  contains  the  property success, which is a boolean value indicating whether the
       subscription was successful or not.

       Example Reply:
           {
                "success": true
           }

   3. GET_OUTPUTS
       MESSAGE
       Retrieve the list of outputs

       REPLY
       An array of objects corresponding to each output. Each object has the following properties:

       ┌───────────────────┬───────────┬──────────────────────────────┐
       │     PROPERTYDATA TYPEDESCRIPTION          │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       name        │  string   │ The name of the  output.  On │
       │                   │           │ DRM, this is the connector   │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       make        │  string   │ The make of the output       │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       model       │  string   │ The model of the output      │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │      serial       │  string   │ The  output's  serial number │
       │                   │           │ as a hexadecimal string      │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │      active       │  boolean  │ Whether   this   output   is │
       │                   │           │ active/enabled               │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       dpms        │  boolean  │ (Deprecated,    use    power │
       │                   │           │ instead) Whether this output │
       │                   │           │ is on/off (via DPMS)         │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       power       │  boolean  │ Whether   this   output   is │
       │                   │           │ on/off                       │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │      primary      │  boolean  │ For  i3  compatibility, this │
       │                   │           │ will be false. It  does  not │
       │                   │           │ make sense in Wayland        │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       scale       │   float   │ The  scale  currently in use │
       │                   │           │ on  the  output  or  -1  for │
       │                   │           │ disabled outputs             │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │ subpixel_hinting  │  string   │ The subpixel hinting current │
       │                   │           │ in  use  on the output. This │
       │                   │           │ can be rgb, bgr, vrgb, vbgr, │
       │                   │           │ or none                      │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │     transform     │  string   │ The transform  currently  in │
       │                   │           │ use for the output. This can │
       │                   │           │ be  normal,  90,  180,  270, │
       │                   │           │ flipped-90, flipped-180,  or │
       │                   │           │ flipped-270                  │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │ current_workspace │  string   │ The    workspace   currently │
       │                   │           │ visible  on  the  output  or │
       │                   │           │ null for disabled outputs    │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       modes       │   array   │ An  array  of supported mode │
       │                   │           │ objects.     Each     object │
       │                   │           │ contains  width, height, and │
       │                   │           │ refresh                      │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │   current_mode    │  object   │ An object  representing  the │
       │                   │           │ current    mode   containing │
       │                   │           │ width, height, and refresh   │
       ├───────────────────┼───────────┼──────────────────────────────┤
       │       rect        │  object   │ The bounds  for  the  output │
       │                   │           │ consisting  of  x, y, width, │
       │                   │           │ and height                   │
       └───────────────────┴───────────┴──────────────────────────────┘

       Example Reply:
           [
                {
                     "name": "HDMI-A-2",
                     "make": "Unknown",
                     "model": "NS-19E310A13",
                     "serial": "0x00000001",
                     "active": true,
                     "primary": false,
                     "scale": 1.0,
                     "subpixel_hinting": "rgb",
                     "transform": "normal",
                     "current_workspace": "1",
                     "modes": [
                          {
                               "width": 640,
                               "height": 480,
                               "refresh": 59940
                          },
                          {
                               "width": 800,
                               "height": 600,
                               "refresh": 60317
                          },
                          {
                               "width": 1024,
                               "height": 768,
                               "refresh": 60004
                          },
                          {
                               "width": 1920,
                               "height": 1080,
                               "refresh": 60000
                          }
                     ],
                     "current_mode": {
                          "width": 1920,
                          "height": 1080,
                          "refresh": 60000
                     }
                }
           ]

   4. GET_TREE
       MESSAGE
       Retrieve a JSON representation of the tree

       REPLY
       An array of objects that represent the current tree. Each object represents one node and  will  have  the
       following properties:

       ┌──────────────────────┬───────────┬──────────────────────────────┐
       │       PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │          id          │  integer  │ The  internal  unique ID for │
       │                      │           │ this node                    │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │         name         │  string   │ The name of the node such as │
       │                      │           │ the output  name  or  window │
       │                      │           │ title.  For  the scratchpad, │
       │                      │           │ this  will  be  __i3_scratch │
       │                      │           │ for compatibility with i3.   │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │         type         │  string   │ The  node  type.  It  can be │
       │                      │           │ root,   output,   workspace, │
       │                      │           │ con, or floating_con         │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        border        │  string   │ The  border  style  for  the │
       │                      │           │ node.  It  can  be   normal, │
       │                      │           │ none, pixel, or csd          │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │ current_border_width │  integer  │ Number  of  pixels  used for │
       │                      │           │ the border width             │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        layout        │  string   │ The node's  layout.  It  can │
       │                      │           │ either  be  splith,  splitv, │
       │                      │           │ stacked, tabbed, or output   │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │     orientation      │  string   │ The node's  orientation.  It │
       │                      │           │ can be vertical, horizontal, │
       │                      │           │ or none                      │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │       percent        │   float   │ The percentage of the node's │
       │                      │           │ parent  that  it takes up or │
       │                      │           │ null for the root and  other │
       │                      │           │ special  nodes  such  as the │
       │                      │           │ scratchpad                   │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │         rect         │  object   │ The absolute geometry of the │
       │                      │           │ node. The window decorations │
       │                      │           │ are excluded from this,  but │
       │                      │           │ borders are included.        │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │     window_rect      │  object   │ The  geometry of the content │
       │                      │           │ inside   the   node.   These │
       │                      │           │ coordinates  are relative to │
       │                      │           │ the  node   itself.   Window │
       │                      │           │ decorations  and borders are │
       │                      │           │ outside the window_rect      │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │      deco_rect       │  object   │ The    geometry    of    the │
       │                      │           │ decorations   for  the  node │
       │                      │           │ relative to the parent node  │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │       geometry       │  object   │ The natural geometry of  the │
       │                      │           │ contents  if it were to size │
       │                      │           │ itself                       │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        urgent        │  boolean  │ Whether the node or  any  of │
       │                      │           │ its   descendants   has  the │
       │                      │           │ urgent hint set. Note:  This │
       │                      │           │ may  not exist when compiled │
       │                      │           │ without xwayland support     │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        sticky        │  boolean  │ Whether the node  is  sticky │
       │                      │           │ (shows on all workspaces)    │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        marks         │   array   │ List  of  marks  assigned to │
       │                      │           │ the node                     │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │       focused        │  boolean  │ Whether    the    node    is │
       │                      │           │ currently   focused  by  the │
       │                      │           │ default seat (seat0)         │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        focus         │   array   │ Array of child node  IDs  in │
       │                      │           │ the current focus order      │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        nodes         │   array   │ The  tiling  children  nodes │
       │                      │           │ for the node                 │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │    floating_nodes    │   array   │ The floating children  nodes │
       │                      │           │ for the node                 │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │    representation    │  string   │ (Only  workspaces)  A string │
       │                      │           │ representation of the layout │
       │                      │           │ of the workspace that can be │
       │                      │           │ used as an aid in submitting │
       │                      │           │ reproduction steps  for  bug │
       │                      │           │ reports                      │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │   fullscreen_mode    │  integer  │ (Only  containers and views) │
       │                      │           │ The fullscreen mode  of  the │
       │                      │           │ node.  0 means none, 1 means │
       │                      │           │ full workspace, and 2  means │
       │                      │           │ global fullscreen            │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        app_id        │  string   │ (Only  views)  For  an  xdg- │
       │                      │           │ shell view, the name of  the │
       │                      │           │ application,     if     set. │
       │                      │           │ Otherwise, null              │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │         pid          │  integer  │ (Only views) The PID of  the │
       │                      │           │ application  that  owns  the │
       │                      │           │ view                         │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │       visible        │  boolean  │ (Only  views)  Whether   the │
       │                      │           │ node is visible              │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        shell         │  string   │ (Only  views)  The  shell of │
       │                      │           │ the view, such as  xdg_shell │
       │                      │           │ or xwayland                  │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │     inhibit_idle     │  boolean  │ (Only   views)  Whether  the │
       │                      │           │ view is inhibiting the  idle │
       │                      │           │ state                        │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │   idle_inhibitors    │  object   │ (Only   views)   An   object │
       │                      │           │ containing the state of  the │
       │                      │           │ application  and  user  idle │
       │                      │           │ inhibitors.  application can │
       │                      │           │ be enabled  or  none.   user │
       │                      │           │ can  be  focus,  fullscreen, │
       │                      │           │ open, visible or none.       │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │        window        │  integer  │ (Only  xwayland  views)  The │
       │                      │           │ X11   window   ID   for  the │
       │                      │           │ xwayland view                │
       ├──────────────────────┼───────────┼──────────────────────────────┤
       │  window_properties   │  object   │ (Only  xwayland  views)   An │
       │                      │           │ object containing the title, │
       │                      │           │ class,             instance, │
       │                      │           │ window_role,    window_type, │
       │                      │           │ and  transient_for  for  the │
       │                      │           │ view                         │
       └──────────────────────┴───────────┴──────────────────────────────┘

       Example Reply:
           {
                "id": 1,
                "name": "root",
                "rect": {
                     "x": 0,
                     "y": 0,
                     "width": 1920,
                     "height": 1080
                },
                "focused": false,
                "focus": [
                     3
                ],
                "border": "none",
                "current_border_width": 0,
                "layout": "splith",
                "orientation": "horizontal",
                "percent": null,
                "window_rect": {
                     "x": 0,
                     "y": 0,
                     "width": 0,
                     "height": 0
                },
                "deco_rect": {
                     "x": 0,
                     "y": 0,
                     "width": 0,
                     "height": 0
                },
                "geometry": {
                     "x": 0,
                     "y": 0,
                     "width": 0,
                     "height": 0
                },
                "window": null,
                "urgent": false,
                "floating_nodes": [
                ],
                "sticky": false,
                "type": "root",
                "nodes": [
                     {
                          "id": 2147483647,
                          "name": "__i3",
                          "rect": {
                               "x": 0,
                               "y": 0,
                               "width": 1920,
                               "height": 1080
                          },
                          "focused": false,
                          "focus": [
                               2147483646
                          ],
                          "border": "none",
                          "current_border_width": 0,
                          "layout": "output",
                          "orientation": "horizontal",
                          "percent": null,
                          "window_rect": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "deco_rect": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "geometry": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "window": null,
                          "urgent": false,
                          "floating_nodes": [
                          ],
                          "sticky": false,
                          "type": "output",
                          "nodes": [
                               {
                                    "id": 2147483646,
                                    "name": "__i3_scratch",
                                    "rect": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 1920,
                                         "height": 1080
                                    },
                                    "focused": false,
                                    "focus": [
                                    ],
                                    "border": "none",
                                    "current_border_width": 0,
                                    "layout": "splith",
                                    "orientation": "horizontal",
                                    "percent": null,
                                    "window_rect": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "deco_rect": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "geometry": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "window": null,
                                    "urgent": false,
                                    "floating_nodes": [
                                    ],
                                    "sticky": false,
                                    "type": "workspace"
                               }
                          ]
                     },
                     {
                          "id": 3,
                          "name": "eDP-1",
                          "rect": {
                               "x": 0,
                               "y": 0,
                               "width": 1920,
                               "height": 1080
                          },
                          "focused": false,
                          "focus": [
                               4
                          ],
                          "border": "none",
                          "current_border_width": 0,
                          "layout": "output",
                          "orientation": "none",
                          "percent": 1.0,
                          "window_rect": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "deco_rect": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "geometry": {
                               "x": 0,
                               "y": 0,
                               "width": 0,
                               "height": 0
                          },
                          "window": null,
                          "urgent": false,
                          "floating_nodes": [
                          ],
                          "sticky": false,
                          "type": "output",
                          "active": true,
                          "primary": false,
                          "make": "Unknown",
                          "model": "0x38ED",
                          "serial": "0x00000000",
                          "scale": 1.0,
                          "transform": "normal",
                          "current_workspace": "1",
                          "modes": [
                               {
                                    "width": 1920,
                                    "height": 1080,
                                    "refresh": 60052
                               }
                          ],
                          "current_mode": {
                               "width": 1920,
                               "height": 1080,
                               "refresh": 60052
                          },
                          "nodes": [
                               {
                                    "id": 4,
                                    "name": "1",
                                    "rect": {
                                         "x": 0,
                                         "y": 23,
                                         "width": 1920,
                                         "height": 1057
                                    },
                                    "focused": false,
                                    "focus": [
                                         6,
                                         5
                                    ],
                                    "border": "none",
                                    "current_border_width": 0,
                                    "layout": "splith",
                                    "orientation": "horizontal",
                                    "percent": null,
                                    "window_rect": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "deco_rect": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "geometry": {
                                         "x": 0,
                                         "y": 0,
                                         "width": 0,
                                         "height": 0
                                    },
                                    "window": null,
                                    "urgent": false,
                                    "floating_nodes": [
                                    ],
                                    "sticky": false,
                                    "num": 1,
                                    "output": "eDP-1",
                                    "type": "workspace",
                                    "representation": "H[URxvt termite]",
                                    "nodes": [
                                         {
                                              "id": 5,
                                              "name": "urxvt",
                                              "rect": {
                                                   "x": 0,
                                                   "y": 23,
                                                   "width": 960,
                                                   "height": 1057
                                              },
                                              "focused": false,
                                              "focus": [
                                              ],
                                              "border": "normal",
                                              "current_border_width": 2,
                                              "layout": "none",
                                              "orientation": "none",
                                              "percent": 0.5,
                                              "window_rect": {
                                                   "x": 2,
                                                   "y": 0,
                                                   "width": 956,
                                                   "height": 1030
                                              },
                                              "deco_rect": {
                                                   "x": 0,
                                                   "y": 0,
                                                   "width": 960,
                                                   "height": 25
                                              },
                                              "geometry": {
                                                   "x": 0,
                                                   "y": 0,
                                                   "width": 1124,
                                                   "height": 422
                                              },
                                              "window": 4194313,
                                              "urgent": false,
                                              "floating_nodes": [
                                              ],
                                              "sticky": false,
                                              "type": "con",
                                              "fullscreen_mode": 0,
                                              "pid": 23959,
                                              "app_id": null,
                                              "visible": true,
                                              "shell": "xwayland",
                                              "inhibit_idle": true,
                                              "idle_inhibitors": {
                                                   "application": "none",
                                                   "user": "visible",
                                              },
                                              "window_properties": {
                                                   "class": "URxvt",
                                                   "instance": "urxvt",
                                                   "title": "urxvt",
                                                   "transient_for": null
                                              },
                                              "nodes": [
                                              ]
                                         },
                                         {
                                              "id": 6,
                                              "name": "",
                                              "rect": {
                                                   "x": 960,
                                                   "y": 23,
                                                   "width": 960,
                                                   "height": 1057
                                              },
                                              "focused": true,
                                              "focus": [
                                              ],
                                              "border": "normal",
                                              "current_border_width": 2,
                                              "layout": "none",
                                              "orientation": "none",
                                              "percent": 0.5,
                                              "window_rect": {
                                                   "x": 2,
                                                   "y": 0,
                                                   "width": 956,
                                                   "height": 1030
                                              },
                                              "deco_rect": {
                                                   "x": 0,
                                                   "y": 0,
                                                   "width": 960,
                                                   "height": 25
                                              },
                                              "geometry": {
                                                   "x": 0,
                                                   "y": 0,
                                                   "width": 817,
                                                   "height": 458
                                              },
                                              "window": null,
                                              "urgent": false,
                                              "floating_nodes": [
                                              ],
                                              "sticky": false,
                                              "type": "con",
                                              "fullscreen_mode": 0,
                                              "pid": 25370,
                                              "app_id": "termite",
                                              "visible": true,
                                              "shell": "xdg_shell",
                                              "inhibit_idle": false,
                                              "idle_inhibitors": {
                                                   "application": "none",
                                                   "user": "fullscreen",
                                              },
                                              "nodes": [
                                              ]
                                         }
                                    ]
                               }
                          ]
                     }
                ]
           }

   5. GET_MARKS
       MESSAGE
       Retrieve the currently set marks

       REPLY
       An array of marks current set. Since each mark can only be set for one container, this is a set  so  each
       value is unique and the order is undefined.

       Example Reply:
           [
                "one",
                "test"
           ]

   6. GET_BAR_CONFIG (WITHOUT A PAYLOAD)
       MESSAGE
       When sending without a payload, this retrieves the list of configured bar IDs

       REPLY
       An array of bar IDs, which are strings

       Example Reply:
           [
                "bar-0",
                "bar-1"
           ]

   6. GET_BAR_CONFIG (WITH A PAYLOAD)
       MESSAGE
       When  sent  with  a bar ID as the payload, this retrieves the config associated with the specified by the
       bar ID in the payload. This is used by swaybar, but could also be used for third party bars

       REPLY
       An object that represents the configuration for the bar  with  the  bar  ID  sent  as  the  payload.  The
       following properties exists and more information about what their value mean can be found in sway-bar(5):

       ┌────────────────────────┬───────────┬──────────────────────────────┐
       │        PROPERTYDATA TYPEDESCRIPTION          │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │           id           │  string   │ The bar ID                   │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │          mode          │  string   │ The mode for the bar. It can │
       │                        │           │ be dock, hide, or invisible  │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │        position        │  string   │ The  bar's  position. It can │
       │                        │           │ currently either  be  bottom │
       │                        │           │ or top                       │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │     status_command     │  string   │ The  command which should be │
       │                        │           │ run to generate  the  status │
       │                        │           │ line                         │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │          font          │  string   │ The font to use for the text │
       │                        │           │ on the bar                   │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │   workspace_buttons    │  boolean  │ Whether   to   display   the │
       │                        │           │ workspace buttons on the bar │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │  workspace_min_width   │  integer  │ Minimum width in px for  the │
       │                        │           │ workspace buttons on the bar │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │ binding_mode_indicator │  boolean  │ Whether   to   display   the │
       │                        │           │ current binding mode on  the │
       │                        │           │ bar                          │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │        verbose         │  boolean  │ For  i3  compatibility, this │
       │                        │           │ will be  the  boolean  value │
       │                        │           │ false.                       │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │         colors         │  object   │ An   object  containing  the │
       │                        │           │ #RRGGBBAA colors to use  for │
       │                        │           │ the  bar. See below for more │
       │                        │           │ information                  │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │          gaps          │  object   │ An object  representing  the │
       │                        │           │ gaps  for the bar consisting │
       │                        │           │ of top, right,  bottom,  and │
       │                        │           │ left.                        │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │       bar_height       │  integer  │ The  absolute  height to use │
       │                        │           │ for  the   bar   or   0   to │
       │                        │           │ automatically  size based on │
       │                        │           │ the font                     │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │     status_padding     │  integer  │ The vertical padding to  use │
       │                        │           │ for the status line          │
       ├────────────────────────┼───────────┼──────────────────────────────┤
       │  status_edge_padding   │  integer  │ The  horizontal  padding  to │
       │                        │           │ use for the status line when │
       │                        │           │ at the end of an output      │
       └────────────────────────┴───────────┴──────────────────────────────┘

       The colors object contains the following properties, which  are  all  strings  containing  the  #RRGGBBAA
       representation of the color:
       ┌───────────────────────────┬───────────────────────────────────────┐
       │         PROPERTYDESCRIPTION              │
       ├───────────────────────────┼───────────────────────────────────────┤
       │        background         │ The   color   to   use  for  the  bar │
       │                           │ background on unfocused outputs       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │        statusline         │ The color to use for the status  line │
       │                           │ text on unfocused outputs             │
       ├───────────────────────────┼───────────────────────────────────────┤
       │         separator         │ The  color  to  use for the separator │
       │                           │ text on unfocused outputs             │
       ├───────────────────────────┼───────────────────────────────────────┤
       │    focused_background     │ The color to use for  the  background │
       │                           │ of the bar on the focused output      │
       ├───────────────────────────┼───────────────────────────────────────┤
       │    focused_statusline     │ The  color to use for the status line │
       │                           │ text on the focused output            │
       ├───────────────────────────┼───────────────────────────────────────┤
       │     focused_separator     │ The color to use  for  the  separator │
       │                           │ text on the focused output            │
       ├───────────────────────────┼───────────────────────────────────────┤
       │  focused_workspace_text   │ The  color to use for the text of the │
       │                           │ focused workspace button              │
       ├───────────────────────────┼───────────────────────────────────────┤
       │   focused_workspace_bg    │ The color to use for  the  background │
       │                           │ of the focused workspace button       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │ focused_workspace_border  │ The  color  to  use for the border of │
       │                           │ the focused workspace button          │
       ├───────────────────────────┼───────────────────────────────────────┤
       │   active_workspace_text   │ The color to use for the text of  the │
       │                           │ workspace  buttons  for  the  visible │
       │                           │ workspaces on unfocused outputs       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │    active_workspace_bg    │ The color to use for  the  background │
       │                           │ of  the  workspace  buttons  for  the │
       │                           │ visible   workspaces   on   unfocused │
       │                           │ outputs                               │
       ├───────────────────────────┼───────────────────────────────────────┤
       │  active_workspace_border  │ The  color  to  use for the border of │
       │                           │ the workspace buttons for the visible │
       │                           │ workspaces on unfocused outputs       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │  inactive_workspace_text  │ The color to use for the text of  the │
       │                           │ workspace buttons for workspaces that │
       │                           │ are not visible                       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │   inactive_workspace_bg   │ The  color  to use for the background │
       │                           │ of   the   workspace   buttons    for │
       │                           │ workspaces that are not visible       │
       ├───────────────────────────┼───────────────────────────────────────┤
       │ inactive_workspace_border │ The  color  to  use for the border of │
       │                           │ the workspace buttons for  workspaces │
       │                           │ that are not visible                  │
       ├───────────────────────────┼───────────────────────────────────────┤
       │   urgent_workspace_text   │ The  color to use for the text of the │
       │                           │ workspace buttons for workspaces that │
       │                           │ contain an urgent view                │
       ├───────────────────────────┼───────────────────────────────────────┤
       │    urgent_workspace_bg    │ The color to use for  the  background │
       │                           │ of    the   workspace   buttons   for │
       │                           │ workspaces  that  contain  an  urgent │
       │                           │ view                                  │
       ├───────────────────────────┼───────────────────────────────────────┤
       │  urgent_workspace_border  │ The  color  to  use for the border of │
       │                           │ the workspace buttons for  workspaces │
       │                           │ that contain an urgent view           │
       ├───────────────────────────┼───────────────────────────────────────┤
       │     binding_mode_text     │ The  color to use for the text of the │
       │                           │ binding mode indicator                │
       ├───────────────────────────┼───────────────────────────────────────┤
       │      binding_mode_bg      │ The color to use for  the  background │
       │                           │ of the binding mode indicator         │
       ├───────────────────────────┼───────────────────────────────────────┤
       │    binding_mode_border    │ The  color  to  use for the border of │
       │                           │ the binding mode indicator            │
       └───────────────────────────┴───────────────────────────────────────┘

       Example Reply:
           {
                "id": "bar-0",
                "mode": "dock",
                "position": "top",
                "status_command": "while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done",
                "font": "monospace 10",
                "gaps": {
                     "top": 0,
                     "right": 0,
                     "bottom": 0,
                     "left": 0
                },
                "bar_height": 0,
                "status_padding": 1,
                "status_edge_padding": 3,
                "workspace_buttons": true,
                "workspace_min_width": 0,
                "binding_mode_indicator": true,
                "verbose": false,
                "pango_markup": false,
                "colors": {
                     "background": "#323232ff",
                     "statusline": "#ffffffff",
                     "separator": "#666666ff",
                     "focused_background": "#323232ff",
                     "focused_statusline": "#ffffffff",
                     "focused_separator": "#666666ff",
                     "focused_workspace_border": "#4c7899ff",
                     "focused_workspace_bg": "#285577ff",
                     "focused_workspace_text": "#ffffffff",
                     "inactive_workspace_border": "#32323200",
                     "inactive_workspace_bg": "#32323200",
                     "inactive_workspace_text": "#5c5c5cff",
                     "active_workspace_border": "#333333ff",
                     "active_workspace_bg": "#5f676aff",
                     "active_workspace_text": "#ffffffff",
                     "urgent_workspace_border": "#2f343aff",
                     "urgent_workspace_bg": "#900000ff",
                     "urgent_workspace_text": "#ffffffff",
                     "binding_mode_border": "#2f343aff",
                     "binding_mode_bg": "#900000ff",
                     "binding_mode_text": "#ffffffff"
                },
           }

   7. GET_VERSION
       MESSAGE
       Retrieve version information about the sway process

       REPLY
       An object containing the following properties:

       ┌─────────────────────────┬───────────┬──────────────────────────────┐
       │        PROPERTYDATA TYPEDESCRIPTION          │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │          major          │  integer  │ The  major  version  of  the │
       │                         │           │ sway process                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │          minor          │  integer  │ The  minor  version  of  the │
       │                         │           │ sway process                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │          patch          │  integer  │ The  patch  version  of  the │
       │                         │           │ sway process                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │     human_readable      │  string   │ A   human  readable  version │
       │                         │           │ string  that   will   likely │
       │                         │           │ contain      more     useful │
       │                         │           │ information such as the  git │
       │                         │           │ commit  short  hash  and git │
       │                         │           │ branch                       │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │ loaded_config_file_name │  string   │ The  path  to   the   loaded │
       │                         │           │ config file                  │
       └─────────────────────────┴───────────┴──────────────────────────────┘

       Example Reply:
           {
                "human_readable": "1.0-rc1-117-g2f7247e0 (Feb 24 2019, branch 'master')",
                "major": 1,
                "minor": 0,
                "patch": 0,
                "loaded_config_file_name": "/home/redsoxfan/.config/sway/config"
           }

   8. GET_BINDING_MODES
       MESSAGE
       Retrieve the list of binding modes that currently configured

       REPLY
       An array of strings, with each string being the name of a binding mode. This will always contain at least
       one mode (currently default), which is the default binding mode

       Example Reply:
           [
                "default",
                "resize",
           ]

   9. GET_CONFIG
       MESSAGE
       Retrieve the contents of the config that was last loaded

       REPLY
       An object with a single string property containing the contents of the config

       Example Reply:
           {
                "config": "set $mod Mod4nbindsym $mod+q exitn"
           }

   10. SEND_TICK
       MESSAGE
       Issues  a  TICK event to all clients subscribing to the event to ensure that all events prior to the tick
       were received. If a payload is given, it will be included in the TICK event

       REPLY
       A single object contains the property success, which is a boolean value indicating whether the TICK event
       was sent.

       Example Reply:
           {
                "success": true
           }

   11. SYNC
       MESSAGE
       For i3 compatibility, this command will just return a failure object since it  does  not  make  sense  to
       implement  in  sway  due to the X11 nature of the command. If you are curious about what this IPC command
       does in i3, refer to the i3 documentation.

       REPLY
       A single object that contains the property success, which is set to the boolean value false.

       Exact Reply:
           {
                "success": false
           }

   12. GET_BINDING_STATE
       MESSAGE
       Returns the currently active binding mode.

       REPLY
       A single object that contains the property name, which is set to the currently active binding mode  as  a
       string.

       Exact Reply:
           {
                "name": "default"
           }

   100. GET_INPUTS
       MESSAGE
       Retrieve a list of the input devices currently available

       REPLY
       An array of objects corresponding to each input device. Each object has the following properties:

       ┌─────────────────────────┬───────────┬──────────────────────────────┐
       │        PROPERTYDATA TYPEDESCRIPTION          │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │       identifier        │  string   │ The identifier for the input │
       │                         │           │ device                       │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │          name           │  string   │ The  human readable name for │
       │                         │           │ the device                   │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │         vendor          │  integer  │ The  vendor  code  for   the │
       │                         │           │ input device                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │         product         │  integer  │ The  product  code  for  the │
       │                         │           │ input device                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │          type           │  string   │ The device  type.  Currently │
       │                         │           │ this    can   be   keyboard, │
       │                         │           │ pointer, touch, tablet_tool, │
       │                         │           │ tablet_pad, or switch        │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │ xkb_active_layout_name  │  string   │ (Only keyboards) The name of │
       │                         │           │ the active  keyboard  layout │
       │                         │           │ in use                       │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │    xkb_layout_names     │   array   │ (Only  keyboards)  A  list a │
       │                         │           │ layout names configured  for │
       │                         │           │ the keyboard                 │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │ xkb_active_layout_index │  integer  │ (Only  keyboards)  The index │
       │                         │           │ of   the   active   keyboard │
       │                         │           │ layout in use                │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │      scroll_factor      │ floating  │ (Only  pointers)  Multiplier │
       │                         │           │ applied  on   scroll   event │
       │                         │           │ values.                      │
       ├─────────────────────────┼───────────┼──────────────────────────────┤
       │        libinput         │  object   │ (Only  libinput  devices) An │
       │                         │           │ object    describing     the │
       │                         │           │ current device settings. See │
       │                         │           │ below for more information   │
       └─────────────────────────┴───────────┴──────────────────────────────┘

       The  libinput  object  describes  the device configuration for libinput devices. Only properties that are
       supported for the device will be added to the object. In addition to the  possible  options  listed,  all
       string  properties  may  also  be  unknown, in the case that a new option is added to libinput. See sway-
       input(5) for information on the meaning of the possible values. The following properties will be included
       for devices that support them:

       ┌────────────────────┬───────────┬──────────────────────────────┐
       │      PROPERTYDATA TYPEDESCRIPTION          │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │    send_events     │  string   │ Whether  events  are   being │
       │                    │           │ sent  by  the device. It can │
       │                    │           │ be  enabled,  disabled,   or │
       │                    │           │ disabled_on_external_mouse   │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │        tap         │  string   │ Whether   tap  to  click  is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   tap_button_map   │  string   │ The finger to button mapping │
       │                    │           │ in use. It can be lmr or lrm │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │      tap_drag      │  string   │ Whether    tap-and-drag   is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   tap_drag_lock    │  string   │ Whether     drag-lock     is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │    accel_speed     │  double   │ The  pointer-acceleration in │
       │                    │           │ use                          │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   accel_profile    │  string   │ The acceleration profile  in │
       │                    │           │ use.  It  can be none, flat, │
       │                    │           │ or adaptive                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   natural_scroll   │  string   │ Whether natural scrolling is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │    left_handed     │  string   │ Whether  left-handed mode is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │    click_method    │  string   │ The  click method in use. It │
       │                    │           │ can be  none,  button_areas, │
       │                    │           │ or clickfinger               │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │  middle_emulation  │  string   │ Whether  middle emulation is │
       │                    │           │ enabled. It can  be  enabled │
       │                    │           │ or disabled                  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   scroll_method    │  string   │ The scroll method in use. It │
       │                    │           │ can   be  none,  two_finger, │
       │                    │           │ edge, or on_button_down      │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │   scroll_button    │    int    │ The  scroll  button  to  use │
       │                    │           │ when     scroll_method    is │
       │                    │           │ on_button_down. This will be │
       │                    │           │ given as an input event code │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │ scroll_button_lock │  string   │ Whether scroll  button  lock │
       │                    │           │ is   enabled.   It   can  be │
       │                    │           │ enabled or disabled          │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │        dwt         │  string   │ Whether disable-while-typing │
       │                    │           │ is  enabled.   It   can   be │
       │                    │           │ enabled or disabled          │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │        dwtp        │  string   │ Whether       disable-while- │
       │                    │           │ trackpointing is enabled. It │
       │                    │           │ can be enabled or_disabled_  │
       ├────────────────────┼───────────┼──────────────────────────────┤
       │ calibration_matrix │   array   │ An   array   of   6   floats │
       │                    │           │ representing the calibration │
       │                    │           │ matrix  for absolute devices │
       │                    │           │ such as touchscreens         │
       └────────────────────┴───────────┴──────────────────────────────┘

       Example Reply:
           [
                {
                     "identifier": "1:1:AT_Translated_Set_2_keyboard",
                     "name": "AT Translated Set 2 keyboard",
                     "vendor": 1,
                     "product": 1,
                     "type": "keyboard",
                     "xkb_active_layout_name": "English (US)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                },
                {
                     "identifier": "1267:5:Elan_Touchpad",
                     "name": "Elan Touchpad",
                     "vendor": 1267,
                     "product": 5,
                     "type": "pointer",
                     "libinput": {
                          "send_events": "enabled",
                          "tap": "enabled",
                          "tap_button_map": "lmr",
                          "tap_drag": "enabled",
                          "tap_drag_lock": "disabled",
                          "accel_speed": 0.0,
                          "accel_profile": "none",
                          "natural_scroll", "disabled",
                          "left_handed": "disabled",
                          "click_method": "button_areas",
                          "middle_emulation": "disabled",
                          "scroll_method": "edge",
                          "dwt": "enabled",
                          "dwtp": "enabled"
                     }
                },
                {
                     "identifier": "3034:22494:USB2.0_VGA_UVC_WebCam:_USB2.0_V",
                     "name": "USB2.0 VGA UVC WebCam: USB2.0 V",
                     "vendor": 3034,
                     "product": 22494,
                     "type": "keyboard",
                     "xkb_active_layout_name": "English (US)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                },
                {
                     "identifier": "0:3:Sleep_Button",
                     "name": "Sleep Button",
                     "vendor": 0,
                     "product": 3,
                     "type": "keyboard",
                     "xkb_active_layout_name": "English (US)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                },
                {
                     "identifier": "0:5:Lid_Switch",
                     "name": "Lid Switch",
                     "vendor": 0,
                     "product": 5,
                     "type": "switch",
                     "libinput": {
                          "send_events": "enabled"
                     }
                },
                {
                     "identifier": "0:6:Video_Bus",
                     "name": "Video Bus",
                     "vendor": 0,
                     "product": 6,
                     "type": "keyboard",
                     "xkb_active_layout_name": "English (US)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                },
                {
                     "identifier": "0:1:Power_Button",
                     "name": "Power Button",
                     "vendor": 0,
                     "product": 1,
                     "type": "keyboard",
                     "xkb_active_layout_name": "English (US)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                }
           ]

   101. GET_SEATS
       MESSAGE
       Retrieve a list of the seats currently configured

       REPLY
       An array of objects corresponding to each seat. There will always be at least one seat. Each  object  has
       the following properties:

       ┌──────────────┬───────────┬──────────────────────────────┐
       │   PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────────┼───────────┼──────────────────────────────┤
       │     name     │  string   │ The unique name for the seat │
       ├──────────────┼───────────┼──────────────────────────────┤
       │ capabilities │  integer  │ The  number  of capabilities │
       │              │           │ that the seat has            │
       ├──────────────┼───────────┼──────────────────────────────┤
       │    focus     │  integer  │ The id of the node currently │
       │              │           │ focused by  the  seat  or  0 │
       │              │           │ when   the   seat   is   not │
       │              │           │ currently focused by a  node │
       │              │           │ (i.e.  a  surface  layer  or │
       │              │           │ xwayland    unmanaged    has │
       │              │           │ focus)                       │
       ├──────────────┼───────────┼──────────────────────────────┤
       │   devices    │   array   │ An  array  of  input devices │
       │              │           │ that  are  attached  to  the │
       │              │           │ seat.  Currently, this is an │
       │              │           │ array of  objects  that  are │
       │              │           │ identical  to those returned │
       │              │           │ by GET_INPUTS                │
       └──────────────┴───────────┴──────────────────────────────┘

       Example Reply:
           [
                {
                     "name": "seat0",
                     "capabilities": 3,
                     "focus": 7,
                     "devices": [
                          {
                               "identifier": "1:1:AT_Translated_Set_2_keyboard",
                               "name": "AT Translated Set 2 keyboard",
                               "vendor": 1,
                               "product": 1,
                               "type": "keyboard",
                               "xkb_active_layout_name": "English (US)",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          },
                          {
                               "identifier": "1267:5:Elan_Touchpad",
                               "name": "Elan Touchpad",
                               "vendor": 1267,
                               "product": 5,
                               "type": "pointer",
                               "libinput": {
                                    "send_events": "enabled",
                                    "tap": "enabled",
                                    "tap_button_map": "lmr",
                                    "tap_drag": "enabled",
                                    "tap_drag_lock": "disabled",
                                    "accel_speed": 0.0,
                                    "accel_profile": "none",
                                    "natural_scroll", "disabled",
                                    "left_handed": "disabled",
                                    "click_method": "button_areas",
                                    "middle_emulation": "disabled",
                                    "scroll_method": "edge",
                                    "dwt": "enabled",
                                    "dwtp": "enabled"
                               }
                          },
                          {
                               "identifier": "3034:22494:USB2.0_VGA_UVC_WebCam:_USB2.0_V",
                               "name": "USB2.0 VGA UVC WebCam: USB2.0 V",
                               "vendor": 3034,
                               "product": 22494,
                               "type": "keyboard",
                               "xkb_active_layout_name": "English (US)",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          },
                          {
                               "identifier": "0:3:Sleep_Button",
                               "name": "Sleep Button",
                               "vendor": 0,
                               "product": 3,
                               "type": "keyboard",
                               "xkb_active_layout_name": "English (US)",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          },
                          {
                               "identifier": "0:5:Lid_Switch",
                               "name": "Lid Switch",
                               "vendor": 0,
                               "product": 5,
                               "type": "switch",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          },
                          {
                               "identifier": "0:6:Video_Bus",
                               "name": "Video Bus",
                               "vendor": 0,
                               "product": 6,
                               "type": "keyboard",
                               "xkb_active_layout_name": "English (US)",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          },
                          {
                               "identifier": "0:1:Power_Button",
                               "name": "Power Button",
                               "vendor": 0,
                               "product": 1,
                               "type": "keyboard",
                               "xkb_active_layout_name": "English (US)",
                               "libinput": {
                                    "send_events": "enabled"
                               }
                          }
                     ]
                }
           ]

EVENTS

       Events are a way for client to get notified of changes to sway. A client can subscribe to any  events  it
       wants  to  be  notified  of  changes  for. The event is sent in the same format as a reply. The following
       events are currently available:

       ┌────────────┬──────────────────┬──────────────────────────────┐
       │ EVENT TYPENAMEDESCRIPTION          │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000000 │    workspace     │ Sent   whenever   an   event │
       │            │                  │ involving a workspace occurs │
       │            │                  │ such  as initialization of a │
       │            │                  │ new workspace or a different │
       │            │                  │ workspace gains focus        │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000001 │      output      │ Sent   when   outputs    are │
       │            │                  │ updated                      │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000002 │       mode       │ Sent  whenever  the  binding │
       │            │                  │ mode changes                 │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000003 │      window      │ Sent   whenever   an   event │
       │            │                  │ involving a view occurs such │
       │            │                  │ as     being     reparented, │
       │            │                  │ focused, or closed           │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000004 │ barconfig_update │ Sent whenever a  bar  config │
       │            │                  │ changes                      │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000005 │     binding      │ Sent   when   a   configured │
       │            │                  │ binding is executed          │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000006 │     shutdown     │ Sent when the ipc shuts down │
       │            │                  │ because sway is exiting      │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000007 │       tick       │ Sent  when  an  ipc   client │
       │            │                  │ sends a SEND_TICK message    │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000014 │ bar_state_update │ Send  when the visibility of │
       │            │                  │ a bar should change due to a │
       │            │                  │ modifier                     │
       ├────────────┼──────────────────┼──────────────────────────────┤
       │ 0x80000015 │      input       │ Sent when something  related │
       │            │                  │ to input devices changes     │
       └────────────┴──────────────────┴──────────────────────────────┘

   0x80000000. WORKSPACE
       Sent  whenever  a  change  involving  a  workspace occurs. The event consists of a single object with the
       following properties:

       ┌──────────┬───────────┬──────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────┼───────────┼──────────────────────────────┤
       │  change  │  string   │ The  type  of  change   that │
       │          │           │ occurred. See below for more │
       │          │           │ information                  │
       ├──────────┼───────────┼──────────────────────────────┤
       │ current  │  object   │ An  object  representing the │
       │          │           │ workspace effected  or  null │
       │          │           │ for reload changes           │
       ├──────────┼───────────┼──────────────────────────────┤
       │   old    │  object   │ For  a focus change, this is │
       │          │           │ will    be     an     object │
       │          │           │ representing  the  workspace │
       │          │           │ being     switched     from. │
       │          │           │ Otherwise, it is null        │
       └──────────┴───────────┴──────────────────────────────┘

       The following change types are currently available:
       ┌────────┬───────────────────────────────────────┐
       │  TYPEDESCRIPTION              │
       ├────────┼───────────────────────────────────────┤
       │  init  │ The workspace was created             │
       ├────────┼───────────────────────────────────────┤
       │ empty  │ The  workspace  is empty and is being │
       │        │ destroyed since it is not visible     │
       ├────────┼───────────────────────────────────────┤
       │ focus  │ The workspace was  focused.  See  the │
       │        │ old property for the previous focus   │
       ├────────┼───────────────────────────────────────┤
       │  move  │ The   workspace   was   moved   to  a │
       │        │ different output                      │
       ├────────┼───────────────────────────────────────┤
       │ rename │ The workspace was renamed             │
       ├────────┼───────────────────────────────────────┤
       │ urgent │ A view on the workspace has had their │
       │        │ urgency hint set or all urgency hints │
       │        │ for views on the workspace have  been │
       │        │ cleared                               │
       ├────────┼───────────────────────────────────────┤
       │ reload │ The   configuration   file  has  been │
       │        │ reloaded                              │
       └────────┴───────────────────────────────────────┘

       Example Event:
           {
                "change": "init",
                "old": null,
                "current": {
                     "id": 10,
                     "name": "2",
                     "rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "focused": false,
                     "focus": [
                     ],
                     "border": "none",
                     "current_border_width": 0,
                     "layout": "splith",
                     "percent": null,
                     "window_rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "deco_rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "geometry": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "window": null,
                     "urgent": false,
                     "floating_nodes": [
                     ],
                     "num": 2,
                     "output": "eDP-1",
                     "type": "workspace",
                     "representation": null,
                     "nodes": [
                     ]
                }
           }

   0x80000001. OUTPUT
       Sent whenever an output is added, removed, or its configuration is changed. The event is a single  object
       with  the  property  change,  which is a string containing the reason for the change. Currently, the only
       value for change is unspecified.

       Example Event:
           {
                "change": "unspecified"
           }

   0x80000002. MODE
       Sent whenever the binding mode changes. The  event  consists  of  a  single  object  with  the  following
       properties:

       ┌──────────────┬───────────┬──────────────────────────────┐
       │   PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────────┼───────────┼──────────────────────────────┤
       │    change    │  string   │ The binding mode that became │
       │              │           │ active                       │
       ├──────────────┼───────────┼──────────────────────────────┤
       │ pango_markup │  boolean  │ Whether  the  mode should be │
       │              │           │ parsed as pango markup       │
       └──────────────┴───────────┴──────────────────────────────┘

       Example Event:
           {
                "change": "default",
                "pango_markup": false
           }

   0x80000003. WINDOW
       Sent whenever a change involving a view occurs. The event consists of a single object with the  following
       properties:

       ┌───────────┬───────────┬──────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION          │
       ├───────────┼───────────┼──────────────────────────────┤
       │  change   │  string   │ The   type  of  change  that │
       │           │           │ occurred. See below for more │
       │           │           │ information                  │
       ├───────────┼───────────┼──────────────────────────────┤
       │ container │  object   │ An object  representing  the │
       │           │           │ view effected                │
       └───────────┴───────────┴──────────────────────────────┘

       The following change types are currently available:
       ┌─────────────────┬───────────────────────────────────────┐
       │      TYPEDESCRIPTION              │
       ├─────────────────┼───────────────────────────────────────┤
       │       new       │ The view was created                  │
       ├─────────────────┼───────────────────────────────────────┤
       │      close      │ The view was closed                   │
       ├─────────────────┼───────────────────────────────────────┤
       │      focus      │ The view was focused                  │
       ├─────────────────┼───────────────────────────────────────┤
       │      title      │ The view's title has changed          │
       ├─────────────────┼───────────────────────────────────────┤
       │ fullscreen_mode │ The   view's   fullscreen   mode  has │
       │                 │ changed                               │
       ├─────────────────┼───────────────────────────────────────┤
       │      move       │ The view has been reparented  in  the │
       │                 │ tree                                  │
       ├─────────────────┼───────────────────────────────────────┤
       │    floating     │ The view has become floating or is no │
       │                 │ longer floating                       │
       ├─────────────────┼───────────────────────────────────────┤
       │     urgent      │ The  view's  urgency hint has changed │
       │                 │ status                                │
       ├─────────────────┼───────────────────────────────────────┤
       │      mark       │ A mark has been added or removed from │
       │                 │ the view                              │
       └─────────────────┴───────────────────────────────────────┘

       Example Event:
           {
                "change": "new",
                "container": {
                     "id": 12,
                     "name": null,
                     "rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "focused": false,
                     "focus": [
                     ],
                     "border": "none",
                     "current_border_width": 0,
                     "layout": "none",
                     "percent": 0.0,
                     "window_rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "deco_rect": {
                          "x": 0,
                          "y": 0,
                          "width": 0,
                          "height": 0
                     },
                     "geometry": {
                          "x": 0,
                          "y": 0,
                          "width": 1124,
                          "height": 422
                     },
                     "window": 4194313,
                     "urgent": false,
                     "floating_nodes": [
                     ],
                     "type": "con",
                     "pid": 19787,
                     "app_id": null,
                     "window_properties": {
                          "class": "URxvt",
                          "instance": "urxvt",
                          "transient_for": null
                     },
                     "nodes": [
                     ]
                }
           }

   0x80000004. BARCONFIG_UPDATE
       Sent whenever a config for a bar changes. The event is identical to that of GET_BAR_CONFIG when a bar  ID
       is given as a payload. See 6. GET_BAR_CONFIG (WITH A PAYLOAD) above for more information.

   0x80000005. BINDING
       Sent whenever a binding is executed. The event is a single object with the following properties:

       ┌──────────────────┬───────────┬──────────────────────────────┐
       │     PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │      change      │  string   │ The change that occurred for │
       │                  │           │ the  binding. Currently this │
       │                  │           │ will only be run             │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │     command      │  string   │ The command associated  with │
       │                  │           │ the binding                  │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │ event_state_mask │   array   │ An  array  of  strings  that │
       │                  │           │ correspond to each  modifier │
       │                  │           │ key for the binding          │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │    input_code    │  integer  │ For keyboard bindcodes, this │
       │                  │           │ is  the  key  code  for  the │
       │                  │           │ binding. For mouse bindings, │
       │                  │           │ this  is  the   X11   button │
       │                  │           │ number,   if   there  is  an │
       │                  │           │ equivalent.  In  all   other │
       │                  │           │ cases, this will be 0.       │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │      symbol      │  string   │ For  keyboard bindsyms, this │
       │                  │           │ is  the  bindsym   for   the │
       │                  │           │ binding.   Otherwise,   this │
       │                  │           │ will be null                 │
       ├──────────────────┼───────────┼──────────────────────────────┤
       │    input_type    │  string   │ The    input    type    that │
       │                  │           │ triggered  the binding. This │
       │                  │           │ is either keyboard or mouse  │
       └──────────────────┴───────────┴──────────────────────────────┘

       Example Event:
           {
                "change": "run",
                "binding": {
                     "command": "workspace 2",
                     "event_state_mask": [
                          "Mod4"
                     ],
                     "input_code": 0,
                     "symbol": "2",
                     "input_type": "keyboard"
                }
           }

   0x80000006. SHUTDOWN
       Sent whenever the IPC is shutting down. The event is a single object with the property change, which is a
       string containing the reason for the shutdown. Currently, the only value for change  is  exit,  which  is
       issued when sway is exiting.

       Example Event:
           {
                "change": "exit"
           }

   0x80000007. TICK
       Sent  when  first subscribing to tick events or by a SEND_TICK message. The event is a single object with
       the following properties:

       ┌──────────┬───────────┬──────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────┼───────────┼──────────────────────────────┤
       │  first   │  boolean  │ Whether   this   event   was │
       │          │           │ triggered  by subscribing to │
       │          │           │ the tick events              │
       ├──────────┼───────────┼──────────────────────────────┤
       │ payload  │  string   │ The  payload  given  with  a │
       │          │           │ SEND_TICK  message,  if any. │
       │          │           │ Otherwise, an empty string   │
       └──────────┴───────────┴──────────────────────────────┘

       Example Event:
           {
                "first": true
                "payload": ""
           }

   0x80000014. BAR_STATE_UPDATE
       Sent when the visibility of a bar changes due to a modifier being pressed. The event is a  single  object
       with the following properties:

       ┌─────────────────────┬───────────┬──────────────────────────────┐
       │      PROPERTYDATA TYPEDESCRIPTION          │
       ├─────────────────────┼───────────┼──────────────────────────────┤
       │         id          │  string   │ The bar ID effected          │
       ├─────────────────────┼───────────┼──────────────────────────────┤
       │ visible_by_modifier │  boolean  │ Whether  the  bar  should be │
       │                     │           │ made  visible   due   to   a │
       │                     │           │ modifier being pressed       │
       └─────────────────────┴───────────┴──────────────────────────────┘

       Example Event:
           {
                "id": "bar-0",
                "visible_by_modifier": true
           }

   0x80000015. INPUT
       Sent when something related to the input devices changes. The event is a single object with the following
       properties:

       ┌──────────┬───────────┬──────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────┼───────────┼──────────────────────────────┤
       │  change  │  string   │ What has changed             │
       ├──────────┼───────────┼──────────────────────────────┤
       │  input   │  object   │ An  object  representing the │
       │          │           │ input that is identical  the │
       │          │           │ ones GET_INPUTS gives        │
       └──────────┴───────────┴──────────────────────────────┘

       The following change types are currently available:
       ┌─────────────────┬───────────────────────────────────────┐
       │      TYPEDESCRIPTION              │
       ├─────────────────┼───────────────────────────────────────┤
       │      added      │ The input device became available     │
       ├─────────────────┼───────────────────────────────────────┤
       │     removed     │ The   input   device   is  no  longer │
       │                 │ available                             │
       ├─────────────────┼───────────────────────────────────────┤
       │   xkb_keymap    │ (Keyboards only) The keymap  for  the │
       │                 │ keyboard has changed                  │
       ├─────────────────┼───────────────────────────────────────┤
       │   xkb_layout    │ (Keyboards only) The effective layout │
       │                 │ in the keymap has changed             │
       ├─────────────────┼───────────────────────────────────────┤
       │ libinput_config │ (libinput  device  only)  A  libinput │
       │                 │ config option for the device changed  │
       └─────────────────┴───────────────────────────────────────┘

       Example Event:
           {
                "change": "xkb_layout",
                "input": {
                     "identifier": "1:1:AT_Translated_Set_2_keyboard",
                     "name": "AT Translated Set 2 keyboard",
                     "vendor": 1,
                     "product": 1,
                     "type": "keyboard",
                     "xkb_layout_names": [
                          "English (US)",
                          "English (Dvorak)"
                     ],
                     "xkb_active_layout_index": 1,
                     "xkb_active_layout_name": "English (Dvorak)",
                     "libinput": {
                          "send_events": "enabled"
                     }
                }
           }

SEE ALSO

       sway(1) sway(5) sway-bar(5) swaymsg(1) sway-input(5) sway-output(5)

                                                   2024-04-01                                        sway-ipc(7)