-
Notifications
You must be signed in to change notification settings - Fork 17
User Configuration File
- Settings Table
- Controls Table
- Autostarting Programs
- Starting External Processes with Keybindings
- Application Startup Rules
- Changing Text of Tags
- Setting the default number of master windows
The settings table [settings] is used to define default values; all settings are listed below.
gapSize - The size of the gap between windows, and between windows to the edges of the screen
outerGap - The size of the gap between windows and edges of the screen (overrides gapSize)
borderWidth - The width of the border around each window
borderColorFocused - The color of the border of the focused window (hex value, e.g. #22CC11)
borderColorUnfocused - The color of the border of unfocused windows (hex value, e.g. #22CC11)
borderColorUrgent - The color of the border of urgent windows (hex value, e.g. #22CC11)
barHeight - The height of the built-it status bar
windowTitlePosition - The position in the bar to render the window title.
Must be: "center", "centre", or "left".
barBackgroundColor - The background color of the status bar (hex value, e.g. #22CC11)
barForegroundColor - The foreground color of the status bar (hex value, e.g. #22CC11)
barSelectionColor - The selection color of the status bar (hex value, e.g. #22CC11)
barUrgentColor - The urgent color of the status bar (hex value, e.g. #22CC11)
barFonts - A list of fonts (in order of priority) used to render text on the bar
resizeStep - Number of pixels to resize the master window (see increaseMasterWidth)
scratchpadWidth - The default width of scratchpad windows
scratchpadHeight - The default height of scratchpad windows
The controls table [controls] defines keybindings that control the window manager.
Each action/control has a list of modifiers (which must all be pressed), and a list of keys (where any could be pressed), to trigger the action/control.
reloadConfig - Reloads all settings from your config file
focusPrevious - Focuses the previous window
focusNext - Focuses the next window
moveWindowPrevious - Moves the window to the previous position in the window stack
moveWindowNext - Moves the window to the next position in the window stack
toggleFullscreen - Toggles the fullscreen state of the selected window
destroySelectedWindow - Destroys the selected window
moveWindowToTag - Moves the selected window to the tag associated with the pressed number
moveWindowToLeftTag - Moves the window to the tag on the left.
moveWindowToRightTag - Moves the window to the tag on the right.
goToTag - Views the selected tag
goToLeftTag - Goes to the tag on the left.
goToRightTag - Goes to the tag on the right.
goToPreviousTag - Views the previously viewed tag
moveWindowToPreviousTag - Moves the selected window to the previously viewed tag.
toggleTagView - Toggles the visibility of a tag
toggleWindowTag - Toggles the assignment of a window to a tag
focusPreviousMonitor - Focuses the previous monitor (wraps around to the last monitor)
focusNextMonitor - Focuses the next monitor (wraps around to the first monitor)
moveWindowToPreviousMonitor - Moves the selected window to the previous monitor
moveWindowToNextMonitor - Moves the selected window to the next monitor
increaseMasterCount - Increases the number of master windows in the layout
decreaseMasterCount - Decreases the number of master windows in the layout
toggleFloating - Toggles the floating state of the selected window
jumpToUrgentWindow - Finds and selects the first urgent window
increaseMasterWidth - Increases the width of the master window
decreaseMasterWidth - Decreases the width of the master window
moveWindowToScratchpad - Moves the selected window to the scratchpad
popScratchpad - Brings back the window most recently added to the scratchpad
rotateClients - Rotate clients clockwise, making the last window master
toggleStatusBar - Hides or shows the status bar on the selected monitor
The autostart table [autostart] allows for a list of strings which will be executed by your shell when Nimdow is first started.
Example:
[autostart]
exec = [
"firefox",
"st"
]To declare a keybinding to start an external process, use the format below:
[[startProcess]]
command = "dmenu_run"
keys = [ "p" ]
modifiers = [ "super" ]
[[startProcess]]
command = "maim -sou > out.png"
keys = [ "s" ]
modifiers = [ "super", "shift" ]Rules can be defined which determine which monitor and tags an application is placed when they are first started.
[[appRule]]
class = "*Vivaldi*"
instance = ""
title = ""
monitor = 1
tags = [ 1, 4, 7 ]
state = "floating" # "normal", "floating", and "fullscreen" are all valid.
# The following only apply if the window is "floating"
x = 100
y = 400
width = 800
height = 600According to the above,
any window created which contains the text Vivaldi
in its WM_CLASS property will start on monitor 1 (the first monitor),
and will be available on tags 1, 4, and 7.
class, instance, and title:
- Are case sensitive
- Can be excluded
- Support
*as a prefix and/or suffix
The first app rule that matches a specific application will be chosen; the others will not be considered.
Use the program xprop.
- Start
xpropin a terminal - Click the application in which you want to find the properties
- The properties are output in the terminal
If WM_CLASS has two properties,
the first is the instance and the second is the class.
WM_NAME is the title
Instead of using 1-9 for tag names, the user can specify other strings of characters.
[monitors]
[monitors.default.tags]
1.displayString = "one"
2.displayString = "two"
[monitors.1.tags]
2.displayString = "tag two"
[monitors.2.tags]
2.displayString = "🦀"In this example,
the default display strings for tags 1 and 2 are set to one and two, respectively.
Monitor 1
(the first monitor found)
has its tag number 2's text set to tag two,
which overrides the default.
Monitor 2 has its tag number 2's text set to 🦀
(yes, even emojis can be used here).
By default, all tags have one master window. This can be changed with keybindings or the cli client while Nimdow is running.
To set a default upon startup, you can do the following:
[monitors]
[monitors.default.tags]
# Set the number of master windows for all tags on all monitors.
all.numMasterWindows = 2
[monitors.1.tags]
# Set the number of master windows per-monitor.
all.numMasterWindows = 3
# Set the number of master windows per-tag. This overrides the `all` option.
2.numMasterWindows = 1
[monitors.2.tags]
1.numMasterWindows = 4