libvga.config

package: svgalib

title: libvga.config(5)

summary: the svgalib configuration file

text:
# libvga.config(5)

## NAME
libvga.config, svgalibrc - the svgalib configuration file

## DESCRIPTION
The svgalib configuration is usually located in /etc/vga/libvga.config though one can reconfigure this location when recompiling svgalib.

In the configuration file, everything between a # and the end of the line is ignored. Empty lines are also ignored. Since the driver you will use may not know all config options here, unknown commands are silently ignored. Please think of that when something does not work as you expect. I know this is a nuisance because misformed configuration statements do not cause errors. Multiple commands are allowed in one line, and commands can exceed lines.

Actually, svgalib simply reads a list of whitespace separated tokens from the file until it finds one it knows and it then assumes the following tokens to be arguments of that command until one is encountered which may not be an argument.

New style options are in general case insensitive whereas the old style options are case sensitive. The old style options are included to allow for old config files still being used. For completeness they are documented in the OBSOLETE COMMANDS section. You should not use them anymore.

In addition, svgalib(7) parses the files ~/.svgalibrc and the file given in the environment variable SVGALIB_CONFIG_FILE.

Finally, the contents of the environment variable SVGALIB_CONFIG are parsed like the files before.

Configuration commands which control hardware settings that might cause harm to your hardware are called privileged. By default the privileged commands can only be used in the main configuration file /etc/vga/libvga.config for safety (s.t. a non root user can not cause any harm to your hardware by misconfiguring svgalib(7)).

Enable them in the other locations as well with the command overrideenable in the main config file. BEWARE! This allows every user to change the monitor and clocks (and other configs) and thus damaging the hardware. I strongly discourage the use of overrideenable except for debugging/testing purposes.

## REQUIRED CONFIGURATION
Please do not allow the vastness of options to confuse you. Generally svgalib uses well choosen defaults and is able to autodetect everything. Thus generally you don't need to specify much. When installing svgalib it provides a sample /etc/vga/libvga.config file which contains most of the required configuration. Just edit it to your needs.

Generally you only need to use:

mouse

To specify if you use anything else then a Microsoft compatible mouse.

mdev

If the mouse device file is not /dev/mouse which is generally a symbolic link to the actual mouse device file. You will usually need to use this command if you want to use the SpaceTec Spaceball device (which is not your usual mouse).

setRTS, clearRTS, leaveRTS, setDTR, clearDTR, and leaveDTR

if your mouse needs it to enter your desired mouse protocol.

monitor, or (better) HorizSync and VertRefresh

to specify the capabilities of your monitor.

### If you use the EGA chipset driver
monotext or colortext

to specify if your EGA card is in monochrome or color configuration.

### If you use the Mach32 chipset driver
You should consider reading svgalib.mach32(7).

Clocks clock1 clock2 clock3 ...

to specify the Mach32 clocks. This is mandatory. However, if you omit it. svgalib will autodetect clocks and modify your /etc/vga/libvga.config file and abort. After this, every svgalib application started will find the proper Clocks command.

mach32eeprom /etc/vga/mach32.eeprom

is recommended to avoid slowish reads of the Mach32 EEPROM which will also cause annoying screen flickering.

### If you use the Mach64 chipset driver
Chipset Mach64

if you want to use the experimental pre-alpha driver

### If you use the S3 chipset driver
I don't have much knowledge on the S3, but it seems to me that you need:

Clocks clock1 clock2 ...

to specify the clocks (take them from your Xfree86 configuration).

or

ClockChip icd2061a number

if you have an Icd2061a clockchip.

Ramdac chipname

if your Ramdac is not detected properly.

Dacspeed speed

if the default choosen is not right (probably too restrictive).

The remaining options are really only to be used in case of problems which you'll not generally encounter.

### If you use the VESA chipset driver
VesaText

forces the driver to set 80x25 text mode, before any standard vga mode setting. Fixes text mode restoring with many cards, as well as standard VGA modes.

VesaSave

selects the bitmap to save and restore, using VESA functions. see VESA documentation for bits' meanings. The default is 1110 (=14) which is good for most cards, but some give better results with other numbers.

## GENERAL OPTIONS (HANDLED BY THE MAIN MODULE)

### Mouse configuration
mouse mousetype

where mousetype is one of: Microsoft, MouseSystems, MMSeries, Logitech, Busmouse, PS2, MouseMan, gpm, Spaceball, none, IntelliMouse, or IMPS2. mousetype can also be a number (0 - 9) for the keywords Microsoft - none. gpm allows for (hopefully) peaceful interaction with gpm, Spaceball enables support for the 6-axes Spacetec Spaceball mouse (well, probably more like a trackball), IntelliMouse and IMPS2 refer to the Microsoft IntelliMouse or Logitech MouseMan+, where IntelliMouse is for serial port and IMPS2 for such a mouse on the PS/2 port.

Note that it is not possible to specify the Microsoft IntelliMouse or Logitech MouseMan+ by a number. This is due to historical and compatibility reasons.

mouse_override

This command is only available if ALLOW_MOUSE_OVERRIDE was set in Makefile.cfg when svgalib was compiled (which is the default). If given, svgalib ignores any mouse type the program specifies but uses the type configured with the mouse command.

For example, DOOM does not recognize MouseMan as a valid mouse type and defaults the mouse type to MouseSystems. This command allows to make svgalib ignore whatever DOOM specifies and use MouseMan anyway.

mdev mousedevice

Usually /dev/mouse (the default) will be a link to the mouse device. However, esp. with the Spacetec Spaceball you may want to specify a different device for svgalib(7) to use: mdev /dev/ttyS0 # mouse is at /dev/ttyS0

Some multiprotocol mice use the state of RTS and DTR to find out which protocol to enable:

setRTS

set the RTS wire.

clearRTS

clear the RTS wire.

leaveRTS

leave the RTS wire alone (default) (Wire is usually set)

setDTR

set the DTR wire.

clearDTR

clear the DTR wire.

leaveDTR

leave the DTR wire alone (default) (Wire is usually set)

For example my mouse can emulate Microsoft and MouseSystems. It needs a low RTS to go into MouseSystems mode. Thus I use:

mouse MouseSystems clearRTS

Still I could just use mouse Microsoft and use the mouse with that protocol.. But then only 2 buttons instead of 3 are supported (not that I know many svgalib programs that uses more than 2 buttons.)

Other mice might need clearDTR as well or one set and clear. Try yourself.

Note: Having crtscts handshake enabled on the mouse tty may interfer with this options. Do not do that.

Finally, a special goodie for wheel mice:

mouse_fake_kbd_event upscancode downscancode

sends a fake keyboard event to the program when the wheel on a Microsoft IntelliMouse, Logitech MouseMan+, or similar wheel mouse is turned. The up and down scancodes are the scancodes of the keys to simulate when the wheel is turned up and down, respectively.

The following can be specified for the scancodes: letters (A-Z), numbers (0-9), function keys (F1-F12), or any of the following - ESCAPE, MINUS, EQUAL, BACKSPACE, TAB, BRACKET_LEFT, BRACKET_RIGHT, ENTER, LEFTCONTROL, SEMICOLON, APOSTROPHE, GRAVE, LEFTSHIFT, BACKSLASH, COMMA, PERIOD, SLASH, RIGHTSHIFT, KEYPADMULTIPLY, LEFTALT, SPACE, CAPSLOCK, NUMLOCK, SCROLLLOCK, KEYPAD7, CURSORUPLEFT, KEYPAD8, CURSORUP, KEYPAD9, CURSORUPRIGHT, KEYPADMINUS, KEYPAD4, CURSORLEFT, KEYPAD5, KEYPAD6, CURSORRIGHT, KEYPADPLUS, KEYPAD1, CURSORDOWNLEFT, KEYPAD2, CURSORDOWN, KEYPAD3, CURSORDOWNRIGHT, KEYPAD0, KEYPADPERIOD, KEYPADCENTER, RIGHTCONTROL, CONTROL, KEYPADDIVIDE, PRINTSCREEN, RIGHTALT, BREAK, BREAK_ALTERNATIVE, HOME, CURSORBLOCKUP, PAGEUP, CURSORBLOCKLEFT, CURSORBLOCKRIGHT, END, CURSORBLOCKDOWN, PAGEDOWN, INSERT.

Note that this option has no effect unless the IntelliMouse or IMPS2 mouse type is used (see above). Also note that the simulated keypresses are instantaneous, so they cannot be used for functions that require a key to be held down for a certain length of time.

This example simulates a press of the left bracket ([) when the wheel is turned up and a press of the right bracket (]) when the wheel is turned down (good for selecting items in Quake II):

mouse_fake_kbd_event BRACKET_LEFT BRACKET_RIGHT

### Mouse acceleration
Svgalib versions 1.3.0 and later use the following commands to control the logarithmic mouse acceleration:

mouse_force

If given, force use of input parameters even if they seem strange.

mouse_maxdelta <integer>

Set max delta BEFORE acceleration.

mouse_accel_maxdelta <integer>

Set max delta AFTER acceleration.

mouse_accel_thresh <integer>

Set acceleration threshold.

mouse_accel_power <float>

Set input variable for power mode.

mouse_accel_mult <float>

Set acceleration factor.

mouse_accel_type {0|off|normal|power|linear}

Set the type of acceleration. The following strings are valid values:

0 or off

No acceleration.

normal

No acceleration while delta is less than mouse_accel_thresh but multiplied by mouse_accel_mult if more.

Originally done by Mike Chapman <mike@paranoia.com>.

power

The acceleration factor is a power function of delta until it reaches mouse_accel_mult After that it's a simple multiplication. Basically it's like the normal mode but the acceleration factor grows as you move your mouse faster and faster, not just turns in and out. If the acceleration factor reaches mouse_accel_mult it turns into a plain multiplication. Threshold has the same meaning as in normal mode. The one I use for *uaking... :)

It is calculated like this:

if (abs(dx) > 1) /* to prevent losing resolution */

dx = (abs(dx) >=

mouse_accel_thresh ) ?

(float)dx *

mouse_accel_mult :

(float)dx *

m_accel_powertable[abs(dx)];

linear

The acceleration factor grows linear with the delta until it reaches mouse_accel_thresh. After that it is a simple mutiplication. (I know that it can be done with setting mouse_accel_power to 1, but it was one minute to implement... and uses no memory... and...) It is calculated like this:

