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
       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 NUMBER |	 MESSAGE NAME	 |	 PURPOSE       |
       +-------------+-------------------+---------------------+
       |      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 cur- |
       |	     |			 | rently 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 compat- |
       |	     |			 | ibility	       |
       +-------------+-------------------+---------------------+
       |     12	     | GET_BINDING_STATE | Request the current |
       |	     |			 | binding state, e.g. |
       |	     |			 | the	currently  ac- |
       |	     |			 | tive	 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
       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:

       +----------+-----------+---------------------+
       | PROPERTY | DATA TYPE |	    DESCRIPTION	    |
       +----------+-----------+---------------------+
       |   num	  |  integer  |	The  workspace num- |
       |	  |	      |	ber or -1 for work- |
       |	  |	      |	spaces 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  view 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 |
       |	  |	      |	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  mes-
       sage  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:

       +-------------------+-----------+---------------------+
       |     PROPERTY	   | DATA TYPE |     DESCRIPTION     |
       +-------------------+-----------+---------------------+
       |       name	   |  string   | The  name  of	 the |
       |		   |	       | output.   On	DRM, |
       |		   |	       | this is the connec- |
       |		   |	       | tor		     |
       +-------------------+-----------+---------------------+
       |       make	   |  string   | The  make  of	 the |
       |		   |	       | output		     |
       +-------------------+-----------+---------------------+
       |       model	   |  string   | The  model  of	 the |
       |		   |	       | output		     |
       +-------------------+-----------+---------------------+
       |      serial	   |  string   | The output's serial |
       |		   |	       | number	as  a  hexa- |
       |		   |	       | decimal 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	out- |
       |		   |	       | put  or -1 for	dis- |
       |		   |	       | abled outputs	     |
       +-------------------+-----------+---------------------+
       | subpixel_hinting  |  string   | The subpixel  hint- |
       |		   |	       | ing  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	out- |
       |		   |	       | puts		     |
       +-------------------+-----------+---------------------+
       |       modes	   |   array   | An  array  of	sup- |
       |		   |	       | ported	  mode	 ob- |
       |		   |	       | jects.	 Each object |
       |		   |	       | contains     width, |
       |		   |	       | height, and refresh |
       +-------------------+-----------+---------------------+
       |   current_mode	   |  object   | An   object  repre- |
       |		   |	       | senting 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	repre-
       sents 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	win- |
       |		   |	       | dow title. For	 the |
       |		   |	       | scratchpad,	this |
       |		   |	       | will		  be |
       |		   |	       | __i3_scratch	 for |
       |		   |	       | compatibility	with |
       |		   |	       | i3.		     |
       +-------------------+-----------+---------------------+
       |       type	   |  string   | The  node  type. It |
       |		   |	       | can be	 root,	out- |
       |		   |	       | put,	  workspace, |
       |		   |	       | con,	or    float- |
       |		   |	       | ing_con	     |
       +-------------------+-----------+---------------------+
       |      border	   |  string   | The   border  style |
       |		   |	       | for  the  node.  It |
       |		   |	       | can	be   normal, |
       |		   |	       | none, pixel, or csd |
       +-------------------+-----------+---------------------+
       |   current_bor-	   |  integer  | Number	 of   pixels |
       |   der_width	   |	       | 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 |
       |		   |	       | vertical,  horizon- |
       |		   |	       | tal, 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  decora- |
       |		   |	       | tions	are excluded |
       |		   |	       | from this, but	bor- |
       |		   |	       | ders 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 |
       |		   |	       | outside  the	win- |
       |		   |	       | dow_rect	     |
       +-------------------+-----------+---------------------+
       |     deco_rect	   |  object   | The geometry of the |
       |		   |	       | decorations for the |
       |		   |	       | node	relative  to |
       |		   |	       | the parent node     |
       +-------------------+-----------+---------------------+
       |     geometry	   |  object   | The natural  geome- |
       |		   |	       | try of	the contents |
       |		   |	       | if  it	were to	size |
       |		   |	       | itself		     |
       +-------------------+-----------+---------------------+
       |      urgent	   |  boolean  | Whether the node or |
       |		   |	       | any of	its  descen- |
       |		   |	       | dants	has  the ur- |
       |		   |	       | gent	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  submit- |
       |		   |	       | ting	reproduction |
       |		   |	       | steps for  bug	 re- |
       |		   |	       | ports		     |
       +-------------------+-----------+---------------------+
       |  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	     |
       +-------------------+-----------+---------------------+
       |     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 views) For an |
       |		   |	       | xdg-shell view, the |
       |		   |	       | name of the  appli- |
       |		   |	       | cation,   if	set. |
       |		   |	       | Otherwise, null     |
       +-------------------+-----------+---------------------+
       |	pid	   |  integer  | (Only	views)	 The |
       |		   |	       | PID of	the applica- |
       |		   |	       | tion  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 ob- |
       |		   |	       | ject containing the |
       |		   |	       | state of the appli- |
       |		   |	       | cation	  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	win- |
       |		   |	       | dow  ID   for	 the |
       |		   |	       | xwayland view	     |
       +-------------------+-----------+---------------------+
       | window_properties |  object   | (Only	    xwayland |
       |		   |	       | views)	 An   object |
       |		   |	       | containing  the ti- |
       |		   |	       | tle,	class,	 in- |
       |		   |	       | stance,	win- |
       |		   |	       | dow_role,	win- |
       |		   |	       | dow_type, and tran- |
       |		   |	       | sient_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 unde-
       fined.

       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 asso-
       ciated 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  informa-
       tion 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 in- |
       |		     |		 | visible	       |
       +---------------------+-----------+---------------------+
       |      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  but- |
       |		     |		 | tons	on the bar     |
       +---------------------+-----------+---------------------+
       | workspace_min_width |	integer	 | Minimum width in px |
       |		     |		 | for	the  workspace |
       |		     |		 | buttons on the bar  |
       +---------------------+-----------+---------------------+
       | binding_mode_indi-  |	boolean	 | Whether to  display |
       | cator		     |		 | the current binding |
       |		     |		 | mode	on the bar     |
       +---------------------+-----------+---------------------+
       |       verbose	     |	boolean	 | For	i3 compatibil- |
       |		     |		 | ity,	this  will  be |
       |		     |		 | the	boolean	 value |
       |		     |		 | false.	       |
       +---------------------+-----------+---------------------+
       |       colors	     |	object	 | An object  contain- |
       |		     |		 | ing	the  #RRGGBBAA |
       |		     |		 | colors to  use  for |
       |		     |		 | the	bar. See below |
       |		     |		 | for	more  informa- |
       |		     |		 | tion		       |
       +---------------------+-----------+---------------------+
       |	gaps	     |	object	 | An	object	repre- |
       |		     |		 | senting  the	  gaps |
       |		     |		 | for	the  bar  con- |
       |		     |		 | sisting   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 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:
       +---------------------------+----------------------------+
       |	 PROPERTY	   |	    DESCRIPTION		|
       +---------------------------+----------------------------+
       |	background	   | The  color	 to use	for the	|
       |			   | bar  background  on  unfo-	|
       |			   | cused 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  unfo-	|
       |			   | cused 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  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	|
       |			   | workspace button		|
       +---------------------------+----------------------------+
       |   active_workspace_text   | The  color	 to use	for the	|
       |			   | text of the workspace but-	|
       |			   | tons for the visible work-	|
       |			   | spaces on	unfocused  out-	|
       |			   | puts			|
       +---------------------------+----------------------------+
       |    active_workspace_bg	   | The  color	 to use	for the	|
       |			   | background	 of  the  work-	|
       |			   | space buttons for the vis-	|
       |			   | ible  workspaces  on unfo-	|
       |			   | cused 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  work-	|
       |			   | space  buttons  for  work-	|
       |			   | spaces  that are not visi-	|
       |			   | ble			|
       +---------------------------+----------------------------+
       | 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 view	|
       +---------------------------+----------------------------+
       |    urgent_workspace_bg	   | The  color	 to use	for the	|
       |			   | background	 of  the  work-	|
       |			   | space  buttons  for  work-	|
       |			   | spaces that contain an ur-	|
       |			   | gent 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:

       +----------------+-----------+---------------------+
       |    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 infor- |
       |		|	    | mation 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
       config

       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
       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:

       +------------------+-----------+---------------------+
       |     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	de- |
       |		  |	      |	vice		    |
       +------------------+-----------+---------------------+
       |       type	  |  string   |	The   device  type. |
       |		  |	      |	Currently this	can |
       |		  |	      |	be	  keyboard, |
       |		  |	      |	pointer,     touch, |
       |		  |	      |	tablet_tool,	    |
       |		  |	      |	tablet_pad,	 or |
       |		  |	      |	switch		    |
       +------------------+-----------+---------------------+
       | xkb_active_lay-  |  string   |	(Only	 keyboards) |
       | out_name	  |	      |	The name of the	ac- |
       |		  |	      |	tive  keyboard lay- |
       |		  |	      |	out in use	    |
       +------------------+-----------+---------------------+
       | xkb_layout_names |   array   |	(Only keyboards)  A |
       |		  |	      |	list a layout names |
       |		  |	      |	configured  for	the |
       |		  |	      |	keyboard	    |
       +------------------+-----------+---------------------+
       | xkb_active_lay-  |  integer  |	(Only	 keyboards) |
       | out_index	  |	      |	The  index  of	the |
       |		  |	      |	active	   keyboard |
       |		  |	      |	layout in use	    |
       +------------------+-----------+---------------------+
       |  scroll_factor	  | floating  |	(Only	  pointers) |
       |		  |	      |	Multiplier  applied |
       |		  |	      |	on   scroll   event |
       |		  |	      |	values.		    |
       +------------------+-----------+---------------------+
       |     libinput	  |  object   |	(Only libinput	de- |
       |		  |	      |	vices)	 An  object |
       |		  |	      |	describing the cur- |
       |		  |	      |	rent  device   set- |
       |		  |	      |	tings.	 See  below |
       |		  |	      |	for  more  informa- |
       |		  |	      |	tion		    |
       +------------------+-----------+---------------------+

       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
       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:

       +--------------------+-----------+---------------------+
       |      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 disabled	      |
       +--------------------+-----------+---------------------+
       |   tap_button_map   |  string	| The finger to	 but- |
       |		    |		| ton  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 |
       |		    |		| disabled	      |
       +--------------------+-----------+---------------------+
       |   tap_drag_lock    |  string	| Whether   drag-lock |
       |		    |		| is  enabled. It can |
       |		    |		| be enabled or	 dis- |
       |		    |		| abled		      |
       +--------------------+-----------+---------------------+
       |    accel_speed	    |  double	| The  pointer-accel- |
       |		    |		| eration 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 |
       |		    |		| 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      |
       +--------------------+-----------+---------------------+
       |  click_button_map  |  string	| The finger to	 but- |
       |		    |		| ton  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_but- |
       |		    |		| ton_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  en- |
       |		    |		| abled.  It  can  be |
       |		    |		| enabled or disabled |
       +--------------------+-----------+---------------------+
       |	dwt	    |  string	| Whether    disable- |
       |		    |		| while-typing is en- |
       |		    |		| abled.  It  can  be |
       |		    |		| enabled 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 ma- |
       |		    |		| trix	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	 currently  fo-	|
       |	      |		  | cused   by	a  node	|
       |	      |		  | (i.e.   a	surface	|
       |	      |		  | layer  or  xwayland	|
       |	      |		  | unmanaged  has  fo-	|
       |	      |		  | cus)		|
       +--------------+-----------+---------------------+
       |   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_IN-	|
       |	      |		  | PUTS		|
       +--------------+-----------+---------------------+

       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 TYPE |	    NAME       |     DESCRIPTION     |
       +------------+------------------+---------------------+
       | 0x80000000 |	 workspace     | Sent  whenever	  an |
       |	    |		       | event	involving  a |
       |	    |		       | workspace    occurs |
       |	    |		       | such as initializa- |
       |	    |		       | tion of a new work- |
       |	    |		       | space	or a differ- |
       |	    |		       | ent 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 config- |
       |	    |		       | ured binding is ex- |
       |	    |		       | ecuted		     |
       +------------+------------------+---------------------+
       | 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 |
       |	    |		       | devices 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   repre- |
       |	  |	      |	senting	 the  work- |
       |	  |	      |	space  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  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:

       +--------------+-----------+---------------------+
       |   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 view 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   repre- |
       |	   |	       | senting   the	view |
       |	   |	       | effected	     |
       +-----------+-----------+---------------------+

       The following change types are currently	available:
       +-----------------+----------------------------+
       |      TYPE	 |	  DESCRIPTION	      |
       +-----------------+----------------------------+
       |       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 repar- |
       |		 | ented in the	tree	      |
       +-----------------+----------------------------+
       |    floating	 | The view has	become float- |
       |		 | ing or is no	longer float- |
       |		 | ing			      |
       +-----------------+----------------------------+
       |     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:

       +------------------+-----------+---------------------+
       |     PROPERTY	  | DATA TYPE |	    DESCRIPTION	    |
       +------------------+-----------+---------------------+
       |      change	  |  string   |	The change that	oc- |
       |		  |	      |	curred	  for	the |
       |		  |	      |	binding.  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  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:

       +----------+-----------+---------------------+
       | 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 vis- |
       |		     |		 | ible	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   repre- |
       |	  |	      |	senting	 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 ef- |
       |		 | fective  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)

				  2025-04-24			   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+14.3.quarterly>

home | help