noble (7) swaybar-protocol.7.gz

Provided by: sway_1.9-1build2_amd64 bug

NAME

       swaybar-protocol - JSON status line protocol for swaybar

SUMMARY

       swaybar defines the following JSON protocol to specify what information is displayed in the status line
       on the right side of swaybar. The protocol comprises a header, that is a JSON object, followed by a
       newline (0x0A), followed by an infinite JSON array that represents the information to display. All
       communication is done by writing the status line to standard output and reading events from standard
       input.

       The header is a JSON object with support for the following properties (only version is required):

       ┌─────────────┬───────────┬─────────┬────────────────────────┐
       │  PROPERTYDATA TYPEDEFAULTDESCRIPTION       │
       ├─────────────┼───────────┼─────────┼────────────────────────┤
       │  version    │  integer  │    -    │ The protocol version   │
       │             │           │         │ to use. Currently,     │
       │             │           │         │ this must be 1         │
       ├─────────────┼───────────┼─────────┼────────────────────────┤
       │click_events │  boolean  │  false  │ Whether to receive     │
       │             │           │         │ click event            │
       │             │           │         │ information to         │
       │             │           │         │ standard input         │
       ├─────────────┼───────────┼─────────┼────────────────────────┤
       │cont_signal  │  integer  │ SIGCONT │ The signal that        │
       │             │           │         │ swaybar should send to │
       │             │           │         │ continue processing    │
       ├─────────────┼───────────┼─────────┼────────────────────────┤
       │stop_signal  │  integer  │ SIGSTOP │ The signal that        │
       │             │           │         │ swaybar should send to │
       │             │           │         │ stop processing        │
       └─────────────┴───────────┴─────────┴────────────────────────┘

   MINIMAL HEADER
           {
                "version": 1
           }

   FULL HEADER
           {
                "version": 1,
                "click_events": true,
                "cont_signal": 18,
                "stop_signal": 19
           }