if (abs(dx) > 1)

dx = (abs(dx) >=

mouse_accel_thresh ) ?

(float)dx *

mouse_accel_mult :

(float)dx * abs(dx) *

mouse_accel_mult /

mouse_accel_thresh ;

The enhanced acceleration was done by 101 (Attila Lendvai) <101@kempelen.inf.bme.hu>

### Joystick configuration
As of now, svgalib supports up to four joystick devices. You must have joystick support in your kernel to support this.

joystick0 device

sets the device name to use for joystick 0. The commands joystick1, joystick2 and joystick3 configure the other joysticks. By default the names /dev/js0, /dev/js1, /dev/js2 and /dev/js3 are used.

### Keyboard configuration
kbd_fake_mouse_event scancode [flag(s)] command [argument]

, as it says, sends a fake mouse event to the program. Scancode is a raw scancode as you can find them in <keyboard/vgakeyboard.h>.

Supported flag(s) are:

down

trigger event when the key is pressed (default).

up

the opposite.

both

trigger in both case, if pressed or released.

repeat

repeat events if the key is kept pressed (off by default).

Supported commands are:

delta[xyz]

send a fake delta event as if you have moved your mouse. If the parameter is off or on it will turn off/on the respective mouse axis (requires a parameter, of course)

button[123]

send a fake event that the mouse button is pressed or released as given by the parameter (pressed or released)

Here are some examples: This is one I use in *uake: it turns around, looks down a bit and when the key is released it does the opposite, so it gets back to the starting state. With this one and the help of a rocket you can fly though the whole map :) (Scancode 28 is <Enter>):

kbd_fake_mouse_event 28 both deltax 8182

down deltay -1500

up deltay 1500

This one will switch off the y axis of the mouse while the key <Right Ctrl> is kept pressed.

kbd_fake_mouse_event 97 down deltay off

up deltay on

This one is the same as if you were pressing the left mouse button. (But if you move your mouse then the button state will reset even if you keep <Right Ctrl> down...)

kbd_fake_mouse_event 97 down button1 pressed

up button1 released

NOTE: This does only work when the keyboard is in raw keyboard mode!

Yet another feature brought to you by 101 (Attila Lendvai) <101@kempelen.inf.bme.hu>

nosigint

This command disables generation of a SIGINT signal when <Ctrl-C> is pressed. This works regardless of ordinary or raw keyboard mode (albeit the hot key might be different from <Ctrl-C> in the first case).

Note that this is a very dangerous option. Disabling SIGINT will lock you in programs which can only by quit by <Ctrl-C>! However, there were request for it for Quake playing.

sigint (default)

Enables generation of SIGINT.

### Monitor configuration
HorizSync min_kHz max_kHz

VertRefresh min_Hz max_Hz

specifies the range of frequencies acceptable to your monitor. They obsolete the monitor settings below, and this shouldn't be used if HorizSync and VertRefresh are defined. Examples: HorizSync 31.5 35.5

VertRefresh 50 70

monitor monitor_class

where monitor_class is a digit 0 - 6 or the maximal horizontal frequency in kHz. Examples: monitor 0 # Max horizontal sync is 31.5 kHz

monitor 1 # Max horizontal sync is 35.1 kHz

monitor 2 # Max horizontal sync is 35.5 kHz

monitor 3 # Max horizontal sync is 37.9 kHz

monitor 4 # Max horizontal sync is 48.3 kHz

monitor 5 # Max horizontal sync is 56.0 kHz

monitor 6 # No restrictions.

For your convenience you may specify the max horizontal sync explicitly. The correct class will the be chosen. You may use floats consisting of digits and a decimal point for this too:

monitor 40.0 # equivalent to monitor 3

This command is privileged.

### Mode timings
It is now possible to define modetimings for some cards (see the info on your card in svgalib(7)). The syntax is:

modeline label pxcl HDsp HSS HSE HTot VDsp VSS VSE VTot flags

label string

(ignored by svgalib) mainly there to be compatible with XF86Config. I use the format "Width x Height @ Vert.Refresh", but that's just personal taste...

pxcl float

the pixel clock in MHz

HDsp

VDsp integer

size of the visible area (horizontal/vertical)

HSS

VSS integer

Sync start (horizontal/vertical)

HSE

VSE integer

Sync end (horizontal/vertical)

HTot

VTot integer

Total width/height (end of back porch)

flags +hsync -hsync +vsync -vsync interlace interlaced

doublescan Sync polarity, interlace mode

Everything should be on one line. The values for the horizontal timings must be multiples of eight.

These are prefered over the default timings (if monitor and chipset can handle them). The format is identical to the one used by XFree86, but the label following the modeline keyword is ignored by vgalib.

Here some examples:

modeline 640x480@100 43 640 664 824 848 480 483 490 504

modeline 800x600@73 50 800 856 976 1024 600 637 643 666

modeline 1024x768@75 85 1024 1048 1376 1400 768 771 780 806

IMPORTANT! Not all drivers, that is SVGA cards, use the values. Only drivers using timing.c. As of this writing, drivers using this feature are: Ark, Cirrus, Chips & Technologies, Et6000, S3.

The Mach32 driver provides a similar feature separately, you have to use the define command described below.

ET4000 (and to some extent EGA) allow one to use a binary file created by some utility. All other chipset driver use predefined timings that are hardcoded in register dumps within the drivers. See svgalib.et4000(7) for more information.

### Chipset detection
Usually svgalib does a good job autodetecting your hardware. However, if auto detection fails (or you want to fall back to a simpler driver, say VGA, as a bug work around), you may force detection of your chipset with

chipset type

where type is (currently) one of: VGA, ET4000, Cirrus, TVGA, Oak, EGA, S3, ET3000, Mach32, GVGA6400, ARK, ATI, ALI, Mach64, C&T, APM, NV3, ET6000, VESA, MX, PARADISE, and RAGE. You can also specify a number in range 1 - 22 to specify the type-th chipset type or 0 to enforce autodetection.

Warning, incorrect settings may damage your hardware. This command is privileged.

chipset type param1 param2

use this form if the size of memory or an additional configuration option is misdetected. For example: chipset Mach32 0 2048

Note that always two integers have to be specified. Usually (Mach32) the second parameter is the memory amount. Look at the *_init function of the specific device driver sources or information on that type of cards in svgalib(7).

Note that there is a more convenient command setuplinear for enforcing specific memory-aperture configurations for Mach32

This command is privileged.

### Specific options required for the EGA-driver.
monotext

Card is in monochrome emulation mode

colortext

Card is in color emulation mode This command is privileged.

### RAMDAC configuration
Some chipsets (e.g. S3 and ARK) allow specifying a RAMDAC type. If your RAMDAC is not autodetected, you can try specifying it:

Ramdac Sierra32K

Ramdac SC15025

Ramdac SDAC

S3 SDAC

Ramdac GenDAC

S3 GenDAC

Ramdac ATT20C490

AT&T 20C490, 491, 492 (and compatibles)

Ramdac ATT20C498

AT&T 20C498

Ramdac IBMRGB52x

IBM RGB524, 526, 528 (and compatibles)

BEWARE! The Mach32 driver features an own ramdac command (which is usually not required). If you have a Mach32, see svgalib.mach32(7).

Dacspeed speed

