swayfx/sway/sway-bar.5.txt
Calvin Lee 843ad38b3c Implement Tray Icons
This commit implements the StatusNotifierItem protocol, and enables
swaybar to show tray icons. It also uses `xembedsniproxy` in order to
communicate with xembed applications.
The tray is completely optional, and can be disabled on compile time
with the `enable-tray` option. Or on runtime with the bar config option
`tray_output none`.

Overview of changes:
In swaybar very little is changed outside the tray subfolder except
that all events are now polled in `event_loop.c`, this creates no
functional difference.

Six bar configuration options were added, these are detailed in
sway-bar(5)

The tray subfolder is where all protocol implementation takes place and
is organised as follows:

tray/sni_watcher.c:
	This file contains the StatusNotifierWatcher. It keeps track of
	items and hosts and reports when they come or go.
tray/tray.c
	This file contains the StatusNotifierHost. It keeps track of
	sway's version of the items and represents the tray itself.
tray/sni.c
	This file contains the StatusNotifierItem struct and all
	communication with individual items.
tray/icon.c
	This file implements the icon theme protocol. It allows for
	finding icons by name, rather than by pixmap.
tray/dbus.c
	This file allows for asynchronous DBus communication.

See #986 #343
2017-06-07 17:49:16 -07:00

160 lines
5.2 KiB
Plaintext

/////
vim:set ts=4 sw=4 tw=82 noet:
/////
sway-bar (5)
============
Name
----
sway-bar - bar configuration file and commands
Description
-----------
Sway allows for configuration of swaybar within the sway configuation file.
Swaybar commands must be used inside a _bar { }_ block in the config.
Commands
--------
**status_command** <status command>::
Executes the bar _status command_ with _sh -c_. Each line of text printed to
stdout from this command will be displayed in the status area of the bar. You
may also use the i3bar JSON protocol:
+
https://i3wm.org/docs/i3bar-protocol.html
**pango_markup** <enabled|disabled>::
Enables or disables pango markup for status lines. This has no effect on
status lines using the i3bar JSON protocol.
**id** <bar_id>::
Sets the ID of the bar.
**position** <top|bottom>::
Sets position of the bar. Default is _bottom_.
**output** <output>::
Restrict the bar to a certain output, can be specified multiple times. If the
output command is omitted, the bar will be displayed on all outputs.
**swaybar_command** <command>::
Executes custom bar command, default is _swaybar_.
**font** <font>::
Specifies the font to be used in the bar.
**separator_symbol** <symbol>::
Specifies the separator symbol to separate blocks on the bar.
**wrap_scroll** <yes|no>::
Enables or disables wrapping when scrolling through workspaces with the
scroll wheel. Default is _no_.
**workspace_buttons** <yes|no>::
Enables or disables workspace buttons on the bar. Default is _yes_.
**strip_workspace_numbers** <yes|no>::
If set to _yes_, then workspace numbers will be omitted from the workspace
button and only the custom name will be shown. Default is _no_.
**binding_mode_indicator** <yes|no>::
Enable or disable binding mode indicator. Default is _yes_.
**height** <height>::
Sets the height of the bar. Default height will match the font size.
Tray
----
Swaybar provides a system tray where programs such as NetworkManager, VLC,
Pidgin, etc. can place little icons. The following commands configure
interaction with the tray or individual icons.
The _button_ argument in all following commands is a Linux input event code as
defined in linux/input-event-codes.h. This is because wayland defines button
codes in this manner.
**activate_button** <button>::
Sets the button to be used for the _activate_ (primary click) tray item
event. By default is BTN_LEFT (0x110).
**context_button** <button>::
Sets the button to be used for the _context menu_ (right click) tray item
event. By default is BTN_RIGHT (0x111).
**secondary_button** <button>::
Sets the button to be used for the _secondary_ (middle click) tray item
event. By default is BTN_MIDDLE (0x112).
**tray_output** none|all|<name>::
Sets the output that the tray will appear on or none. Unlike i3bar, swaybar
should be able to show icons on any number of bars and outputs without
races. Because of this, the default value for this is _all_.
**tray_padding** <px> [px]::
Sets the pixel padding of the system tray. This padding will surround the
tray on all sides and between each item. The default value for _px_ is 2.
**icon_theme** <name>::
Sets the icon theme that sway will look for item icons in. This option has
no default value, because sway will always default to the fallback theme,
hicolor.
Colors
------
Colors are defined within a _colors { }_ block inside a _bar { }_ block. Colors
must be defined in hex. i.e. _#rrggbb_ or _#rrggbbaa_ when including the alpha
channel.
**background** <color>::
Background color of the bar.
**statusline** <color>::
Text color to be used for the statusline.
**separator** <color>::
Text color to be used for the separator.
**focused_background** <color>::
Background color of the bar on the currently focused monitor output. If not
used, the color will be taken from _background_.
**focused_statusline** <color>::
Text color to be used for the statusline on the currently focused monitor
output. If not used, the color will be taken from _statusline_.
**focused_separator** <color>::
Text color to be used for the separator on the currently focused monitor
output. If not used, the color will be taken from _separator_.
**focused_workspace** <border> <background> <text>::
Border, background and text color for a workspace button when the workspace
has focus.
**active_workspace** <border> <background> <text>::
Border, background and text color for a workspace button when the workspace is
active (visible) on some output, but the focus is on another one. You can only
tell this apart from the focused workspace when you are using multiple
monitors.
**inactive_workspace** <border> <background> <text>::
Border, background and text color for a workspace button when the workspace
does not have focus and is not active (visible) on any output. This will be
the case for most workspaces.
**urgent_workspace** <border> <background> <text>::
Border, background and text color for a workspace button when the workspace
contains a window with the urgency hint set.
**binding_mode** <border> <background> <text>::
Border, background and text color for the binding mode indicator. If not used,
the colors will be taken from _urgent_workspace_.
See Also
--------
**sway**(5)