Configuration wmfsrc - xorg62/wmfs GitHub Wiki
you can configure WMFS² by editing its main configuration file in text mode: $XDG_CONFIG_HOME/wmfs/wmfsrc. on first wmfs install, you have to copy the default wmfsrc in your configuration directory (~/.config/wmfs/) from the source file (/usr/local/etc/xdg/wmfs/wmfsrc). you can also take the last version on [git repo](https://github.com/xorg62/wmfs).
to modify your configuration, you just have to edit this file then reload wmfs.
this page details the wmfsrc file by section. for a complete list of uicb functions, visit the dedicated page.
wmfsrc supports ”@include” to split configuration file.
ex:
# Possible file inclusion:
@include ~/.config/wmfs/wmfs_themes
@include ~/.config/wmfs/wmfs_rules
wmfs² support theme(s) creation.
# Multi theme section
[themes]
[theme]
# No name mean default
# name = "default"
font = "fixed"
# Bars
bars_width = 14
bars_fg = "#AABBAA"
bars_bg = "#223322"
# Element tags
tags_normal_fg = "#AABBAA"
tags_normal_bg = "#223322"
# tags_normal_statusline = ""
tags_sel_fg = "#223322"
tags_sel_bg = "#AABBAA"
# tags_sel_statusline = ""
tags_occupied_fg = "#AABBAA"
tags_occupied_bg = "#445544"
tags_occupied_statusline = "\R[0;0;3;3;#AABBAA]"
tags_urgent_fg = "#223322"
tags_urgent_bg = "#CC5544"
# tags_urgent_statusline = ""
tags_border_color = "#112211"
tags_border_width = 1
# Frame / Client
client_normal_fg = "#AABBAA"
client_normal_bg = "#223322"
client_normal_statusline = "\s[3;9;#121212;x] \s[2;8;#ff0000;x](1;client_close)"
client_sel_fg = "#223322"
client_sel_bg = "#AABBAA"
client_sel_statusline = "\s[3;9;#121212;x] \s[2;8;#ff0000;x](1;client_close)"
# client_free_statusline = ""
frame_bg = "#555555"
client_titlebar_width = 12
client_border_width = 1
[/theme]
[/themes]
- name theme name: will be used in the next sections.
-
font theme font, in XLFD (X Logical Font Description) format. ex
"-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
- bars
bars_width bar height pixels.
bars_fg statusbar text color.
bars_bg statusbar color. - tags
tags_normal_fg normal tag text color.
tags_normal_bg normal tag button color.
tags_normal_statusline normal tag statusline.
tags_sel_fg selected tag text color.
tags_sel_bg selected tag button color.
tags_sel_statusline selected tag statusline.
tags_occupied_fg occupied tag text color.
tags_occupied_bg occupied tag button color.
tags_occupied_statusline occupied tag statusline.
tags_urgent_fg urgent tag text color.
tags_urgent_bg urgent tag button color.
tags_urgent_statusline urgent tag statusline.
tags_border_color tag button border color.
tags_border_width tag button border width. - clients
client_normal_fg normal client titlebar text color.
client_normal_bg normal client titlebar color.
client_normal_statusline normal client statusline.
client_sel_fg selected client titlebar text color.
client_sel_bg selected client titlebar color.
client_sel_statusline selected client titlebar statusline.
client_free_statusline free client titlebar statusline.
frame_bg client color.
client_titlebar_width client titlebar height in pixels.
client_border_width client border width in pixels.
wmfs² handles several statusbar if you need. each bar support configuration and theme.
[bars]
# Position:
#
# 0 Top
# 1 Bottom
# 2 Hide
# Element type:
#
# t Tags
# s Statustext (will take available space)
# y Systray (can be set only ONE time among all element)
# l Launcher (will be expended at launcher use)
[bar]
position = 0
screen = 0
elements = "tlsy" # element order in bar
theme = "default"
[/bar]
# [bar]
# position = 0
# screen = 1
# elements = "ts"
# theme = "default"
# [/bar]
[/bars]
positon position of the statusbar on the screen.
screen screen to display statusbar (start at 0), set to -1 to display on every screen.
theme apply theme on the statusbar, must be an existing theme-name.
[tags]
# enable/disable tag wrapping navigation
circular = false
# Use no screen option or screen = -1 to set tag on each screen
[tag]
screen = -1
name = "1"
# statusline ""
[/tag]
[tag] name = "2" [/tag]
[tag] name = "3" [/tag]
[tag] name = "4" [/tag]
[tag] name = "5" [/tag]
[tag] name = "6" [/tag]
[tag] name = "7" [/tag]
# Mousebinds associated to Tags element button
[mouse] button = "1" func = "tag_click" [/mouse]
[mouse] button = "4" func = "tag_next" [/mouse]
[mouse] button = "5" func = "tag_prev" [/mouse]
[/tags]
circular tag wrapping navigation.
screen screen to display tag. use no screen option or screen = -1 to set tag on each screen.
name display tagname.
statusline draw a custom statusline in the specific tag (can display any sequences)
mousebinds mouse actions on the tag buttons. here left-clic(bouton1) set the tag, scrollup(b4) set next tag and scrolldown(b5) set previous tag.
[client]
# padding between clients (default: 0):
padding = 75
# Give focus to new created client (default = false)
autofocus = false
theme = "default"
key_modifier = "Super"
# Focus type:
# enter : focus follow mouse (default)
# click : click to focus
# everything-else : disable mouse focus support
focus = enter
[mouse] button = "1" func = "client_focus_click" [/mouse]
[mouse] button = "1" func = "mouse_swap" [/mouse]
[mouse] button = "2" func = "mouse_tab" [/mouse]
[mouse] button = "3" func = "mouse_resize" [/mouse]
[mouse] button = "4" func = "client_focus_next_tab" [/mouse]
[mouse] button = "5" func = "client_focus_prev_tab" [/mouse]
[/client]
padding padding between clients in pixels.
autofocus give focus to new created client (default is false)
theme apply theme to client by default (can be overwrite in the [rules] section).
key_modifier key modifier to perform actions on clients. (Alt, Super, Control, Shift…)
focus select the focus mouse options
mousebinds mouse actions on client, see the functions list.
specific rules for clients: to identify an application, use xprop.
[rules]
[rule]
instance = "chromium"
# class = ""
# role = ""
# name = ""
# theme = "default"
tag = 1 # 2nd tag
screen = 0
free = false
tab = false
ignore_tag = false
[/rule]
[/rules]
instance first part of WM_CLASS.
class second part of WM_CLASS.
role WM_WINDOW_ROLE
name NET_WM_NAME
theme apply theme to client.
tag set tag to client (start at 0).
screen display client on a specific screen.
free client in auto-free mode (true/false).
tab open client in a tab (true/false).
ignore_tag tag client with all tags (aka “sticky”)
[launchers]
# command can be an uicb function or an uicb function + extension (see example)
[launcher]
name = "exec"
prompt = "Run:"
# Example of uicb + ext:
# command = "spawn xterm -e"
command = "spawn"
width = 150
[/launcher]
[/launchers]
name launcher-name, will be used in the [keys] section.
prompt display text at the beginning of the prompt.
command command used by the launcher. can be an uicb function or an uicb function + extension. see tips page for an “howto create a custom launcher”
[keys]
[key] mod = {"Super"} key = "Return" func = "spawn" cmd = "urxvt || xterm" [/key]
[key] mod = {"Control", "Alt"} key = "q" func = "quit" [/key]
[key] mod = {"Control", "Alt"} key = "r" func = "reload" [/key]
# Tag manipulation
[key] mod = {"Super"} key = "F1" func = "tag_set" cmd = "0" [/key]
[key] mod = {"Super"} key = "F2" func = "tag_set" cmd = "1" [/key]
[key] mod = {"Super"} key = "F3" func = "tag_set" cmd = "2" [/key]
[key] mod = {"Super"} key = "F4" func = "tag_set" cmd = "3" [/key]
[key] mod = {"Super"} key = "F5" func = "tag_set" cmd = "4" [/key]
[key] mod = {"Super"} key = "F6" func = "tag_set" cmd = "5" [/key]
[key] mod = {"Super"} key = "F7" func = "tag_set" cmd = "6" [/key]
[key] mod = {"Super"} key = "F8" func = "tag_set" cmd = "7" [/key]
[key] mod = {"Super", "Shift"} key = "F1" func = "tag_client" cmd = "0" [/key]
[key] mod = {"Super", "Shift"} key = "F2" func = "tag_client" cmd = "1" [/key]
[key] mod = {"Super", "Shift"} key = "F3" func = "tag_client" cmd = "2" [/key]
[key] mod = {"Super", "Shift"} key = "F4" func = "tag_client" cmd = "3" [/key]
[key] mod = {"Super", "Shift"} key = "F5" func = "tag_client" cmd = "4" [/key]
[key] mod = {"Super", "Shift"} key = "F6" func = "tag_client" cmd = "5" [/key]
[key] mod = {"Super", "Shift"} key = "F7" func = "tag_client" cmd = "6" [/key]
[key] mod = {"Super", "Shift"} key = "F8" func = "tag_client" cmd = "7" [/key]
[key] mod = {"Super"} key = "minus" func = "tag_del" [/key]
[key] mod = {"Super", "Shift"} key = "minus" func = "tag_new" [/key]
# tag function: cmd = nameofthetag
#[key] mod = {"Super"} key = "z" func = "tag" cmd = "2" [/key]
[key] mod = {"Control"} key = "Right" func = "tag_next" [/key]
[key] mod = {"Control"} key = "Left" func = "tag_prev" [/key]
[key] mod = {"Control"} key = "Up" func = "screen_next" [/key]
[key] mod = {"Control"} key = "Down" func = "screen_prev" [/key]
[key] mod = {"Super"} key = "q" func = "client_close" [/key]
# Focus next / prev client and next / prev tabbed client
[key] mod = { "Alt" } key = "Tab" func = "client_focus_next" [/key]
[key] mod = { "Alt", "Shift" } key = "Tab" func = "client_focus_prev" [/key]
[key] mod = { "Super" } key = "Tab" func = "client_focus_next_tab" [/key]
[key] mod = { "Super", "Shift" } key = "Tab" func = "client_focus_prev_tab" [/key]
# Focus next client with direction
[key] mod = {"Alt"} key = "h" func = "client_focus_left" [/key]
[key] mod = {"Alt"} key = "l" func = "client_focus_right" [/key]
[key] mod = {"Alt"} key = "k" func = "client_focus_top" [/key]
[key] mod = {"Alt"} key = "j" func = "client_focus_bottom" [/key]
# swap next client with direction:
[key] mod = {"Control", "Shift"} key = "h" func = "client_swap_left" [/key]
[key] mod = {"Control", "Shift"} key = "l" func = "client_swap_right" [/key]
[key] mod = {"Control", "Shift"} key = "k" func = "client_swap_top" [/key]
[key] mod = {"Control", "Shift"} key = "j" func = "client_swap_bottom" [/key]
# Resize selected tiled client with direction
[key] mod = {"Super"} key = "h" func = "client_resize_left" cmd = "20" [/key]
[key] mod = {"Super"} key = "l" func = "client_resize_left" cmd = "-20" [/key]
[key] mod = {"Super"} key = "k" func = "client_resize_top" cmd = "20" [/key]
[key] mod = {"Super"} key = "j" func = "client_resize_top" cmd = "-20" [/key]
[key] mod = {"Super", "Control"} key = "h" func = "client_resize_right" cmd = "-20" [/key]
[key] mod = {"Super", "Control"} key = "l" func = "client_resize_right" cmd = "20" [/key]
[key] mod = {"Super", "Control"} key = "k" func = "client_resize_bottom" cmd = "-20" [/key]
[key] mod = {"Super", "Control"} key = "j" func = "client_resize_bottom" cmd = "20" [/key]
# Tabbing command
[key] mod = {"Alt", "Shift"} key = "h" func = "client_tab_left" [/key]
[key] mod = {"Alt", "Shift"} key = "l" func = "client_tab_right" [/key]
[key] mod = {"Alt", "Shift"} key = "k" func = "client_tab_top" [/key]
[key] mod = {"Alt", "Shift"} key = "j" func = "client_tab_bottom" [/key]
[key] mod = {"Alt", "Shift"} key = "u" func = "client_untab" [/key]
# Layout manipulation
[key] mod = {"Super"} key = "m" func = "layout_vmirror" [/key]
[key] mod = {"Super", "Shift"} key = "m" func = "layout_hmirror" [/key]
[key] mod = {"Super"} key = "r" func = "layout_rotate_right" [/key]
[key] mod = {"Super", "Shift"} key = "r" func = "layout_rotate_left" [/key]
[key] mod = {"Control", "Super", "Alt"} key = "h" func = "layout_integrate_left" [/key]
[key] mod = {"Control", "Super", "Alt"} key = "j" func = "layout_integrate_bottom" [/key]
[key] mod = {"Control", "Super", "Alt"} key = "k" func = "layout_integrate_top" [/key]
[key] mod = {"Control", "Super", "Alt"} key = "l" func = "layout_integrate_right" [/key]
# Layout set historic travelling function (TESTING)
[key] mod = {"Super"} key = "o" func = "layout_prev_set" [/key]
[key] mod = {"Super", "Shift"} key = "o" func = "layout_next_set" [/key]
# Toggle client free/tile
[key] mod = {"Super"} key = "f" func = "client_toggle_free" [/key]
# Toggle client ignore_tag
[key] mod = {"Super","Shift"} key = "f" func = "client_toggle_ignore_tag" [/key]
# Launcher
[key] mod = {"Super"} key = "p" func = "launcher" cmd = "exec" [/key]
[/keys]
[keys] section syntax: each line is contained within [key] … [/key]
mod key modifier’s). ex:{"Control", "Alt"}
key key to press.
func uicb function to launch.
cmd if func = spawn, set the command to launch. ex:func = "spawn" cmd = "cream-browser"