speed is a floating point number in MHz (like in Dacspeed40.0") specifying the maximal allowable pixel clock of the Ramdac in use. Currently this option is only supported by the S3 driver. The Mach32 driver supports maxclock8, maxclock16, maxclock24, and maxclock32 commands which have a similar effect. Nevertheless, the Mach32 has a very good idea on the capabilities of the Ramdac in use. The settings are more intended to specify the VGA memory bandwidth.

### Pixel clocks
Clocks list of clock values as floats or ints

Some chipsets need a list of dot clocks for optimum operation. Some includes or supports a programmable clock chip. You'll need to specify them here.

Fixed clocks example: (The following is just an example, get the values for your card from you X setup)

Clocks 25.175 28.3 40 70 50 75 36 44.9 0 118 77 31.5 110 65 72 93.5

BEWARE! The Clocks command for the Mach32 features only integer clocks. Please round your clocks to the next integer data. The Mach32 only uses these values to check monitor requirements and to compare the quality of modes. The rounding errors are of no importance there as the difference in the resulting monitor timings is barely measurable. See the Mach32 section below.

Clockchip ICD2061A

Configure for a programmable clockchip. ICD2061A is the only one supported right now.

### Miscanellous options
security revoke-all-privs

Make sure it is impossible to regain root access after vga_init(3) was called. (default)

security compat

For compatibility to pre 1.2.11, do not close a security hole using saved uids.

verbose

Mach32: show messages while processing all info to build up a mode table.

quiet

Turn verbose messages off (default).

nolinear

Inhibit use of a linear mmaped frame buffer.

linear

Allow (not enforce!) use of a linear mmaped frame buffer.

overrideenable

Allow privileged commands outside the main configuration file.

### Common options currently used by Mach32 only
Options that may be useful for all drivers, but currently are only supported by Mach32 (Please read svgalib.mach32(7) if you use one):

maxclock16 maxclk

The maximum pixel clock to use for 16bpp modes. This is used by Mach32 to find out which settings may be used for 16bpp modes. the Mach32 default for this is 2000, thus it is effectively switched off. maxclk must be an integer.

maxclock24 maxclk

The maximum clock to use for 24bpp modes. (see above) Experience showed that the Mach32 default 49 is good for my 2MB VRAM card.

maxclock32 maxclk

The same for 32bpp modes (24bpp with one fill byte for faster memory access (not fully implemented (esp. for Mach32) yet). Mach32 default (good for my VRAM card) is 39.

maxclock8 maxclk

Just for completeness the same for 8bpp modes (I doubt anyone needs it), default is 2000 to disable this feature.

The maxclock commands are privileged.

clocks list of clocks

Sets the frequencies of the clocks the chips can generate. Exactly 16 values have to be specified for mach32. Use 0 to disable a specific clock. Note that the mach32 can divide clocks by 2. Thus there are actually 32 clocks And you can also use the divided clocks in a define command. On contrary to Xfree96 or the clocks command above only integers are allowed for Mach32. Simply round them to the nearest integer.

This line is mandatory for Mach32. If it is not there it will be auto detected and added at the beginning of the config file. The program will then exit and when you start it next, everything should be ok.

Common clock values for Mach32:

Clock chip 18811-0:

clocks 43 49 92 36 50 56 0 45

30 32 110 80 40 45 75 65

Clock chip 18811-1:

due to Xfree86 info valid for: Ultra pro ISA, Ultra pro EISA, Ultra pro VLB(68800-3) clocks 100 126 92 36 50 56 0 45

135 32 110 80 40 45 75 65

Clock chip 1881 (ICS2494):

due to Xfree86 info valid for: Ultra pro VLB (6880006) clocks 18 22 25 28 36 44 50 56

30 32 37 39 40 0 75 65

In my own correspondence with ATI they say every Mach32 would have a 18811-1, so it should be possible just to take the 18811-1 line. However I have now reports of third party cards and motherboards with on board Mach32 chips, so be careful. Please read svgalib.mach32(7) for additional info on clocks.

The clocks command is privileged.

variablelinelength

Sometimes a mode cannot be realized with the logical linelength = pixels in a row * bytes per pixel. (definitely true for Mach32 800x600). The default behavior of Mach32 is to adjust xbytes (see vga_getmodeinfo(3)) in the info table appropriately. This command enforces this default operation and adjusts xbytes appropriately, thus overriding the standard svgalib mode. This may yield to problems with ..umm.. not well designed applications.

duplicatelinelength

Don't touch the standard mode but create an exact copy, a dynamic mode, with the adjusted xbytes value. Expect noise at some pixels in 800x600 for more than 256 colors on Mach32 when not using the dynamic mode.

strictlinelength

Same as above but delete the standard mode thus creating the non conforming xbytes modes only as dynamic modes.

To enforce the standard linelength for non-conforming modes use setlinelength below.

The linelength commands are not privileged.

In the following commands a mode is specified with horzXvertXcolors. Valid settings for colors in the mach32 driver are: 256, 32K, 64K, 16M, 16M4. 16M4 is for the 16M colors with 32bpp modes. These are expected to support slightly faster drawing.

Examples: 640x480x256, 1024x768x64K, etc...

inhibit mode1 [mode2 mode3...]

Switch the specified SVGA-Modes off. For example: inhibit 800x600x32K 800x600x64K 800x600x16M

disallows the maybe toasted mach32 800x600 modes.

The inhibit command is not privileged.

setlinelength length mode1 [mode2 mode3...]

Force the logical line length (xbytes) in the given modes to length pixels (not bytes!). See also variablelinelength, strictlinelength, and duplicatelinelength above. For example: setlinelength 800 800x600x32K 800x600x64K 800x600x16M

sets the linelength, and thus xbytes, for the 800x600 modes to the equivalent of 800 pixels. For Mach32 this will give badly designed applications an 800x600 with which they can cope. However, the Mach32 will generate a noisy video signal in some configurations.

The setlinelength command is not privileged.

define mode1 [mode2 mode3...] clock horz_timing vert_timing flags

where clock is a clock in MHz (as an integer! Has to be known by the driver. (one of the set clocks, or the exact half of one)). Only clocks in a clocks command issued before the define can be used. You may use :n to specify the n-thclock (n = 0 .. 31 for mach32).

horz_timing is four integers: hdisp h_sync_strt h_sync_wid h_total.

vert_timing has the same format but for vertical.

You may specify one or more flags out of: Interlace, +vsync, -vsync, +hsync, or -hsync to select interlace mode and polarity of sync signals. This format is almost the same Xfree uses, s.t. you may use their mode table and the modegen spreadsheet package for mode creation. You simple need to round the clock to the next integer, add the resolution instead of the timing name for Xfree and replace the modeline keyword with define. Here is a 1024x768x256 mode as example:

define 1024x768x256 80 1024 1024 1184 1312

768 768 772 791 +vsync -hsync

or

define 1024x768x256 1024x768x32K 1024x768x64K

:11 1024 1024 1184 1312 768 768 772 791

(yes any whitespace in a command is allowed, even a newline !)

Both commands define the same timings (if the 11-th clock is 80) but the first explicitly specifies the polarity of sync signals whereas the second declares that these timings are also to be used for a 32K and 64K mode.

The define command is privileged.

There is one really dangerous option (except faking clocks). Please use it only if you are sure what you are doing. Wrong setup will lead to multiple components accessing your bus at once and thus to probable hardware damage:

setuplinear address size

Sets up a linear frame buffer at address of size size (both are given in MB). If the values make sense (for example address <16MB for ISA cards) the linear aperture is setup. Since the Mach32-driver auto detects configured address itself, I strongly discourage use of this command. However I was asked for it as some PCI mach32-cards didn't setup the linear aperture correctly. Please ensure that the address range from address to address + size (exclusively) is not used in your system. Obey that due to memory remapping for example 16MB Ram may exceed the 16MB address limit.

Valid Mach32 values for size are 1 and 4 (only 4 in PCI configurations), address + size have to be below 16MB for ISA, 4GB for multiplexed PCI, and 128MB else. Example: (my setup)

setuplinear 64 4

for a 4MB linear frame buffer at address 0x4000000.

It is also valid to specify setuplinear 0 0. This will actually disable/de-configure any linear frame buffer. Useful to disable mach32 aperture even if it is enabled in the EEPROM.

The setuplinear command is privileged.

blit subcommand1 subcommand2 ...

This is a command to control the Mach32 support for oldstyle accelerator functions. Valid subcommands are bit, fill, image, and hlinelist. They enable support for the corresponding blit functions. Preceed them with no to turn them off (no space after no allowed). Use memimage to emulate the image blit using a linearframebuffer, which is usually much faster for Mach32. Use nomemimage to never use this emulation. On the Mach32 this emulation can be used in more resolutions than the actual imageblit accelerator function. Again order is vital! (esp. for the *image commands).

As the Mach32 now has also new style vga_accel(3) support there are now also the subcommands: settrans, setrop, fillbox, screencopy, drawline, putimage, drawhlinelist, putbitmap, screencopymono, setmode, polyline, polyhline, and polyfillmode. Which are also supported with a leading no. They allow to control support for the subfunctions of vga_accel(3). In addition, memimage emulation applies to putimage as well.

Some examples:

blit image nomemimage

Use IO-style imageblt where possible. Don't emulate it in any resolution.

blit image memimage

Use emulated imageblt where possible.

blit memimage image

Use IO-style imageblt where possible, and the emulation where possible in the remaining modes.

blit noimage

Disable support for imageblt.

Mach32 default is:

blit bit fill image hlinelist settrans setrop

fillbox screencopy drawline putimage

drawhlinelist putbitmap screencopymono

setmode polyline polyhline polyfillmode

memimage

The blit command is not privileged.

The Mach32 has also a few intermediate debug options for low level timing adjust. They are:

vfifo8 number

vfifo16 number

vfifo24 number

vfifo32 number

blank number

latch number

There also options which are useful to support broken Mach32 cards or third party hardware based on Mach32 which does not follow the ATI specifications completely. For example:

vendor ati

misc_ctl keep-off

svgaclocks 9

ramdac auto

For details about these options see svgalib.mach32(7). All of them are privileged.

## OBSOLETE COMMANDS
Very old svgalib versions used a different style configuration file. For compatibility, svgalib can still parse these old options. Generally the options consist of one character (case sensitive) followed by a number. Whitespace characters (space, tab, newline) can be used after the characters m and M and the number.

The old svgalib versions actually allowed a new option character to follow a number immediately. The current parser requires white space after the numbers.

Of course, you should not use these cryptic forms anymore. The obsolete commands are:

mnumber

Specify the mouse type like mouse number does.

Mclass

Specify the monitor class like monitor class does.

Cnumber

Force usage of the number-th chipset driver from the list of supported drivers VGA(1), ET4000(2), Cirrus(3), TVGA(4), Oak(5), EGA(6), S3(7), ET3000(8), Mach32(9), GVGA6400(10), ARK(11), ATI(12), ALI(13), Mach64(14), C&T(15), APM(16), NV3(17), ET6000(18), VESA(19), MX(20), PARADISE(21), and RAGE(22). C0 reenables auto detection of the chipset (default).

cflag

When using the EGA chipset driver, the card is in monochrome emulation mode for flag = 0 and in color emulation mode for flag = 1.

## FILES
/etc/vga/libvga.config

/etc/vga/libvga.et4000

## SEE ALSO
svgalib(7), svgalib.et4000(7), svgalib.chips(7), svgalib.mach32(7),

## AUTHOR
The newstyle configuration file was first implemented and documented by Michael Weller <eowmob@exp-math.uni-essen.de>. However, other people added new features.

Finally this page was edited by Michael Weller <eowmob@exp-math.uni-essen.de>.


swapd.conf

package: swapd

title: swapd.conf(5)

text:
# swapd.conf(5)

## NAME
swapd.conf - swapd configuration file

## DESCRIPTION
The file swapd.conf is read from swapd(8) at startup. The configuration file is in white space delimited format. An example configuration file might look something like this:

```
	minfree 10m
	maxfree 0
	swapsize 32m
	swapdir /var/tmp
	maxunusedswap 5
	delay 30
	include_cache yes
```

Explanation of configuration elements:

minfree

Specify the lower boundary of free memory, below this amount of free memory additional swap files are created until atleast thismuch memory is free. This is the same as the -m command line option.

maxfree

Specify the upper boundary of free memory, above this amount of free memory swap files are deactivated and may be deleted to reclaim disk space. A value of zero (0) is the default and recommended value. This is the same as the -M command line option.

swapsize

Specify the size of each swap file. This is the same as the -s command line option.

swapdir

Specify the directory where swap files will be created. This is the same as the -d command line option.

maxunusedswaps

Specify the number of unused swaps that can exist before swap files start being deleted. This is the same as the -u command line option.

include_cache

Specifies whether or not to include memory marked as being "Cached" as part of the FREE memory pool. This is generally correct because cached memory is still available for allocation if needed.

delay

Specifies how often to check the free memory status. The value specified is in seconds. Checking more frequently means swapd can respond to low memory conditions faster, but may also be overzealous in activating swap files if the memory allocations are short lived.

## FILES
/etc/swapd.conf

## SEE ALSO
swapd(8)

## AUTHOR
Roy Keene <swapd@rkeene.org>

branch: sisyphus


sway

package: sway

title: sway(5)

text:
# sway(5)

## NAME
sway - configuration file and commands

## DESCRIPTION
A sway configuration file is a list of sway commands that are executed by sway on startup. These commands usually consist of setting your preferences and setting key bindings. An example config is likely present in /etc/sway/config for you to check out.

Lines in the configuration file might be extended through multiple lines by adding a '\' character at the end of line. e.g.:

```
bindsym Shift+XF86AudioRaiseVolume exec \
	pactl set-sink-volume @DEFAULT_SINK@ -1%
```

Commands can also be given as a block in the form command { <subcommands...> }. Anything before the opening { will be prepended to the lines inside the block. For example:

```
output eDP-1 {
	background ~/wallpaper.png fill
	resolution 1920x1080
}
```

is identical to

```
output eDP-1 background ~/wallpaper.png fill
output eDP-1 resolution 1920x1080
```

These commands can be executed in your config file, via swaymsg(1), or via the bindsym command.

## COMMAND CONVENTIONS
Commands are split into several arguments using spaces. You can enclose arguments with quotation marks ("..." or '...') to add spaces to a single argument. You may also run several commands in order by separating each with , or ;. Criteria is retained across commands separated by ,, but will be reset (and allow for new criteria, if desired) for commands separated by a ;.

Throughout the documentation, | is used to distinguish between arguments for which you may only select one. [...] is used for optional arguments, and <...> for arguments where you are expected to supply some value.

## COMMANDS
This section only lists general commands. For input and output commands, refer to sway-input(5) and sway-output(5).

### Config only commands
The following commands may only be used in the configuration file.

bar [<bar-id>] <bar-subcommands...>

For details on bar subcommands, see sway-bar(5).

default_orientation horizontal|vertical|auto

Sets the default container layout for tiled containers.

include <paths...>

Include files from paths. paths can include either a full path or a path relative to the parent config, and expands shell syntax (see wordexp(3) for details). The same include file can only be included once; subsequent attempts will be ignored.

swaybg_command <command>

Executes custom background command. Default is swaybg. Refer to sway-output(5) for more information. It can be disabled by setting the command to a single dash: swaybg_command -

swaynag_command <command>

Executes custom command for swaynag. Default is swaynag. Additional arguments may be appended to the end. This should only be used to either direct sway to call swaynag from a custom path or to provide additional arguments. This should be placed at the top of the config for the best results. It can be disabled by setting the command to a single dash: swaynag_command -

workspace_layout default|stacking|tabbed

Specifies the initial layout for new containers in an empty workspace.

xwayland enable|disable|force

Enables or disables Xwayland support, which allows X11 applications to be used. enable will lazily load Xwayland so Xwayland will not be launched until the first client attempts to connect. In some cases, such as slower machines, it may be desirable to have Xwayland started immediately by using force instead of enable.

### Runtime only commands
The following commands cannot be used directly in the configuration file. They are expected to be used with bindsym or at runtime through swaymsg(1).

border none|normal|csd|pixel [<n>]

Set border style for focused window. normal includes a border of thickness n and a title bar. pixel is a border without title bar n pixels thick. The title bar always shows in stacking or tabbed layouts. csd is short for client-side-decorations, which allows the client to draw its own decorations. Default is normal with border thickness 2.

border toggle

Cycles through the available border styles.

exit

Exit sway and end your Wayland session.

floating enable|disable|toggle

Make focused window floating, non-floating, or the opposite of what it is now.

<criteria> focus

Moves focus to the container that matches the specified criteria.

focus up|right|down|left

Moves focus to the next container in the specified direction.

focus prev|next [sibling]

Moves focus to the previous or next container in the current layout. By default, the last active child of the newly focused container will be focused. The sibling option indicates not to immediately focus a child of the container.

focus child

Moves focus to the last-focused child of the focused container.

focus parent

Moves focus to the parent of the focused container.

focus output up|right|down|left

Moves focus to the next output in the specified direction.

focus output <name>

Moves focus to the named output.

focus tiling

Sets focus to the last focused tiling container.

focus floating

Sets focus to the last focused floating container.

focus mode_toggle

Moves focus between the floating and tiled layers.

fullscreen [enable|disable|toggle] [global]

Makes focused window fullscreen, non-fullscreen, or the opposite of what it is now. If no argument is given, it does the same as toggle. If global is specified, the window will be fullscreen across all outputs.

gaps inner|outer|horizontal|vertical|top|right|bottom|left all|current set|plus|minus|toggle <amount>

Changes the inner or outer gaps for either all workspaces or the current workspace. outer gaps can be altered per side with top, right, bottom, and left or per direction with horizontal and vertical.

inhibit_idle focus|fullscreen|open|none|visible

Set/unset an idle inhibitor for the window. focus will inhibit idle when the window is focused by any seat. fullscreen will inhibit idle when the view is fullscreen (or a descendant of a fullscreen container) and is visible. open will inhibit idle until the window is closed (or the inhibitor is unset/changed). visible will inhibit idle when the window is visible on any output. none will remove any existing idle inhibitor for the window. This can also be used with criteria to set an idle inhibitor for any existing window or with for_window to set idle inhibitors for future windows.

layout default|splith|splitv|stacking|tabbed

Sets the layout mode of the focused container. When using the stacking layout, only the focused window in the container is displayed, with the opened windows' list on the top of the container.

The tabbed layout is similar to stacking, but the windows’ list is vertically split.

layout toggle [split|all]

Cycles the layout mode of the focused container though a preset list of layouts. If no argument is given, then it cycles through stacking, tabbed and the last split layout. If split is given, then it cycles through splith and splitv. If all is given, then it cycles through every layout.

layout toggle [split|tabbed|stacking|splitv|splith] [split|tabbed|stacking|splitv|splith]...

Cycles the layout mode of the focused container through a list of layouts.

max_render_time off|<msec>

Controls when the relevant application is told to render this window, as a positive number of milliseconds before the next time sway composites the output. A smaller number leads to fresher rendered frames being composited by sway and lower perceived input latency, but if set too low, the application may not finish rendering before sway composites the output, leading to delayed frames. When set to off, the relevant application is told to render this window immediately after display refresh. How much time is left for rendering before sway composites the output at that point depends on the output max_render_time setting.

To set this up for optimal latency:

1.

Set up output max_render_time (see sway-output(5)).

2.

Put the target application in full-screen and have it continuously render something.

3.

Start by setting max_render_time 1. If the application drops frames, increment by 1.

This setting only has an effect if a per-output max_render_time is in effect on the output the window is currently on. See sway-output(5) for further details.

allow_tearing yes|no

Allows or disallows screen tearing as a result of immediate page flips for a fullscreen application. When this option is not set, the tearing hints provided by the application determine whether tearing is allowed. When yes is specified, the application allows tearing regardless of the tearing hints. When no is specified, tearing will never be allowed on the application, regardless of the tearing hints.

This setting only has an effect if tearing is allowed on the output through the per-output allow_tearing setting. See sway-output(5) for further details.

move left|right|up|down [<px> px]

Moves the focused container in the direction specified. The optional px argument specifies how many pixels to move the container. If unspecified, the default is 10 pixels. Pixels are ignored when moving tiled containers.

move [absolute] position <pos_x> [px|ppt] <pos_y> [px|ppt]

Moves the focused container to the specified position in the workspace. The position can be specified in pixels or percentage points, omitting the unit defaults to pixels. If absolute is used, the position is relative to all outputs. absolute can not be used with percentage points.

move [absolute] position center

Moves the focused container to be centered on the workspace. If absolute is used, it is moved to the center of all outputs.

move position cursor|mouse|pointer

Moves the focused container to be centered on the cursor.

move [container|window] [to] mark <mark>

Moves the focused container to the specified mark.

move [--no-auto-back-and-forth] [container|window] [to] workspace [number] <name>

Moves the focused container to the specified workspace. The string number is optional and is used to match a workspace with the same number, even if it has a different name.

move [container|window] [to] workspace prev|next|current

Moves the focused container to the previous, next or current workspace on this output, or if no workspaces remain, the previous or next output.

move [container|window] [to] workspace prev_on_output|next_on_output

Moves the focused container to the previous or next workspace on this output, wrapping around if already at the first or last workspace.

move [container|window] [to] workspace back_and_forth

Moves the focused container to previously focused workspace.

move [container|window] [to] output <name-or-id>|current

Moves the focused container to the specified output.

move [container|window] [to] output up|right|down|left

Moves the focused container to next output in the specified direction.

move [container|window] [to] scratchpad

Moves the focused container to the scratchpad.

move workspace [to] output <name-or-id>|current

Moves the focused workspace to the specified output.

move workspace to [output] <name-or-id>|current

Moves the focused workspace to the specified output.

move workspace [to] output up|right|down|left

Moves the focused workspace to next output in the specified direction.

move workspace to [output] up|right|down|left

Moves the focused workspace to next output in the specified direction.

nop <comment>

A no operation command that can be used to override default behaviour. The optional comment argument is ignored, but logged for debugging purposes.

reload

Reloads the sway config file and applies any changes. The config file is located at path specified by the command line arguments when started, otherwise according to the priority stated in sway(1).

rename workspace [<old_name>] to <new_name>

Rename either <old_name> or the focused workspace to the <new_name>

resize shrink|grow up|right|down|left|width|height [<amount> [px|ppt]]

Resizes the currently focused container by amount, specified in pixels or percentage points. If the units are omitted, floating containers are resized in px and tiled containers by ppt. amount will default to 10 if omitted. For tiling containers, space is taken/given from the container in the specified direction. If width or height is specified, space will be taken/given from all other containers.

resize set height <height> [px|ppt]

Sets the height of the container to height, specified in pixels or percentage points. If the units are omitted, floating containers are resized in px and tiled containers by ppt. If height is 0, the container will not be resized. For tiling containers, space is taken/given from all other containers.

resize set [width] <width> [px|ppt]

Sets the width of the container to width, specified in pixels or percentage points. If the units are omitted, floating containers are resized in px and tiled containers by ppt. If width is 0, the container will not be resized. For tiling containers, space is taken/given from all other containers.

resize set [width] <width> [px|ppt] [height] <height> [px|ppt]

Sets the width and height of the container to width and height, specified in pixels or percentage points. If the units are omitted, floating containers are resized in px and tiled containers by ppt. If width or height is 0, the container will not be resized on that axis. For tiling containers, space is taken/given from all other containers.

scratchpad show

Shows a window from the scratchpad. Repeatedly using this command will cycle through the windows in the scratchpad.

shortcuts_inhibitor enable|disable

Enables or disables the ability of clients to inhibit keyboard shortcuts for a window. This is primarily useful for virtualization and remote desktop software. It affects either the currently focused window or a set of windows selected by criteria. Subcommand disable additionally deactivates any active inhibitors for the given window(s). Criteria are particularly useful with the for_window command to configure a class of windows differently from the per-seat defaults established by the seat subcommand of the same name. See sway-input(5) for more ways to affect inhibitors.

split vertical|v|horizontal|h|none|n|toggle|t

Splits the current container, vertically or horizontally. When none is specified, the effect of a previous split is undone if the current container is the only child of a split parent. When toggle is specified, the current container is split opposite to the parent container's layout.

splith

Equivalent to split horizontal

splitv

Equivalent to split vertical

splitt

Equivalent to split toggle

sticky enable|disable|toggle

"Sticks" a floating window to the current output so that it shows up on all workspaces.

swap container with id|con_id|mark <arg>

Swaps the position, geometry, and fullscreen status of two containers. The first container can be selected either by criteria or focus. The second container can be selected by id, con_id, or mark. id can only be used with xwayland windows. If the first container has focus, it will retain focus unless it is moved to a different workspace or the second container becomes fullscreen on the same workspace as the first container. In either of those cases, the second container will gain focus.

title_format <format>

Sets the format of window titles. The following placeholders may be used: %title

The title supplied by the window

%app_id

The wayland app ID (applicable to wayland windows only)

%class

The X11 classname (applicable to xwayland windows only)

%instance

The X11 instance (applicable to xwayland windows only)

%shell

The protocol the window is using (typically xwayland or xdg_shell)

%sandbox_engine

The associated sandbox engine

%sandbox_app_id

The app ID provided by the associated sandbox engine

%sandbox_instance_id

The instance ID provided by the associated sandbox engine

This command is typically used with for_window criteria. For example:

for_window [title="."] title_format "<b>%title</b> (%app_id)"

Note that markup requires pango to be enabled via the font command.

The default format is "%title".

### Config or runtime commands
The following commands may be used either in the configuration file or at runtime.

assign <criteria> [→] [workspace] [number] <workspace>

Assigns windows matching criteria (see CRITERIA for details) to workspace. The → (U+2192) is optional and cosmetic. This command is equivalent to:

for_window <criteria> move container to workspace <workspace>

assign <criteria> [→] output left|right|up|down|<name>

Assigns windows matching criteria (see CRITERIA for details) to the specified output. The → (U+2192) is optional and cosmetic. This command is equivalent to:

for_window <criteria> move container to output <output>

bindsym [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] [--to-code] [--input-device=<device>] [--no-warn] [--no-repeat] [--inhibited] [Group<1-4>+]<key combo> <command>

Binds key combo to execute the sway command command when pressed. You may use XKB key names here (wev(1) is a good tool for discovering these). With the flag --release, the command is executed when the key combo is released. If input-device is given, the binding will only be executed for that input device and will be executed instead of any binding that is generic to all devices. If a group number is given, then the binding will only be available for that group. By default, if you overwrite a binding, swaynag will give you a warning. To silence this, use the --no-warn flag. For specifying modifier keys, you can use the XKB modifier names Shift, Lock (for Caps Lock), Control, Mod1 (for Alt), Mod2 (for Num Lock), Mod3 (for XKB modifier Mod3), Mod4 (for the Logo key), and Mod5 (for AltGr). In addition, you can use the aliases Ctrl (for Control), Alt (for Alt), and Super (for the Logo key).

Unless the flag --locked is set, the command will not be run when a screen locking program is active. If there is a matching binding with and without --locked, the one with will be preferred when locked and the one without will be preferred when unlocked. If there are matching bindings and one has both --input-device and --locked and the other has neither, the former will be preferred even when unlocked.

Unless the flag --inhibited is set, the command will not be run when a keyboard shortcuts inhibitor is active for the currently focused window. Such inhibitors are usually requested by remote desktop and virtualization software to enable the user to send keyboard shortcuts to the remote or virtual session. The --inhibited flag allows one to define bindings which will be exempt from pass-through to such software. The same preference logic as for --locked applies.

Unless the flag --no-repeat is set, the command will be run repeatedly when the key is held, according to the repeat settings specified in the input configuration.

Bindings to keysyms are layout-dependent. This can be changed with the --to-code flag. In this case, the keysyms will be translated into the corresponding keycodes in the first configured layout.

Mouse bindings operate on the container under the cursor instead of the container that has focus. Mouse buttons can either be specified in the form button[1-9] or by using the name of the event code (ex BTN_LEFT or BTN_RIGHT). For the former option, the buttons will be mapped to their values in X11 (1=left, 2=middle, 3=right, 4=scroll up, 5=scroll down, 6=scroll left, 7=scroll right, 8=back, 9=forward). For the latter option, you can find the event names using libinput debug-events.

The priority for matching bindings is as follows: input device, group, and locked state.

--whole-window, --border, and --exclude-titlebar are mouse-only options which affect the region in which the mouse bindings can be triggered. By default, mouse bindings are only triggered when over the title bar. With the --border option, the border of the window will be included in this region. With the --whole-window option, the cursor can be anywhere over a window including the title, border, and content. --exclude-titlebar can be used in conjunction with any other option to specify that the titlebar should be excluded from the region of consideration.

If --whole-window is given, the command can be triggered when the cursor is over an empty workspace. Using a mouse binding over a layer surface's exclusive region is not currently possible.

Example:

```
		# Execute firefox when alt, shift, and f are pressed together
		bindsym Mod1+Shift+f exec firefox
```

bindcode [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] [--input-device=<device>] [--no-warn] [--no-repeat] [--inhibited] [Group<1-4>+]<code> <command> is also available for binding with key/button codes instead of key/button names.

bindswitch [--locked] [--no-warn] [--reload] <switch>:<state> <command>

Binds <switch> to execute the sway command command on state changes. Supported switches are lid (laptop lid), tablet (tablet mode) and keypad_slide (whether the device keypad is exposed or not) switches. Valid values for state are on, off and toggle. These switches are on when the device lid is shut, when tablet mode is active and when the keypad is exposed respectively. toggle is also supported to run a command both when the switch is toggled on or off. Unless the flag --locked is set, the command will not be run when a screen locking program is active. If there is a matching binding with and without --locked, the one with will be preferred when locked and the one without will be preferred when unlocked.

If the --reload flag is given, the binding will also be executed when the config is reloaded. toggle bindings will not be executed on reload. The --locked flag will operate as normal so if the config is reloaded while locked and --locked is not given, the binding will not be executed.

By default, if you overwrite a binding, swaynag will give you a warning. To silence this, use the --no-warn flag.

Example:

```
		# Show the virtual keyboard when tablet mode is entered.
		bindswitch tablet:on busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
		# Log a message when the laptop lid is opened or closed.
		bindswitch lid:toggle exec echo "Lid moved"
```

bindgesture [--exact] [--input-device=<device>] [--no-warn] <gesture>[:<fingers>][:directions] <command>

Binds gesture to execute the sway command command when detected. Currently supports the hold, pinch or swipe gesture. Optionally can be limited to bind to a certain number of fingers or, for a pinch or swipe gesture, to certain directions.

type

fingers

direction

hold

1 - 5

none

swipe

3 - 5

up, down, left, right

pinch

2 - 5

all above + inward, outward, clockwise, counterclockwise

The fingers can be limited to any sensible number or left empty to accept any finger counts. Valid directions are up, down, left and right, as well as inward, outward, clockwise, counterclockwise for the pinch gesture. Multiple directions can be combined by a plus. If a input-device is given, the binding will only be executed for that input device and will be executed instead of any binding that is generic to all devices. By default, if you overwrite a binding, swaynag will give you a warning. To silence this, use the --no-warn flag.

The --exact flag can be used to ensure a binding only matches when exactly all specified directions are matched and nothing more. If there is matching binding with --exact, it will be preferred.

The priority for matching bindings is as follows: input device, then exact matches followed by matches with the highest number of matching directions.

Gestures executed while the pointer is above a bar are not handled by sway. See the respective documentation, e.g. bindgesture in sway-bar(5).

Example:

```
		# Allow switching between workspaces with left and right swipes
		bindgesture swipe:right workspace prev
		bindgesture swipe:left workspace next
		# Allow container movements by pinching them
		bindgesture pinch:inward+up move up
		bindgesture pinch:inward+down move down
		bindgesture pinch:inward+left move left
		bindgesture pinch:inward+right move right
```

client.background <color>

This command is ignored and is only present for i3 compatibility.

client.<class> <border> <background> <text> [<indicator> [<child_border>]]

Configures the color of window borders and title bars. The first three colors are required. When omitted indicator will use a sane default and child_border will use the color set for background. Colors may be specified in hex, either as #RRGGBB or #RRGGBBAA. The available classes are:

client.focused

The window that has focus.

client.focused_inactive

The most recently focused window within a container which is not focused.

client.focused_tab_title

A window that has focused descendant container. Tab or stack container title that is the parent of the focused container but is not directly focused. Defaults to focused_inactive if not specified and does not use the indicator and child_border colors.

client.placeholder

Ignored (present for i3 compatibility).

client.unfocused

A window that does not have focus.

client.urgent

A window with an urgency hint. Note: Native Wayland windows do not support urgency. Urgency only works for Xwayland windows.

The meaning of each color is:

border

The border around the title bar.

background

The background of the title bar.

text

The text color of the title bar.

indicator

The color used to indicate where a new window will open. In a tiled container, this would paint the right border of the current window if a new window would be opened to the right.

child_border

The border around the window itself.

The default colors are:

class

border

background

text

indicator

child_border

background

n/a

\#ffffff

n/a

n/a

n/a

focused

\#4c7899

\#285577

\#ffffff

\#2e9ef4

\#285577

focused_inactive

\#333333

\#5f676a

\#ffffff

\#484e50

\#5f676a

focused_tab_title

\#333333

\#5f676a

\#ffffff

n/a

n/a

unfocused

\#333333

\#222222

\#888888

\#292d2e

\#222222

urgent

\#2f343a

\#900000

\#ffffff

\#900000

\#900000

placeholder

\#000000

\#0c0c0c

\#ffffff

\#000000

\#0c0c0c

default_border normal|none|pixel [<n>]

Set default border style for new tiled windows. Config reload won't affect existing windows, only newly created ones after the reload.

default_floating_border normal|none|pixel [<n>]

Set default border style for new floating windows. This only applies to windows that are spawned in floating mode, not windows that become floating afterwards.

exec <shell command>

Executes shell command with sh.

exec_always <shell command>

Like exec, but the shell command will be executed again after reload.

floating_maximum_size <width> x <height>

Specifies the maximum size of floating windows. -1 x -1 removes the upper limit. The default is 0 x 0, which will use the width and height of the entire output layout as the maximums

floating_minimum_size <width> x <height>

Specifies the minimum size of floating windows. The default is 75 x 50.

floating_modifier <modifier> [normal|inverse]

When the modifier key is held down, you may hold left click to move windows, and right click to resize them. Setting modifier to none disables this feature. If inverse is specified, left click is used for resizing and right click for moving.

focus_follows_mouse yes|no|always

If set to yes, moving your mouse over a window will focus that window. If set to always, the window under the cursor will always be focused, even after switching between workspaces.

focus_on_window_activation smart|urgent|focus|none

This option determines what to do when a client requests window activation. If set to urgent, the urgent state will be set for that window. If set to focus, the window will become focused. If set to smart, the window will become focused only if it is already visible, otherwise the urgent state will be set. Default is urgent.

focus_wrapping yes|no|force|workspace

This option determines what to do when attempting to focus over the edge of a container. If set to no, the focused container will retain focus, if there are no other containers in the direction. If set to yes, focus will be wrapped to the opposite edge of the container, if there are no other containers in the direction. If set to force, focus will be wrapped to the opposite edge of the container, even if there are other containers in the direction. If set to workspace, focus will wrap like in the yes case and additionally wrap when moving outside of workspaces boundaries. Default is yes.

font [pango:]<font>

Sets font to use for the title bars. To enable support for pango markup, preface the font name with pango:. For example, monospace 10 is the default font. To enable support for pango markup, pango:monospace 10 should be used instead. Regardless of whether pango markup is enabled, font should be specified as a pango font description. For more information on pango font descriptions, see https://docs.gtk.org/Pango/type_func.FontDescription.from_string.html#description

force_display_urgency_hint <timeout> [ms]

If an application on another workspace sets an urgency hint, switching to this workspace may lead to immediate focus of the application, which also means the window decoration color would be immediately reset to client.focused. This may make it unnecessarily hard to tell which window originally raised the event. This option allows one to set a timeout in ms to delay the urgency hint reset.

titlebar_border_thickness <thickness>

Thickness of the titlebar border in pixels

titlebar_padding <horizontal> [<vertical>]

Padding of the text in the titlebar. horizontal value affects horizontal padding of the text while vertical value affects vertical padding (space above and below text). Padding includes titlebar borders so their value should be greater than titlebar_border_thickness. If vertical value is not specified it is set to the horizontal value.

for_window <criteria> <command>

Whenever a window that matches criteria appears, run list of commands. See CRITERIA for more details.

gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>

Sets default amount pixels of inner or outer gap, where the inner affects spacing around each window and outer affects the spacing around each workspace. Outer gaps are in addition to inner gaps. To reduce or remove outer gaps, outer gaps can be set to a negative value. outer gaps can also be specified per side with top, right, bottom, and left or per direction with horizontal and vertical. This affects new workspaces only, and is used when the workspace doesn't have its own gaps settings (see: workspace <ws> gaps ...).

hide_edge_borders [--i3] none|vertical|horizontal|both|smart|smart_no_gaps

Hides window borders adjacent to the screen edges. Default is none. The --i3 option enables i3-compatible behavior to hide the title bar on tabbed and stacked containers with one child. The smart|smart_no_gaps options are equivalent to setting smart_borders smart|no_gaps and hide_edge_borders none.

input <input_device> <input-subcommands...>

For details on input subcommands, see sway-input(5). * may be used in lieu of a specific device name to configure all input devices. A list of input device names may be obtained via swaymsg -t get_inputs.

seat <seat> <seat-subcommands...>

For details on seat subcommands, see sway-input(5).

kill

Kills (closes) the currently focused container and all of its children.

smart_borders on|no_gaps|off

If smart_borders are on, borders will only be enabled if the workspace has more than one visible child. If smart_borders is set to no_gaps, borders will only be enabled if the workspace has more than one visible child and gaps equal to zero.

smart_gaps on|off|toggle|inverse_outer

If smart_gaps are on gaps will only be enabled if a workspace has more than one child. If smart_gaps are inverse_outer outer gaps will only be enabled if a workspace has exactly one child.

mark --add|--replace [--toggle] <identifier>

Marks are arbitrary labels that can be used to identify certain windows and then jump to them at a later time. Each identifier can only be set on a single window at a time since they act as a unique identifier. By default, mark sets identifier as the only mark on a window. --add will instead add identifier to the list of current marks for that window. If --toggle is specified mark will remove identifier if it is already marked.

mode <mode>

Switches to the specified mode. The default mode is default.

mode [--pango_markup] <mode> <mode-subcommands...>

The only valid mode-subcommands... are bindsym, bindcode, bindswitch, and set. If --pango_markup is given, then mode will be interpreted as pango markup.

mouse_warping output|container|none

If output is specified, the mouse will be moved to new outputs as you move focus between them. If container is specified, the mouse will be moved to the middle of the container on switch. Default is output.

no_focus <criteria>

Prevents windows matching <criteria> from being focused automatically when they're created. This has no effect on the first window in a workspace.

output <output_name> <output-subcommands...>

For details on output subcommands, see sway-output(5). * may be used in lieu of a specific output name to configure all outputs. A list of output names may be obtained via swaymsg -t get_outputs.

popup_during_fullscreen smart|ignore|leave_fullscreen

Determines what to do when a fullscreen window opens a dialog. If smart (the default), the dialog will be displayed. If ignore, the dialog will not be rendered. If leave_fullscreen, the window will exit fullscreen mode and the dialog will be rendered.

primary_selection enabled|disabled

Enable or disable the primary selection clipboard. May only be configured at launch. Default is enabled.

set $<name> <value>

Sets variable $name to value. You can use the new variable in the arguments of future commands. When the variable is used, it can be escaped with an additional $ (ie $$name) to have the replacement happen at run time instead of when reading the config. However, it does not always make sense for the variable to be replaced at run time since some arguments do need to be known at config time.

show_marks yes|no

If show_marks is yes, marks will be displayed in the window borders. Any mark that starts with an underscore will not be drawn even if show_marks is yes. The default is yes.

opacity [set|plus|minus] <value>

Adjusts the opacity of the window between 0 (completely transparent) and 1 (completely opaque). If the operation is omitted, set will be used.

tiling_drag enable|disable|toggle

Sets whether or not tiling containers can be dragged with the mouse. If enabled (default), the floating_mod can be used to drag tiling, as well as floating, containers. Using the left mouse button on title bars without the floating_mod will also allow the container to be dragged. toggle should not be used in the config file.

tiling_drag_threshold <threshold>

Sets the threshold that must be exceeded for a container to be dragged by its titlebar. This has no effect if floating_mod is used or if tiling_drag is set to disable. Once the threshold has been exceeded once, the drag starts and the cursor can come back inside the threshold without stopping the drag. threshold is multiplied by the scale of the output that the cursor on. The default is 9.

title_align left|center|right

Sets the title alignment. If right is selected and show_marks is set to yes, the marks will be shown on the left side instead of the right side.

unbindswitch <switch>:<state>

Removes a binding for when <switch> changes to <state>.

unbindgesture [--exact] [--input-device=<device>] <gesture>[:<fingers>][:directions]

Removes a binding for the specified gesture, fingers and directions combination.

unbindsym [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] [--to-code] [--input-device=<device>] <key combo>

Removes the binding for key combo that was previously bound with the given flags. If input-device is given, only the binding for that input device will be unbound. unbindcode [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] [--input-device=<device>] <code> is also available for unbinding with key/button codes instead of key/button names.

unmark [<identifier>]

unmark will remove identifier from the list of current marks on a window. If identifier is omitted, all marks are removed.

urgent enable|disable|allow|deny

Using enable or disable manually sets or unsets the window's urgent state. Using allow or deny controls the window's ability to set itself as urgent. By default, windows are allowed to set their own urgency.

workspace [--no-auto-back-and-forth] [number] <[num:]name>

Switches to the specified workspace. The num: portion of the name is optional and will be used for ordering. If num: is not given and name is a number, then it will be also be used for ordering. If the no-auto-back-and-forth option is given, then this command will not perform a back-and-forth operation when the workspace is already focused and workspace_auto_back_and_forth is enabled.

If the number keyword is specified and a workspace with the number already exists, then the workspace with the number will be used. If a workspace with the number does not exist, a new workspace will be created with the name name.

workspace prev|next

Switches to the next workspace on the current output or on the next output if currently on the last workspace.

workspace prev_on_output|next_on_output

Switches to the next workspace on the current output.

workspace back_and_forth

Switches to the previously focused workspace.

workspace <name> gaps inner|outer|horizontal|vertical|top|right|bottom|left <amount>

Specifies that workspace name should have the given gaps settings when it is created. This command does not affect existing workspaces. To alter the gaps of an existing workspace, use the gaps command.

workspace <name> output <outputs...>

Specifies that workspace name should be shown on the specified outputs. Multiple outputs can be listed and the first available will be used. If the workspace gets placed on an output further down the list and an output that is higher on the list becomes available, the workspace will be moved to the higher priority output. This command does not affect existing workspaces. To move an existing workspace, use the move command in combination with the workspace criteria (non-empty workspaces only) or workspace command (to switch to the workspace before moving).

workspace_auto_back_and_forth yes|no

When yes, repeating a workspace switch command will switch back to the prior workspace. For example, if you are currently on workspace 1, switch to workspace 2, then invoke the workspace 2 command again, you will be returned to workspace 1. Default is no.

## CRITERIA
A criteria is a string in the form of, for example:

```
[app_id="some-application" title="[Rr]egex.*"]
```

The string contains one or more (space separated) attribute/value pairs. They are used by some commands to choose which windows to execute actions on. All attributes must match for the criteria to match. Criteria is retained across commands separated by a ,, but will be reset (and allow for new criteria, if desired) for commands separated by a ;.

Criteria may be used with either the for_window or assign commands to specify operations to perform on new windows. A criteria may also be used to perform specific commands (ones that normally act upon one window) on all windows that match that criteria. For example:

Focus on a window with the mark "IRC":

```
[con_mark="IRC"] focus
```

Kill all windows where the title contains "Emacs":

```
[title="Emacs"] kill
```

Several attributes allow regular expressions. These use Perl-compatible regular expressions (PCRE2), which are documented in pcre2pattern(3) and summarized in pcre2syntax(3). For example, this moves all windows with titles ending in "sway" or "Sway" to workspace 1:

```
[title="[Ss]way$"] move workspace 1
```

You may like to use swaymsg -t get_tree for finding the values of these properties in practice for your applications.

The following attributes may be matched with:

all

Matches all windows.

app_id

Compare value against the app id. Can be a regular expression. If value is __focused__, then the app id must be the same as that of the currently focused window. app_id are specific to Wayland applications.

class

Compare value against the window class. Can be a regular expression. If value is __focused__, then the window class must be the same as that of the currently focused window. class are specific to X11 applications and require XWayland.

con_id

Compare against the internal container ID, which you can find via IPC. If value is __focused__, then the id must be the same as that of the currently focused window.

con_mark

Compare against the window marks. Can be a regular expression.

floating

Matches floating windows.

id

Compare value against the X11 window ID. Must be numeric. id is specific to X11 applications and requires XWayland.

instance

Compare value against the window instance. Can be a regular expression. If value is __focused__, then the window instance must be the same as that of the currently focused window. instance is specific to X11 applications and requires XWayland.

pid

Compare value against the window's process ID. Must be numeric.

shell

Compare value against the window shell, such as "xdg_shell" or "xwayland". Can be a regular expression. If value is __focused__, then the shell must be the same as that of the currently focused window.

tag

Compare value against the tag. tag is specific to Wayland applications.

tiling

Matches tiling windows.

title

Compare against the window title. Can be a regular expression. If value is __focused__, then the window title must be the same as that of the currently focused window.

urgent

Compares the urgent state of the window. Can be first, last, latest, newest, oldest or recent.

window_role

Compare against the window role (WM_WINDOW_ROLE). Can be a regular expression. If value is __focused__, then the window role must be the same as that of the currently focused window. window_role is specific to X11 applications and requires XWayland.

window_type

Compare against the window type (_NET_WM_WINDOW_TYPE). Possible values are normal, dialog, utility, toolbar, splash, menu, dropdown_menu, popup_menu, tooltip and notification. window_type is specific to X11 applications and requires XWayland.

workspace

Compare against the workspace name for this window. Can be a regular expression. If the value is __focused__, then all the windows on the currently focused workspace matches.

sandbox_engine

Compare against the associated sandbox engine. Can be a regular expression. If the value is __focused__, then the sandbox engine must be the same as that of the currently focused window.

sandbox_app_id

Compare against the app ID provided by the associated sandbox engine. Can be a regular expression. If the value is __focused__, then the sandbox app ID must be the same as that of the currently focused window.

sandbox_instance_id

Compare against the instance ID provided by the associated sandbox engine. Can be a regular expression. If the value is __focused__, then the sandbox instance ID must be the same as that of the currently focused window.

## SEE ALSO
sway(1) sway-input(5) sway-output(5) sway-bar(5) sway-ipc(7) pcre2pattern(3) pcre2syntax(3)


sway-bar

title: sway-bar(5)

text:
# sway-bar(5)

## NAME
sway-bar - bar configuration file and commands

## DESCRIPTION
Sway allows configuring swaybar in the sway configuration file.

## COMMANDS
The following commands may only be used in the configuration file.

id <bar_id>

Sets the ID of the bar.

swaybar_command <command>

Executes custom bar command. Default is swaybar.

The following commands may be used either in the configuration file or at runtime.

bindcode [--release] <event-code> <command>

Executes command when the mouse button has been pressed (or if released is given, when the button has been released). The buttons can be given as an event code, which can be obtaining from libinput debug-events. To disable the default behavior for a button, use the command nop.

bindsym [--release] button[1-9]|<event-name> <command>

Executes command when the mouse button has been pressed (or if released is given, when the button has been released). The buttons can be given as a x11 button number or an event name, which can be obtained from libinput debug-events. To disable the default behavior for a button, use the command nop.

binding_mode_indicator yes|no

Enable or disable binding mode indicator. Default is yes.

font <font>

Specifies the font to be used in the bar. font should be specified as a pango font description. For more information on pango font descriptions, see https://docs.gtk.org/Pango/type_func.FontDescription.from_string.html#description

gaps <all> | <horizontal> <vertical> | <top> <right> <bottom> <left>

Sets the gaps from the edge of the screen for the bar. Gaps can either be set all at once, per direction, or per side. Note that only sides that touch an edge of the screen can have gaps. For the side that does not touch an edge of the screen, per-side outer gaps for workspaces may be of use.

height <height>

Sets the height of the bar. Default height (0) will match the font size.

hidden_state hide|show [<bar-id>]

Specifies the behaviour of the bar when it is in hide mode. When the hidden state is hide, then it is normally hidden, and only unhidden by pressing the modifier key or in case of urgency hints. When the hidden state is show, then it is permanently visible, drawn on top of the currently visible workspace. Default is hide. For compatibility with i3, bar hidden_state hide|show [<bar-id>] is supported along with the sway only bar <bar-id> hidden_state hide|show syntax. When using the i3 syntax, if bar-id is omitted, the hidden_state will be changed for all bars. Attempting to use bar <bar-id1> hidden_state hide|show <bar-id2> will result in an error due to conflicting bar ids.

mode dock|hide|invisible|overlay [<bar-id>]

Specifies the visibility of the bar. In dock mode, it is permanently visible at one edge of the screen. In hide mode, it is hidden unless the modifier key is pressed, though this behaviour depends on the hidden state. In invisible mode, it is permanently hidden. In overlay mode, it is permanently visible on top of other windows. (In overlay mode the bar is transparent to input events.) Default is dock. For compatibility with i3, bar mode <mode> [<bar-id>] syntax is supported along with the sway only bar <bar-id> mode <mode> syntax. When using the i3 syntax, if bar-id is omitted, the mode will be changed for all bars. Attempting to use bar <bar-id1> mode <mode> <bar-id2> will result in an error due to conflicting bar ids.

modifier <Modifier>|none

Specifies the modifier key that shows a hidden bar. Default is Mod4.

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. * can be given at any point to reset it back to all outputs.

pango_markup enabled|disabled

Enables or disables pango markup for status lines. This has no effect on status lines using the i3bar JSON protocol.

position top|bottom

Sets position of the bar. Default is bottom.

separator_symbol <symbol>

Specifies the separator symbol to separate blocks on the bar.

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 swaybar's JSON status line protocol. See swaybar-protocol(7) for more information on the protocol If running this command via IPC, you can disable a running status command by setting the command to a single dash: swaybar bar bar-0 status_command -

status_edge_padding <padding>

Sets the padding that is used when the status line is at the right edge of the bar. This value will be multiplied by the output scale. The default is 3.

status_padding <padding>

Sets the vertical padding that is used for the status line. The default is 1. If padding is 0, blocks will be able to take up the full height of the bar. This value will be multiplied by the output scale.

strip_workspace_name yes|no

If set to yes, then workspace names will be omitted from the workspace button and only the custom number will be shown. Default is no.

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.

unbindcode [--release] <event-code>

Removes the binding with the given <event-code>.

unbindsym [--release] button[1-9]|<event-name>

Removes the binding with the given <button> or <event-name>.

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.

workspace_min_width <px> [px]

Specifies the minimum width for the workspace buttons on the bar. Default is 0. This setting also applies to the current binding mode indicator.

The following commands may only be used at runtime.

mode toggle [<bar_id>]

Toggles the current mode between hide and dock. Any other mode is treated as hide.

### TRAY
Swaybar provides a system tray where third-party applications may place icons. The following commands configure the tray.

tray_bindcode <event-code> ContextMenu|Activate|SecondaryActivate|ScrollDown|ScrollLeft|ScrollRight|ScrollUp|nop

Executes the action when the mouse button has been pressed. The buttons can be given as an event code, which can be obtained from libinput debug-events. To disable the default behavior for a button, use the command nop.

tray_bindsym button[1-9]|<event-name> ContextMenu|Activate|SecondaryActivate|ScrollDown|ScrollLeft|ScrollRight|ScrollUp|nop

Executes the action when the mouse button has been pressed. The buttons can be given as a x11 button number or an event name, which can be obtained from libinput debug-events. Use the command nop to disable the default action (Activate for button1, ContextMenu for button2 and SecondaryActivate for button3).

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.

tray_output none|<output>|*

Restrict the tray to a certain output, can be specified multiple times. If omitted, the tray will be displayed on all outputs. Unlike i3bar, swaybar can show icons on any number of bars and outputs without races. * can be given at any point to reset it to display on all outputs.

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: #RRGGBB or #RRGGBBAA.

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) swaybar-protocol(7)


sway-input

title: sway-input(5)

text:
# sway-input(5)

## NAME
sway-input - input configuration file and commands

## DESCRIPTION
Sway allows for configuration of devices within the sway configuration file. To obtain a list of available device identifiers, run swaymsg -t get_inputs. Settings can also be applied to all input devices by using the wildcard, *, in place of <identifier> in the commands below. In addition, the settings can be applied to a type of device, by using type:<input_type> in place of <identifier>.

In the configuration file, settings with a more specific selector take precedence over more general ones: <identifier> > type:<input_type> > *. When executing input commands, however, the settings are applied to all matching input devices! This means that type:<input_type> can override previously set <identifier> settings, even though in a configuration file they would take precedence. Similarly * can override both <identifier> and type:<input_type> settings, if applied later.

Tip: If the configuration settings do not appear to be taking effect, you could try using * instead of <identifier>. If it works with the wildcard, try using a different identifier from swaymsg -t get_inputs until you find the correct input device.

Current available input types are:

- touchpad

- pointer

- keyboard

- touch

- tablet_tool

- tablet_pad

- switch

Note: The type configurations are applied as the devices appear and get applied on top of the existing device configurations.

## INPUT COMMANDS

### KEYBOARD CONFIGURATION
input <identifier> repeat_delay <milliseconds>

Sets the amount of time a key must be held before it starts repeating.

input <identifier> repeat_rate <characters per second>

Sets the frequency of key repeats once the repeat_delay has passed.

For more information on these xkb configuration options, see xkeyboard-config(7).

input <identifier> xkb_file <file_name>

Sets all xkb configurations from a complete .xkb file. This file can be dumped from xkbcomp $DISPLAY keymap.xkb. This setting overrides xkb_layout, xkb_model, xkb_options, xkb_rules, and xkb_variant settings.

input <identifier> xkb_layout <layout_name>

Sets the layout of the keyboard like us or de. Multiple layouts can be specified by separating them with commas.

input <identifier> xkb_model <model_name>

Sets the model of the keyboard. This has an influence for some extra keys your keyboard might have.

input <identifier> xkb_options <options>

Sets extra xkb configuration options for the keyboard. Multiple options can be specified by separating them with commas.

input <identifier> xkb_rules <rules>

Sets files of rules to be used for keyboard mapping composition.

input <identifier> xkb_switch_layout <index>|next|prev

Changes the active keyboard layout to <index> counting from zero or to next or previous layout on the list. If there is no next or previous layout, this command hops to the other end of the list. This can be used when multiple layouts are configured with xkb_layout. A list of layouts you can switch between can be obtained with swaymsg -t get_inputs.

input <identifier> xkb_variant <variant>

Sets the variant of the keyboard like dvorak or colemak.

The following commands may only be used in the configuration file.

input <identifier> xkb_capslock enabled|disabled

Initially enables or disables CapsLock on startup, the default is disabled.

input <identifier> xkb_numlock enabled|disabled

Initially enables or disables NumLock on startup, the default is disabled.

### TABLET CONFIGURATION
input <identifier> tool_mode <tool> <absolute|relative>

Sets whether movement of a tablet tool should be treated as absolute or relative; the default is absolute. Valid values for <tool> are currently "pen", "eraser", "brush", "pencil", "airbrush", and the wildcard *, which matches all tools.

Mouse and lens tools ignore this setting and are always treated as relative.

### MAPPING CONFIGURATION
input <identifier> map_to_output <identifier>

Maps inputs from this device to the specified output. Only meaningful if the device is a pointer, touch, or drawing tablet device. The wildcard * can be used to map the input device to the whole desktop layout.

input <identifier> map_to_region <X> <Y> <width> <height>

Maps inputs from this device to the specified region of the global output layout. Only meaningful if the device is a pointer, touch, or drawing tablet device.

input <identifier> map_from_region <X1xY1> <X2xY2>

Ignores inputs from this device that do not occur within the specified region. Can be in millimeters (e.g. 10x20mm 20x40mm) or the fraction of the full available space in terms of 0..1 (e.g. 0.5x0.5 0.7x0.7). Not all devices support millimeters. Only meaningful if the device is not a keyboard and provides events in absolute terms (such as a drawing tablet or touch screen - most pointers provide events relative to the previous frame). Commonly used to maintain the aspect ratio of the input device and screen. Cropping a 16:10 input region to match a 16:9 display can use 0x0 1x0.9 as the argument.

### LIBINPUT CONFIGURATION
input <identifier> accel_profile adaptive|flat

Sets the pointer acceleration profile for the specified input device.

input <identifier> calibration_matrix <6 space-separated floating point values>

Sets the calibration matrix.

input <identifier> click_method none|button_areas|clickfinger

Changes the click method for the specified device.

input <identifier> clickfinger_button_map lrm|lmr

Specifies which button mapping to use for clickfinger. lrm treats 1 finger as left click, 2 fingers as right click, and 3 fingers as middle click. lmr treats 1 finger as left click, 2 fingers as middle click, and 3 fingers as right click.

input <identifier> drag enabled|disabled

Enables or disables tap-and-drag for specified input device.

input <identifier> drag_lock enabled|disabled|enabled_sticky

Enables or disables drag lock for specified input device. The default is disabled.

input <identifier> dwt enabled|disabled

Enables or disables disable-while-typing for the specified input device.

input <identifier> dwtp enabled|disabled

Enables or disables disable-while-trackpointing for the specified input device.

input <identifier> events enabled|disabled|disabled_on_external_mouse|toggle [<toggle-modes>]

Enables or disables send_events for specified input device. Disabling send_events disables the input device. The toggle option cannot be used in the config. If no toggle modes are listed, all supported modes for the device will be toggled through in the order: enabled, disabled_on_external_mouse, disabled, (loop back). If toggle modes are listed, they will be cycled through, defaulting to the first mode listed if the current mode is not in the list. They will also not be checked to see if they are supported for the device and may fail.

input <identifier> left_handed enabled|disabled

Enables or disables left handed mode for specified input device.

input <identifier> middle_emulation enabled|disabled

Enables or disables middle click emulation.

input <identifier> natural_scroll enabled|disabled

Enables or disables natural (inverted) scrolling for the specified input device.

input <identifier> pointer_accel [<-1|1>]

Changes the pointer acceleration for the specified input device.

input <identifier> rotation_angle <angle>

Sets the rotation angle of the device to the given clockwise angle in degrees. The angle must be between 0.0 (inclusive) and 360.0 (exclusive).

input <identifier> scroll_button disable|button[1-3,8,9]|<event-code-or-name>

Sets the button used for scroll_method on_button_down. The button can be given as an event name or code, which can be obtained from libinput debug-events, or as a x11 mouse button (button[1-3,8,9]). If set to disable, it disables the scroll_method on_button_down.

input <identifier> scroll_button_lock enabled|disabled

Enables or disables scroll button lock for specified input device.

input <identifier> scroll_factor <floating point value>

Changes the scroll factor for the specified input device. Scroll speed will be scaled by the given value, which must be non-negative.

input <identifier> scroll_method none|two_finger|edge|on_button_down

Changes the scroll method for the specified input device.

input <identifier> tap enabled|disabled

Enables or disables tap for specified input device.

input <identifier> tap_button_map lrm|lmr

Specifies which button mapping to use for tapping. lrm treats 1 finger as left click, 2 fingers as right click, and 3 fingers as middle click. lmr treats 1 finger as left click, 2 fingers as middle click, and 3 fingers as right click.

### SEAT CONFIGURATION
Configure options for multiseat mode.

A seat is a collection of input devices that act independently of each other. Seats are identified by name and the default seat is seat0 if no seats are configured. While sway is running, - (hyphen) can be used as an alias for the current seat. Each seat has an independent keyboard focus and a separate cursor that is controlled by the pointer devices of the seat. This is useful for multiple people using the desktop at the same time with their own devices (each sitting in their own "seat"). The wildcard character, *, can also be used in place of <identifier> to change settings for all seats.

Tip: If the configuration settings do not appear to be taking effect, you could try using * instead of <identifier>. If it works with the wildcard, try using a different identifier from swaymsg -t get_seats until you find the correct seat.

seat <name> attach <input_identifier>

Attach an input device to this seat by its input identifier. A special value of "*" will attach all devices to the seat.

seat <seat> cursor move|set <x> <y>

Move specified seat's cursor relative to current position or wrap to absolute coordinates (with respect to the global coordinate space). Specifying either value as 0 will not update that coordinate. Deprecated: use the virtual-pointer Wayland protocol instead.

seat <seat> cursor press|release button[1-9]|<event-name-or-code>

Simulate pressing (or releasing) the specified mouse button on the specified seat. The button can either be provided as a button event name or event code, which can be obtained from libinput debug-events, or as an x11 mouse button (button[1-9]). If using button[4-7], which map to axes, an axis event will be simulated, however press and release will be ignored and both will occur. Deprecated: use the virtual-pointer Wayland protocol instead.

seat <name> fallback true|false

Set this seat as the fallback seat. A fallback seat will attach any device not explicitly attached to another seat (similar to a "default" seat).

seat <name> hide_cursor <timeout>|when-typing [enable|disable]

Hides the cursor image after the specified event occurred. If timeout is specified, then the cursor will be hidden after timeout (in milliseconds) has elapsed with no activity on the cursor. A timeout of 0 (default) disables hiding the cursor. The minimal timeout is 100 and any value less than that (aside from 0), will be increased to 100.

If when-typing is enabled, then the cursor will be hidden whenever a key is pressed.

Be aware that this setting can interfere with input handling in games and certain types of software (Gimp, Blender etc) that rely on simultaneous input from mouse and keyboard.

seat <name> idle_inhibit <sources...>

Sets the set of input event sources which can prevent the seat from becoming idle, as a space separated list of source names. Valid names are "keyboard", "pointer", "touchpad", "touch", "tablet_pad", "tablet_tool", and "switch". The default behavior is to prevent idle on any event.

seat <name> keyboard_grouping none|smart

Set how the keyboards in the seat are grouped together. Currently, there are two options. none will disable all keyboard grouping. This will make it so each keyboard device has its own isolated state. smart will group the keyboards in the seat by their keymap and repeat info. This is useful for when the keyboard appears as multiple separate input devices. In this mode, the effective layout is synced between the keyboards in the group. The default is smart. To restore the behavior of older versions of sway, use none.

seat <name> pointer_constraint enable|disable|escape

Enables or disables the ability for clients to capture the cursor (enabled by default) for the seat. This is primarily useful for video games. The "escape" command can be used at runtime to escape from a captured client.

seat <name> shortcuts_inhibitor enable|disable|activate|deactivate|toggle

Enables or disables the ability of clients to inhibit keyboard shortcuts for the seat. This is primarily useful for virtualization and remote desktop software. Subcommands enable and disable affect whether future inhibitors are honoured by default, i.e. activated automatically, the default being enable. When used at runtime, disable also disables any currently active inhibitors. activate, deactivate and toggle are only usable at runtime and change the state of a potentially existing inhibitor on the currently focused window. This can be used with the current seat alias (-) to affect only the currently focused window of the current seat. Subcommand deactivate is particularly useful in an --inhibited bindsym to escape a state where shortcuts are inhibited and the client becomes uncooperative. It is worth noting that whether disabled or deactivated inhibitors are removed is entirely up to the client. Depending on the client it may therefore be possible to (re-)activate them later. Any visual indication that an inhibitor is present is currently left to the client as well.

seat <name> xcursor_theme <theme> [<size>]

Override the system default XCursor theme. The default seat's (seat0) theme is also used as the default cursor theme in XWayland, and exported through the XCURSOR_THEME and XCURSOR_SIZE environment variables.

## SEE ALSO
sway(5) sway-output(5) xkeyboard-config(7)