BODY

       The body is an infinite array, where each element of the array is a representation of the status line at
       the time that the element was written. Each element of the array is itself an array of JSON objects,
       where each object represents a block in the status line. Each block can have the following properties
       (only full_text is required):

       ┌──────────────────────┬───────────────────┬──────────────────────────────┐
       │      PROPERTYDATA TYPEDESCRIPTION          │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │      full_text       │      string       │ The text that will be        │
       │                      │                   │ displayed. If missing, the   │
       │                      │                   │ block will be skipped.       │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │     short_text       │      string       │ If given and the text needs  │
       │                      │                   │ to be shortened due to       │
       │                      │                   │ space, this will be          │
       │                      │                   │ displayed instead of         │
       │                      │                   │ full_text                    │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │        color         │      string       │ The text color to use in     │
       │                      │                   │ #RRGGBBAA or #RRGGBB         │
       │                      │                   │ notation                     │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │     background       │      string       │ The background color for the │
       │                      │                   │ block in #RRGGBBAA or        │
       │                      │                   │ #RRGGBB notation             │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │       border         │      string       │ The border color for the     │
       │                      │                   │ block in #RRGGBBAA or        │
       │                      │                   │ #RRGGBB notation             │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │     border_top       │      integer      │ The height in pixels of the  │
       │                      │                   │ top border. The default is 1 │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │    border_bottom     │      integer      │ The height in pixels of the  │
       │                      │                   │ bottom border. The default   │
       │                      │                   │ is 1                         │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │     border_left      │      integer      │ The width in pixels of the   │
       │                      │                   │ left border. The default is  │
       │                      │                   │ 1                            │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │    border_right      │      integer      │ The width in pixels of the   │
       │                      │                   │ right border. The default is │
       │                      │                   │ 1                            │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │      min_width       │ integer or string │ The minimum width to use for │
       │                      │                   │ the block. This can either   │
       │                      │                   │ be given in pixels or a      │
       │                      │                   │ string can be given to allow │
       │                      │                   │ for it to be calculated      │
       │                      │                   │ based on the width of the    │
       │                      │                   │ string.                      │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │        align         │      string       │ If the text does not span    │
       │                      │                   │ the full width of the block, │
       │                      │                   │ this specifies how the text  │
       │                      │                   │ should be aligned inside of  │
       │                      │                   │ the block. This can be left  │
       │                      │                   │ (default), right, or center. │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │        name          │      string       │ A name for the block. This   │
       │                      │                   │ is only used to identify the │
       │                      │                   │ block for click events. If   │
       │                      │                   │ set, each block should have  │
       │                      │                   │ a unique name and instance   │
       │                      │                   │ pair.                        │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │      instance        │      string       │ The instance of the name for │
       │                      │                   │ the block. This is only used │
       │                      │                   │ to identify the block for    │
       │                      │                   │ click events. If set, each   │
       │                      │                   │ block should have a unique   │
       │                      │                   │ name and instance pair.      │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │       urgent         │      boolean      │ Whether the block should be  │
       │                      │                   │ displayed as urgent.         │
       │                      │                   │ Currently swaybar utilizes   │
       │                      │                   │ the colors set in the sway   │
       │                      │                   │ config for urgent workspace  │
       │                      │                   │ buttons. See sway-bar(5) for │
       │                      │                   │ more information on bar      │
       │                      │                   │ color configuration.         │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │      separator       │      boolean      │ Whether the bar separator    │
       │                      │                   │ should be drawn after the    │
       │                      │                   │ block. See sway-bar(5) for   │
       │                      │                   │ more information on how to   │
       │                      │                   │ set the separator text.      │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │separator_block_width │      integer      │ The amount of pixels to      │
       │                      │                   │ leave blank after the block. │
       │                      │                   │ The separator text will be   │
       │                      │                   │ displayed centered in this   │
       │                      │                   │ gap. The default is 9        │
       │                      │                   │ pixels.                      │
       ├──────────────────────┼───────────────────┼──────────────────────────────┤
       │       markup         │      string       │ The type of markup to use    │
       │                      │                   │ when parsing the text for    │
       │                      │                   │ the block. This can either   │
       │                      │                   │ be pango or none (default).  │
       └──────────────────────┴───────────────────┴──────────────────────────────┘
       Other properties may be given and swaybar will ignore any property that it does not know. It is
       recommended to prefix any custom properties with an underscore to make it easier to distinguish them from
       protocol properties.

   BODY EXAMPLE
           [
                [
                     {
                          "full_text": "25%",
                          "min_width": "100%",
                          "urgent": false
                     },
                     {
                          "full_text": "Thu 30 May 2019 02:15:15"
                     }
                ],
                [
                     {
                          "full_text": "20%",
                          "min_width": "100%",
                          "urgent": false
                     },
                     {
                          "full_text": "Thu 30 May 2019 02:20:52"
                     }
                ],
                [
                     {
                          "full_text": "15%",
                          "min_width": "100%",
                          "urgent": true
                     },
                     {
                          "full_text": "Thu 30 May 2019 02:25:41"
                     }
                ],
                ...

   FULL BLOCK EXAMPLE
           {
                "full_text": "Thu 30 May 2019 02:09:15",
                "short_text": "02:09",
                "color": "#ccccccff",
                "background": "#111111ff",
                "border": "#222222ff",
                "border_top": 1,
                "border_bottom": 1,
                "border_left": 1,
                "border_right": 1,
                "min_width": 100,
                "align": "center",
                "name": "clock",
                "instance": "edt",
                "urgent": false,
                "separator": true,
                "separator_block_width": 5,
                "markup": "none"
           }

CLICK EVENTS

       If requested in the header, swaybar will write a JSON object, that can be read from standard in, when the
       user clicks on a block. The event object will have the following properties:

       ┌───────────┬───────────┬─────────────────────────────┐
       │ PROPERTYDATA TYPEDESCRIPTION         │
       ├───────────┼───────────┼─────────────────────────────┤
       │   name    │  string   │ The name of the block, if   │
       │           │           │ set                         │
       ├───────────┼───────────┼─────────────────────────────┤
       │ instance  │  string   │ The instance of the block,  │
       │           │           │ if set                      │
       ├───────────┼───────────┼─────────────────────────────┤
       │    x      │  integer  │ The x location that the     │
       │           │           │ click occurred at           │
       ├───────────┼───────────┼─────────────────────────────┤
       │    y      │  integer  │ The y location that the     │
       │           │           │ click occurred at           │
       ├───────────┼───────────┼─────────────────────────────┤
       │  button   │  integer  │ The x11 button number for   │
       │           │           │ the click. If the button    │
       │           │           │ does not have an x11 button │
       │           │           │ mapping, this will be 0.    │
       ├───────────┼───────────┼─────────────────────────────┤
       │  event    │  integer  │ The event code that         │
       │           │           │ corresponds to the button   │
       │           │           │ for the click               │
       ├───────────┼───────────┼─────────────────────────────┤
       │relative_x │  integer  │ The x location of the click │
       │           │           │ relative to the top-left of │
       │           │           │ the block                   │
       ├───────────┼───────────┼─────────────────────────────┤
       │relative_y │  integer  │ The y location of the click │
       │           │           │ relative to the top-left of │
       │           │           │ the block                   │
       ├───────────┼───────────┼─────────────────────────────┤
       │  width    │  integer  │ The width of the block in   │
       │           │           │ pixels                      │
       ├───────────┼───────────┼─────────────────────────────┤
       │  height   │  integer  │ The height of the block in  │
       │           │           │ pixels                      │
       └───────────┴───────────┴─────────────────────────────┘
       Differences from i3bar's protocol:button may be 0 for buttons that do not have x11 button mappings
       •   event has been introduced to allow for non-x11 buttons to be represented
       •   The modifiers property is not currently added by swaybar

   EXAMPLE
           {
                "name": "clock",
                "instance": "edt",
                "x": 1900,
                "y": 10,
                "button": 1,
                "event": 274,
                "relative_x": 100,
                "relative_y": 8,
                "width": 120,
                "height": 18
           }

SEE ALSO

       sway-bar(5)

                                                   2024-04-01                                swaybar-protocol(7)