Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
sway-ipc(7)		Miscellaneous Information Manual	     sway-ipc(7)

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  hex-
     dump:
	 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 cur-
     rently supported. For all replies, any properties not listed are subject to
     removal.

     +-------------+-------------------+----------------------+
     | TYPE NUMBER |   MESSAGE NAME    |       PURPOSE	      |
     +-------------+-------------------+----------------------+
     |	    0	   |	RUN_COMMAND    | Runs the payload  as |
     |		   |		       | sway commands	      |
     +-------------+-------------------+----------------------+
     |	    1	   |  GET_WORKSPACES   | Get the list of cur- |
     |		   |		       | rent workspaces      |
     +-------------+-------------------+----------------------+
     |	    2	   |	 SUBSCRIBE     | Subscribe   the  IPC |
     |		   |		       | connection  to   the |
     |		   |		       | events listed in the |
     |		   |		       | payload	      |
     +-------------+-------------------+----------------------+
     |	    3	   |	GET_OUTPUTS    | Get the list of cur- |
     |		   |		       | rent 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  ob- |
     |		   |		       | ject for i3 compati- |
     |		   |		       | bility 	      |
     +-------------+-------------------+----------------------+
     |	   12	   | GET_BINDING_STATE | Request  the current |
     |		   |		       | binding state,  e.g. |
     |		   |		       | the currently active |
     |		   |		       | binding mode name.   |
     +-------------+-------------------+----------------------+
     |	   100	   |	GET_INPUTS     | Get  the list of in- |
     |		   |		       | put 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 ob-
     ject  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  ob-
     ject has the following properties:

     +----------+-----------+----------------------+
     | PROPERTY | DATA TYPE |	  DESCRIPTION	   |
     +----------+-----------+----------------------+
     |	 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  work- |
     |		|	    | space  is  currently |
     |		|	    | visible  on any out- |
     |		|	    | put		   |
     +----------+-----------+----------------------+
     | focused	|  boolean  | Whether  the   work- |
     |		|	    | space  is  currently |
     |		|	    | focused by  the  de- |
     |		|	    | fault seat (seat0)   |
     +----------+-----------+----------------------+
     |	urgent	|  boolean  | Whether  a window on |
     |		|	    | the  workspace   has |
     |		|	    | the urgent flag set  |
     +----------+-----------+----------------------+
     |	 rect	|  object   | The  bounds  of  the |
     |		|	    | workspace.  It  con- |
     |		|	    | sists   of   x,	y, |
     |		|	    | width, and height    |
     +----------+-----------+----------------------+
     |	output	|  string   | The name of the out- |
     |		|	    | put that	the  work- |
     |		|	    | space 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 fol-
     lowing properties:

     +-------------------+-----------+----------------------+
     |	   PROPERTY	 | DATA TYPE |	   DESCRIPTION	    |
     +-------------------+-----------+----------------------+
     |	     name	 |  string   | The name of the out- |
     |			 |	     | put. On DRM, this is |
     |			 |	     | the connector	    |
     +-------------------+-----------+----------------------+
     |	     make	 |  string   | The make of the out- |
     |			 |	     | put		    |
     +-------------------+-----------+----------------------+
     |	     model	 |  string   | The  model  of	the |
     |			 |	     | output		    |
     +-------------------+-----------+----------------------+
     |	    serial	 |  string   | The  output's serial |
     |			 |	     | number as a hexadec- |
     |			 |	     | imal 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	compatibil- |
     |			 |	     | ity,  this  will  be |
     |			 |	     | false.  It  does not |
     |			 |	     | make sense  in  Way- |
     |			 |	     | land		    |
     +-------------------+-----------+----------------------+
     |	     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  cur- |
     |			 |	     | rently  in  use	for |
     |			 |	     | the output. This can |
     |			 |	     | be  normal, 90, 180, |
     |			 |	     | 270,	flipped-90, |
     |			 |	     | flipped-180,	 or |
     |			 |	     | flipped-270	    |
     +-------------------+-----------+----------------------+
     | current_workspace |  string   | The  workspace  cur- |
     |			 |	     | rently	visible  on |
     |			 |	     | the output  or  null |
     |			 |	     | for disabled outputs |
     +-------------------+-----------+----------------------+
     |	     modes	 |   array   | An   array  of  sup- |
     |			 |	     | ported mode objects. |
     |			 |	     | Each object contains |
     |			 |	     | width,  height,	and |
     |			 |	     | refresh		    |
     +-------------------+-----------+----------------------+
     |	 current_mode	 |  object   | An object represent- |
     |			 |	     | ing 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",
		   "layer_shell_surfaces": [
			{
			     "namespace": "wallpaper",
			     "layer": "background",
			     "extent": {
				  "width": 2560,
				  "height": 1440,
				  "x": 0,
				  "y": 0
			     },
			     "effects": {
			     }
			},
			{
			     "namespace": "waybar",
			     "layer": "top",
			     "extent": {
				  "width": 2548,
				  "height": 31,
				  "x": 6,
				  "y": 6
			     },
			     "effects": {
				  "blur": true,
				  "blur_xray": false,
				  "blur_ignore_transparent": false,
				  "shadows": true,
				  "corner_radius": 20
			     }
			}
		   ],
		   "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:

     +----------------------+-----------+----------------------+
     |	     PROPERTY	    | DATA TYPE |     DESCRIPTION      |
     +----------------------+-----------+----------------------+
     |		id	    |  integer	| The internal	unique |
     |			    |		| ID for this node     |
     +----------------------+-----------+----------------------+
     |	       name	    |  string	| The name of the node |
     |			    |		| such	as  the output |
     |			    |		| name or  window  ti- |
     |			    |		| tle.	   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 orienta- |
     |			    |		| tion. It can be ver- |
     |			    |		| tical,   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 geome- |
     |			    |		| try 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 coordi- |
     |			    |		| nates  are  relative |
     |			    |		| to  the node itself. |
     |			    |		| Window   decorations |
     |			    |		| and borders are out- |
     |			    |		| side 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  it- |
     |			    |		| self		       |
     +----------------------+-----------+----------------------+
     |	      urgent	    |  boolean	| Whether  the node or |
     |			    |		| any of  its  descen- |
     |			    |		| dants 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  as- |
     |			    |		| signed 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  chil- |
     |			    |		| dren	nodes  for the |
     |			    |		| node		       |
     +----------------------+-----------+----------------------+
     |	  representation    |  string	| (Only workspaces)  A |
     |			    |		| string   representa- |
     |			    |		| tion 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 |
     |			    |		| windows)	   The |
     |			    |		| fullscreen  mode  of |
     |			    |		| the  node.  0  means |
     |			    |		| none,  1  means full |
     |			    |		| workspace,   and   2 |
     |			    |		| means 	global |
     |			    |		| fullscreen	       |
     +----------------------+-----------+----------------------+
     |	     floating	    |  string	| Floating  state   of |
     |			    |		| container.   Can  be |
     |			    |		| either "auto_off" or |
     |			    |		| "user_on"	       |
     +----------------------+-----------+----------------------+
     |	 scratchpad_state   |  string	| Whether  the	window |
     |			    |		| is  in  the scratch- |
     |			    |		| pad. Can  be	either |
     |			    |		| "none" or "fresh"    |
     +----------------------+-----------+----------------------+
     |	      app_id	    |  string	| (Only  windows)  For |
     |			    |		| an xdg-shell window, |
     |			    |		| the name of the  ap- |
     |			    |		| plication,  if  set. |
     |			    |		| Otherwise, null      |
     +----------------------+-----------+----------------------+
     |	       pid	    |  integer	| (Only  windows)  The |
     |			    |		| PID  of the applica- |
     |			    |		| tion that  owns  the |
     |			    |		| window	       |
     +----------------------+-----------+----------------------+
     | for-		    |  string	| (Only  windows)  The |
     | eign_toplevel_iden-  |		| ext-foreign-	       |
     | tifier		    |		| toplevel-list-v1     |
     |			    |		| toplevel  identifier |
     |			    |		| of this node.        |
     +----------------------+-----------+----------------------+
     |	     visible	    |  boolean	| (Only       windows) |
     |			    |		| Whether the node  is |
     |			    |		| visible	       |
     +----------------------+-----------+----------------------+
     |	      shell	    |  string	| (Only  windows)  The |
     |			    |		| shell of the window, |
     |			    |		| such as xdg_shell or |
     |			    |		| xwayland	       |
     +----------------------+-----------+----------------------+
     |	   inhibit_idle     |  boolean	| (Only       windows) |
     |			    |		| Whether  the	window |
     |			    |		| is  inhibiting   the |
     |			    |		| idle state	       |
     +----------------------+-----------+----------------------+
     |	 idle_inhibitors    |  object	| (Only   windows)  An |
     |			    |		| object    containing |
     |			    |		| the state of the ap- |
     |			    |		| plication  and  user |
     |			    |		| idle	   inhibitors. |
     |			    |		| application  can  be |
     |			    |		| enabled   or	 none. |
     |			    |		| user	can  be focus, |
     |			    |		| fullscreen,	 open, |
     |			    |		| visible or none.     |
     +----------------------+-----------+----------------------+
     |	  sandbox_engine    |  string	| (Only  windows)  The |
     |			    |		| associated   sandbox |
     |			    |		| engine (or null)     |
     +----------------------+-----------+----------------------+
     |	  sandbox_app_id    |  string	| (Only  windows)  The |
     |			    |		| app ID  provided  by |
     |			    |		| the associated sand- |
     |			    |		| box engine (or null) |
     +----------------------+-----------+----------------------+
     | sandbox_instance_id  |  string	| (Only  windows)  The |
     |			    |		| instance ID provided |
     |			    |		| by  the   associated |
     |			    |		| sandbox  engine  (or |
     |			    |		| null) 	       |
     +----------------------+-----------+----------------------+
     |	      window	    |  integer	| (Only xwayland  win- |
     |			    |		| dows) The X11 window |
     |			    |		| ID  for the xwayland |
     |			    |		| window	       |
     +----------------------+-----------+----------------------+
     |	window_properties   |  object	| (Only xwayland  win- |
     |			    |		| dows) An object con- |
     |			    |		| taining  the	title, |
     |			    |		| class,     instance, |
     |			    |		| window_role,	  win- |
     |			    |		| dow_type, and  tran- |
     |			    |		| sient_for   for  the |
     |			    |		| window	       |
     +----------------------+-----------+----------------------+

     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 con-
     tainer, 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 associ-
     ated with the specified by the bar ID in the payload. This is used by sway-
     bar, 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):

     +----------------------+-----------+----------------------+
     |	     PROPERTY	    | DATA TYPE |     DESCRIPTION      |
     +----------------------+-----------+----------------------+
     |		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 ei- |
     |			    |		| ther	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  but- |
     |			    |		| tons on the bar      |
     +----------------------+-----------+----------------------+
     | workspace_min_width  |  integer	| Minimum  width in px |
     |			    |		| for  the   workspace |
     |			    |		| buttons on the bar   |
     +----------------------+-----------+----------------------+
     | binding_mode_indica- |  boolean	| Whether  to  display |
     | tor		    |		| the current  binding |
     |			    |		| mode on the bar      |
     +----------------------+-----------+----------------------+
     |	     verbose	    |  boolean	| For  i3  compatibil- |
     |			    |		| ity,	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 represent- |
     |			    |		| ing 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  automati- |
     |			    |		| cally  size based on |
     |			    |		| the font	       |
     +----------------------+-----------+----------------------+
     |	  status_padding    |  integer	| The vertical padding |
     |			    |		| to use for the  sta- |
     |			    |		| tus 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:
     +---------------------------+-----------------------------+
     |	       PROPERTY 	 |	   DESCRIPTION	       |
     +---------------------------+-----------------------------+
     |	      background	 | The	color  to  use for the |
     |				 | bar background on unfocused |
     |				 | outputs		       |
     +---------------------------+-----------------------------+
     |	      statusline	 | The color to  use  for  the |
     |				 | status  line  text on unfo- |
     |				 | cused 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 fo- |
     |				 | cused output 	       |
     +---------------------------+-----------------------------+
     |	   focused_separator	 | The color to  use  for  the |
     |				 | separator  text  on the fo- |
     |				 | cused output 	       |
     +---------------------------+-----------------------------+
     |	focused_workspace_text	 | The color to  use  for  the |
     |				 | text  of  the focused work- |
     |				 | space 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 work- |
     |				 | space button 	       |
     +---------------------------+-----------------------------+
     |	 active_workspace_text	 | The	color  to  use for the |
     |				 | text of the workspace  but- |
     |				 | tons  for the visible work- |
     |				 | spaces 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  but- |
     |				 | tons  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  but- |
     |				 | tons  for  workspaces  that |
     |				 | contain an urgent window    |
     +---------------------------+-----------------------------+
     |	  urgent_workspace_bg	 | The color to  use  for  the |
     |				 | background of the workspace |
     |				 | buttons for workspaces that |
     |				 | contain an urgent window    |
     +---------------------------+-----------------------------+
     |	urgent_workspace_border  | The	color  to  use for the |
     |				 | border  of  the   workspace |
     |				 | buttons for workspaces that |
     |				 | contain an urgent window    |
     +---------------------------+-----------------------------+
     |	   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:

     +----------------+-----------+----------------------+
     |	  PROPERTY    | DATA TYPE |	DESCRIPTION	 |
     +----------------+-----------+----------------------+
     |	   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 informa- |
     |		      | 	  | tion such as the git |
     |		      | 	  | commit  short   hash |
     |		      | 	  | and git branch	 |
     +----------------+-----------+----------------------+
     | loaded_con-    |  string   | The   path	 to  the |
     | fig_file_name  | 	  | 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 con-
     fig

     Example Reply:
	 {
	      "config": "set $mod Mod4\nbindsym $mod+q exit\n"
	 }

   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 in-
     dicating 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  cur-
     rently 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:

     +------------------+-----------+----------------------+
     |	   PROPERTY	| DATA TYPE |	  DESCRIPTION	   |
     +------------------+-----------+----------------------+
     |	  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_lay-	|  string   | (Only keyboards) The |
     | out_name 	|	    | 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_lay-	|  integer  | (Only keyboards) The |
     | out_index	|	    | index of the  active |
     |			|	    | keyboard	layout	in |
     |			|	    | use		   |
     +------------------+-----------+----------------------+
     |	scroll_factor	| floating  | (Only pointers) Mul- |
     |			|	    | tiplier  applied	on |
     |			|	    | scroll event values. |
     +------------------+-----------+----------------------+
     |	   libinput	|  object   | (Only  libinput  de- |
     |			|	    | vices) An object de- |
     |			|	    | scribing the current |
     |			|	    | device settings. See |
     |			|	    | below for  more  in- |
     |			|	    | formation 	   |
     +------------------+-----------+----------------------+

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

     +--------------------+-----------+----------------------+
     |	    PROPERTY	  | DATA TYPE |     DESCRIPTION      |
     +--------------------+-----------+----------------------+
     |	  send_events	  |  string   | Whether  events  are |
     |			  |	      | being  sent  by  the |
     |			  |	      | device.  It  can  be |
     |			  |	      | enabled,   disabled, |
     |			  |	      | or   disabled_on_ex- |
     |			  |	      | ternal_mouse	     |
     +--------------------+-----------+----------------------+
     |	      tap	  |  string   | Whether tap to click |
     |			  |	      | is enabled.  It  can |
     |			  |	      | be  enabled  or dis- |
     |			  |	      | abled		     |
     +--------------------+-----------+----------------------+
     |	 tap_button_map   |  string   | The finger to button |
     |			  |	      | mapping in  use  for |
     |			  |	      | tapping.  It  can be |
     |			  |	      | lmr or lrm	     |
     +--------------------+-----------+----------------------+
     |	    tap_drag	  |  string   | Whether tap-and-drag |
     |			  |	      | is enabled.  It  can |
     |			  |	      | be  enabled  or dis- |
     |			  |	      | abled		     |
     +--------------------+-----------+----------------------+
     |	 tap_drag_lock	  |  string   | Whether drag-lock is |
     |			  |	      | enabled. It  can  be |
     |			  |	      | enabled, disabled or |
     |			  |	      | enabled_sticky	     |
     +--------------------+-----------+----------------------+
     |	  accel_speed	  |  double   | The pointer-acceler- |
     |			  |	      | ation in use	     |
     +--------------------+-----------+----------------------+
     |	 accel_profile	  |  string   | The	acceleration |
     |			  |	      | profile in  use.  It |
     |			  |	      | can  be  none, flat, |
     |			  |	      | or adaptive	     |
     +--------------------+-----------+----------------------+
     |	 natural_scroll   |  string   | Whether      natural |
     |			  |	      | scrolling   is	 en- |
     |			  |	      | abled. It can be en- |
     |			  |	      | abled 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	     |
     +--------------------+-----------+----------------------+
     |	click_button_map  |  string   | The finger to button |
     |			  |	      | mapping  in  use for |
     |			  |	      | clickfinger. It  can |
     |			  |	      | be lmr or lrm	     |
     +--------------------+-----------+----------------------+
     |	middle_emulation  |  string   | Whether  middle emu- |
     |			  |	      | lation	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	but- |
     |			  |	      | ton lock is enabled. |
     |			  |	      | It can be enabled or |
     |			  |	      | disabled	     |
     +--------------------+-----------+----------------------+
     |	      dwt	  |  string   | Whether     disable- |
     |			  |	      | while-typing is  en- |
     |			  |	      | abled. It can be en- |
     |			  |	      | abled or disabled    |
     +--------------------+-----------+----------------------+
     |	      dwtp	  |  string   | Whether     disable- |
     |			  |	      | while-trackpointing  |
     |			  |	      | is enabled.  It  can |
     |			  |	      | be  enabled  or_dis- |
     |			  |	      | abled_		     |
     +--------------------+-----------+----------------------+
     | 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:

     +--------------+-----------+----------------------+
     |	 PROPERTY   | DATA TYPE |     DESCRIPTION      |
     +--------------+-----------+----------------------+
     |	   name     |  string	| The  unique name for |
     |		    |		| the seat	       |
     +--------------+-----------+----------------------+
     | capabilities |  integer	| The number of  capa- |
     |		    |		| bilities   that  the |
     |		    |		| seat has	       |
     +--------------+-----------+----------------------+
     |	  focus     |  integer	| The id of  the  node |
     |		    |		| currently focused by |
     |		    |		| the  seat  or 0 when |
     |		    |		| the seat is not cur- |
     |		    |		| rently focused by  a |
     |		    |		| node (i.e. a surface |
     |		    |		| layer   or  xwayland |
     |		    |		| unmanaged has focus) |
     +--------------+-----------+----------------------+
     |	 devices    |	array	| An  array  of  input |
     |		    |		| devices that are at- |
     |		    |		| tached  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 cur-
     rently available:

     +------------+------------------+----------------------+
     | EVENT TYPE |	  NAME	     |	   DESCRIPTION	    |
     +------------+------------------+----------------------+
     | 0x80000000 |    workspace     | Sent   whenever	 an |
     |		  |		     | event   involving  a |
     |		  |		     | workspace     occurs |
     |		  |		     | such  as initializa- |
     |		  |		     | tion of a new  work- |
     |		  |		     | space or a different |
     |		  |		     | workspace  gains fo- |
     |		  |		     | cus		    |
     +------------+------------------+----------------------+
     | 0x80000001 |	 output      | Sent  when   outputs |
     |		  |		     | are updated	    |
     +------------+------------------+----------------------+
     | 0x80000002 |	  mode	     | Sent   whenever	the |
     |		  |		     | binding mode changes |
     +------------+------------------+----------------------+
     | 0x80000003 |	 window      | Sent   whenever	 an |
     |		  |		     | event   involving  a |
     |		  |		     | window  occurs  such |
     |		  |		     | as being reparented, |
     |		  |		     | focused, or closed   |
     +------------+------------------+----------------------+
     | 0x80000004 | barconfig_update | Sent  whenever a bar |
     |		  |		     | config changes	    |
     +------------+------------------+----------------------+
     | 0x80000005 |	binding      | Sent when a  config- |
     |		  |		     | ured binding is exe- |
     |		  |		     | cuted		    |
     +------------+------------------+----------------------+
     | 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 visi- |
     |		  |		     | bility  of   a	bar |
     |		  |		     | should change due to |
     |		  |		     | a modifier	    |
     +------------+------------------+----------------------+
     | 0x80000015 |	 input	     | Sent  when something |
     |		  |		     | related to input de- |
     |		  |		     | vices changes	    |
     +------------+------------------+----------------------+

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

     +----------+-----------+----------------------+
     | PROPERTY | DATA TYPE |	  DESCRIPTION	   |
     +----------+-----------+----------------------+
     |	change	|  string   | The  type  of change |
     |		|	    | that  occurred.  See |
     |		|	    | below  for  more in- |
     |		|	    | formation 	   |
     +----------+-----------+----------------------+
     | current	|  object   | An object represent- |
     |		|	    | ing  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. Oth- |
     |		|	    | erwise, it is null   |
     +----------+-----------+----------------------+

     The following change types are currently available:
     +--------+-----------------------------+
     |	TYPE  | 	DESCRIPTION	    |
     +--------+-----------------------------+
     |	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 window on  the  workspace |
     |	      | has  had their urgency hint |
     |	      | set or	all  urgency  hints |
     |	      | for  windows  on  the work- |
     |	      | space 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 ob-
     ject with the following properties:

     +--------------+-----------+----------------------+
     |	 PROPERTY   | DATA TYPE |     DESCRIPTION      |
     +--------------+-----------+----------------------+
     |	  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 window occurs. The event consists of a
     single object with the following properties:

     +-----------+-----------+----------------------+
     | PROPERTY  | DATA TYPE |	   DESCRIPTION	    |
     +-----------+-----------+----------------------+
     |	change	 |  string   | The type  of  change |
     |		 |	     | that  occurred.	See |
     |		 |	     | below for  more	in- |
     |		 |	     | formation	    |
     +-----------+-----------+----------------------+
     | container |  object   | An object represent- |
     |		 |	     | ing  the  window ef- |
     |		 |	     | fected		    |
     +-----------+-----------+----------------------+

     The following change types are currently available:
     +-----------------+-----------------------------+
     |	    TYPE       |	 DESCRIPTION	     |
     +-----------------+-----------------------------+
     |	     new       | The window was created      |
     +-----------------+-----------------------------+
     |	    close      | The window was closed	     |
     +-----------------+-----------------------------+
     |	    focus      | The window was focused      |
     +-----------------+-----------------------------+
     |	    title      | The  window's	 title	 has |
     |		       | changed		     |
     +-----------------+-----------------------------+
     | fullscreen_mode | The   window's   fullscreen |
     |		       | mode has changed	     |
     +-----------------+-----------------------------+
     |	    move       | The window has been  repar- |
     |		       | ented in the tree	     |
     +-----------------+-----------------------------+
     |	  floating     | The   window	has   become |
     |		       | floating or  is  no  longer |
     |		       | floating		     |
     +-----------------+-----------------------------+
     |	   urgent      | The  window's	urgency hint |
     |		       | has changed status	     |
     +-----------------+-----------------------------+
     |	    mark       | A mark has  been  added  or |
     |		       | removed from the window     |
     +-----------------+-----------------------------+

     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:

     +------------------+-----------+----------------------+
     |	   PROPERTY	| DATA TYPE |	  DESCRIPTION	   |
     +------------------+-----------+----------------------+
     |	    change	|  string   | The  change that oc- |
     |			|	    | curred for the bind- |
     |			|	    | ing. Currently  this |
     |			|	    | will only be run	   |
     +------------------+-----------+----------------------+
     |	   command	|  string   | The  command associ- |
     |			|	    | ated with the  bind- |
     |			|	    | ing		   |
     +------------------+-----------+----------------------+
     | event_state_mask |   array   | An  array of strings |
     |			|	    | that  correspond	to |
     |			|	    | each   modifier  key |
     |			|	    | for the binding	   |
     +------------------+-----------+----------------------+
     |	  input_code	|  integer  | For  keyboard  bind- |
     |			|	    | codes,  this  is the |
     |			|	    | key  code  for   the |
     |			|	    | binding.	For  mouse |
     |			|	    | bindings,  this	is |
     |			|	    | the  X11 button num- |
     |			|	    | ber, 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  bind- |
     |			|	    | ing.  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 shut-
     down. 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:

     +----------+-----------+----------------------+
     | PROPERTY | DATA TYPE |	  DESCRIPTION	   |
     +----------+-----------+----------------------+
     |	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:

     +---------------------+-----------+----------------------+
     |	    PROPERTY	   | DATA TYPE |     DESCRIPTION      |
     +---------------------+-----------+----------------------+
     |	       id	   |  string   | The bar ID effected  |
     +---------------------+-----------+----------------------+
     | visible_by_modifier |  boolean  | Whether   the	  bar |
     |			   |	       | should be made visi- |
     |			   |	       | ble  due  to a modi- |
     |			   |	       | fier 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:

     +----------+-----------+----------------------+
     | PROPERTY | DATA TYPE |	  DESCRIPTION	   |
     +----------+-----------+----------------------+
     |	change	|  string   | What has changed	   |
     +----------+-----------+----------------------+
     |	input	|  object   | An object represent- |
     |		|	    | ing  the	input that |
     |		|	    | is   identical   the |
     |		|	    | ones	GET_INPUTS |
     |		|	    | gives		   |
     +----------+-----------+----------------------+

     The following change types are currently available:
     +-----------------+-----------------------------+
     |	    TYPE       |	 DESCRIPTION	     |
     +-----------------+-----------------------------+
     |	    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 effec- |
     |		       | tive  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)

				   2026-08-06			     sway-ipc(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sway-ipc&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help