.\" title: wmfs .\" dev: xorg62 .\" man: arpinux .\" .TH "WMFS" "1" "2012/02/08" "wmfs" "manual of wmfs" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .SH "NAME" wmfs \- Window Manager From Scratch .SH "SYNOPSIS" \fBwmfs\fR [\fB\-hv\fR] [\fB\-C \fR] [\fB\-c \fR] .sp .SH "DESCRIPTION" \fBWMFS\fR is a lightweight and highly configurable tiling window manager for X written in C\&. .sp .SH "OPTIONS" .PP \fB\-C \fR .RS 4 Load a configuration file\&. .RE .PP \fB\-c \fR .RS 4 Execute an uicb function to control WMFS\&. .RE .PP \fB\-v\fR .RS 4 Print version information to standard output, then exit\&. .RE .PP \fB\-h\fR .RS 4 Print help information, then exit\&. .RE .SH "DEFAULT KEY BINDINGS" .PP \fBControl\-Alt + r\fR .RS 4 Reload WMFS binary .RE .PP \fBSuper + Return\fR .RS 4 Run a terminal (urxvt by default) .RE .PP \fBSuper + q\fR .RS 4 Quit the selected client .RE .PP \fBControl\-Alt + q\fR .RS 4 Exit WMFS .RE .PP \fBSuper + f \fR .RS 4 Toggle free the selected client .RE .PP \fBAlt + Tab\fR .RS 4 Give the focus to the next client .RE .PP \fBAlt\-Shift + Tab\fR .RS 4 Give the focus to the previous client .RE .PP \fBAlt + h\fR .RS 4 Give the focus to the client on the left .RE .PP \fBAlt + l\fR .RS 4 Give the focus to the client on the right .RE .PP \fBAlt + k\fR .RS 4 Give the focus to the client on the top .RE .PP \fBAlt + j\fR .RS 4 Give the focus to the client on the bottom .RE .PP \fBSuper + Tab\fR .RS 4 Give the focus to the next tabbed client .RE .PP \fBSuper\-Shift + Tab\fR .RS 4 Give the focus to the previous tabbed client .RE .PP \fBControl\-Shift + h\fR .RS 4 Swap with the client on the left .RE .PP \fBControl\-Shift + l\fR .RS 4 Swap with the client on the right .RE .PP \fBControl\-Shift + k\fR .RS 4 Swap with the client on the top .RE .PP \fBControl\-Shift + j\fR .RS 4 Swap with the client on the bottom .RE .PP \fBAlt\-Shift + h\fR .RS 4 Tab in the client on the left .RE .PP \fBAlt\-Shift + l\fR .RS 4 Tab in the client on the right .RE .PP \fBAlt\-Shift + k\fR .RS 4 Tab in the client on the top .RE .PP \fBAlt\-Shift + j\fR .RS 4 Tab in the client on the bottom .RE .PP \fBAlt\-Shift + u\fR .RS 4 Untab the client .RE .PP \fBSuper + h\fR .RS 4 Increase the client to the left .RE .PP \fBSuper + l\fR .RS 4 Decrease the client from the left .RE .PP \fBSuper + k\fR .RS 4 Increase the client to the top .RE .PP \fBSuper + j\fR .RS 4 Decrease the client from the top .RE .PP \fBSuper\-Control + h\fR .RS 4 Decrease the client from the right .RE .PP \fBSuper\-Control + l\fR .RS 4 Increase the client to the right .RE .PP \fBSuper\-Control + k\fR .RS 4 Decrease the client from the bottom .RE .PP \fBSuper\-Control + j\fR .RS 4 Increase the client to the bottom .RE .PP \fBControl + Right\fR .RS 4 Next tag .RE .PP \fBControl + Left\fR .RS 4 Previous tag .RE .PP \fBControl + Up\fR .RS 4 Next screen .RE .PP \fBControl + Down\fR .RS 4 Previous screen .RE .PP \fBSuper + m\fR .RS 4 Vertical mirror layout .RE .PP \fBSuper\-Shift + m\fR .RS 4 Horizontal mirror layout .RE .PP \fBSuper + r\fR .RS 4 Rotate layout right .RE .PP \fBSuper\-Shift + r\fR .RS 4 Rotate layout left .RE .PP \fBSuper\-Control\-Alt + h\fR .RS 4 Integrate client in left layout .RE .PP \fBSuper\-Control\-Alt + j\fR .RS 4 Integrate client in bottom layout .RE .PP \fBSuper\-Control\-Alt + k\fR .RS 4 Integrate client in top layout .RE .PP \fBSuper\-Control\-Alt + l\fR .RS 4 Integrate client in right layout .RE .PP \fBSuper + o\fR .RS 4 Restore previous layout .RE .PP \fBSuper\-Shift + o\fR .RS 4 Restore next layout .RE .PP \fBSuper + p\fR .RS 4 Make a launcher in the statusbar to run an unix command\fR .RE .PP \fBSuper + F[1\&.\&.9]\fR .RS 4 Change tag view .RE .PP \fBSuper\-Shift + F[1\&.\&.9]\fR .RS 4 Transfert the selected client to the wanted tag .RE .PP \fBSuper + -\fR .RS 4 Delete current tag\fR .RE .PP \fBSuper\-Shift + -\fR .RS 4 Add current tag\fR .RE .SH "CONFIGURATION" WMFS is configured by \fI$HOME/\&.config/wmfs/wmfsrc\fR\&. .RE .PP \fB\ include\fR wmfsrc supports ”@include” to split configuration file by section\&. .RS 2 \fB\ Usage:\fR "@include ~/.config/wmfs/wmfs_themes"\&. .RE .PP \fB\ [themes]\fR wmfsrc supports themes for client and statusbar\&. .RS 2 \fB Misc\fR .RS 2 \fB\ name\fR theme name: will be used in next sections\&. .PP \fB\ font\fR theme font: in XLFD format\&. .PP .RE \fB\ Bars\fR .RS 2 \fB\ bars_width\fR bar height in pixels\&. .PP \fB\ bars_fg/bg\fR statusbar text/background color\&. .PP .RE \fB\ Tags\fR .RS 2 \fB\ tags_normal_fg/bg\fR normal tag text/button color\&. .PP \fB\ tags_normal_statusline\fR normal tag statusline\&. .PP \fB\ tags_sel_fg/bg\fR selected tag text/button color\&. .PP \fB\ tags_sel_statusline\fR selected tag statusline\&. .PP \fB\ tags_occupied_fg/bg\fR occupied tag text/button color\&. .PP \fB\ tags_occupied_statusline\fR occupied tag statusline\&. .PP \fB\ tags_urgent_fg/bg\fR urgent tag text/button color\&. .PP \fB\ tags_urgent_statusline\fR urgent tag statusline\&. .PP \fB\ tags_border_color\fR tag button border color\&. .PP \fB\ tags_border_width\fR tag button border width\&. .PP .RE \fB\ Clients\fR .RS 2 \fB\ client_normal_fg/bg\fR normal client titlebar text/background color\&. .PP \fB\ client_normal_statusline\fR normal client statusline\&. .PP \fB\ client_sel_fg/bg\fR selected client titlebar text/background color\&. .PP \fB\ client_sel_statusline\fR selected client statusline\&. .PP \fB\ frame_bg\fR client border color\&. .PP \fB\ client_titlebar_width\fR client titlebar height in pixels\&. .PP \fB\ client_border_width\fR client border height in pixels\&. .RE .PP .RE \fB\ [bars]\fR .RS 2 \fB\ position\fR statusbar position on screen: 0=Top; 1=Bottom, 2=Hide\&. .PP \fB\ screen\fR screen to display statusbar(start ar 0), set to\fB -1\fR to display on every screen\&. .PP \fB\ elements\fR t=Tags, s=Statustext, y=Systray, l=Launcher\&. .PP \fB\ theme\fR names of the statusbar theme\&. .RE .PP .RE \fB\ [tags]\fR .RS 2 \fB\ screen\fR screen to display tag. use no screen option or screen =\fB -1\fR to set tag on each screen\&. .PP \fB\ name\fR display tagname\&. .PP \fB\ statusline\fR draw a custom statusline in the specific tag (can display any sequences)\&. .PP \fB\ mousebinds\fR mouse actions on the tag buttons\&. .RE .PP .RE \fB\ [client]\fR .RS 2 \fB\ theme\fR apply theme to client by default\&. .PP \fB\ key_modifier\fR key modifier to perform actions on clients\&. .PP \fB\ mousebinds\fR mouse actions on client\&. .RE .PP .RE \fB\ [rules]\fR specific rules for clients: to identify an application, use xprop\&. .RS 2 \fB\ instance\fR first part of WM_CLASS\&. .PP \fB\ class\fR second part of WM_CLASS\&. .PP \fB\ role\fR WM_WINDOW_ROLE\&. .PP \fB\ name\fR _NET_WM_NAME\&. .PP \fB\ theme\fR apply theme to client\&. .PP \fB\ tag\fR set tag to client(start at 0)\&. .PP \fB\ screen\fR display client on a specific screen\&. .PP \fB\ free\fR client in auto-free mode (true/false)\&. .PP \fB\ tab\fR open client in a tab (true/false)\&. .RE .PP .RE \fB\ [launchers]\fR .RS 2 \fB\ name\fR launcher-name, will be used in the [keys] section\&. .PP \fB\ prompt\fR display text at the beginning of the prompt\&. .PP \fB\ command\fR command used by the launcher. can be an uicb function or an uicb function + extension\&. .RE .PP .RE \fB\ [keys]\fR .RS 2 each line is contained within\fB\ [key]...[/key]\fR .PP \fB\ mod\fR key modifier (Alt, Control, Shift, Super)\&. .PP \fB\ key\fR key to press\&. .PP \fB\ func\fR uicb function to launch\&. .PP \fB\ cmd\fR if\fB\ func = "spawn"\fR set the external command to launch\&. .sp .SH "UICB Functions" UICB functions list. for “User Interface Call Backs”\&. .PP \fB\ usage in the wmfsrc:\fR func = "tag_next"\fB\ or\fR func = "spawn" cmd = "urxvt -e vim"\&. .RE \fB\ usage in the status.sh:\fR wmfs -c status " ^s[;;next](1;tag_next)"\&. .RE \fB\ usage in your terminal:\fR wmfs -c tag_next\&. .PP \fB\ spawn\fR launch a command. ex: func = "spawn" cmd = "urxvtc -e screen irssi"\&. .PP \fB\ quit\fR quit wmfs\&. .PP \fB\ reload\fR reload wmfs\&. .PP \fB\ tag_set\fR set tag by number\&. .PP \fB\ tag\fR set tag by name\&. .PP \fB\ tag_next/prev\fR set next/previous tag\&. .PP \fB\ tag_client\fR tag the client\&. .PP \fB\ tag_move_client_next/prev\fR tag the client with next/previous tag\&. .PP \fB\ tag_click\fR display tag with a clic on tag button\&. .PP \fB\ tag_new/del\fR add/delete a tag\&. .PP \fB\ layout_vmirror\fR vertical mirror tiling\&. .PP \fB\ layout_hmirror\fR horizontal mirror tiling\&. .PP \fB\ layout_rotate_left\fR tiling rotate anti/clockwise\&. .PP \fB\ layout_prev_set\fR back to previous set layout\&. .PP \fB\ layout_next_set\fR go to next set layout\&. .PP \fB\ layout_integrate_left/right/top/bottom\fR client integration in the client zone by direction\&. .PP \fB\ client_close\fR close the client\&. .PP \fB\ client_resize_right/left/top/bottom\fR resize client with direction\&. .PP \fB\ client_focus_right/left/top/bottom\fR focus client with direction\&. .PP \fB\ client_tab_right/left/top/bottom\fR tab client with direction\&. .PP \fB\ client_swap_right/left/top/bottom\fR swap client with direction\&. .PP \fB\ client_focus_next/prev\fR move focus to the next/previous client\&. .PP \fB\ client_swap_next/prev\fR swap with the next/previous client\&. .PP \fB\ client_untab\fR untab the client\&. .PP \fB\ client_focus_next_tab\fR move focus to next tab-client\&. .PP \fB\ client_focus_prev_tab\fR move focus to previous tab-client\&. .PP \fB\ client_focus_click\fR give focus to client with a clic\&. .PP \fB\ client_toggle_free\fR togle free the client\&. .PP \fB\ client_tab_next_opened\fR open the client in a tab\&. .PP \fB\ status\fR display the argument text in the statusbar\&. .PP \fB\ status_surface\fR display a surface. can contain sequences\&. .PP \fB\ mouse_resize\fR resize the client\&. .PP \fB\ mouse_move\fR move the client\&. .PP \fB\ mouse_swap\fR swap the client\&. .PP \fB\ mouse_tab\fR tab the client\&. .PP \fB\ screen_next/prev\fR go to next/previous screen\&. .PP \fB\ screen_move_client_next/prev\fR move the client to next/previous screen\&. .PP \fB\ launcher\fR native prompt. ex:\fB\ func = "launcher" cmd = "exec"\fR display the “exec” launcher\&. .RE .PP .sp .SH "BUGS" WMFS isn\'t stable for now\&. So it certainly contains some bugs\&. .sp .SH "AUTHORS" Martin Duquesnoy <\fIxorg62@gmail\&.com\fR\&[1]>\&. .sp .SH "WWW" Main site: \fIhttps://github\&.com/xorg62/wmfs\fR .PP Wiki: \fIhttps://github\&.com/xorg62/wmfs/wiki\fR .PP Bug tracker: \fIhttps://github\&.com/xorg62/wmfs/issues\fR .sp .SH "COPYING" WMFS is under the BSD license\&. See COPYING for more information\&. .sp .SH "NOTES" .IP " 1." 4 xorg62@gmail.com .RS 4 \%mailto:xorg62@gmail.com .RE