.\" title: wmfs .\" dev: xorg62 .\" man: arpinux .\" .TH "WMFS" "1" "2012/05/02" "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 \fBSuper + Shift + f \fR .RS 4 Toggle ignore_tag the selected client .RE .PP \fBSuper + Shift + h \fR .RS 4 Toggle infobar visibility .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 Display 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 ordered statusbar elements 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\ circular:\fR enable tag wrapping. default is true\&. .PP \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\ focus:\fR select the focus mouse options; enter=focus follow mouse, click=click to focus, everything-else=disable focus mouse support\&. .PP \fB\ mousebinds:\fR mouse actions on client\&. .PP \fB\ padding:\fR enable padding between clients. default is 0\&. .PP \fB\ autofocus:\fR give focus to new created clients. default is false\&. .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 specify a tag to display 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)\&. .PP \fB\ ignore_tag:\fR specify to client to ignore tags (client is displayed on every tag)\&. .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, you can identify it with "xev"\&. .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 "STATUS" statusbars, tags, surfaces and titlebars support sequences to display text, images bars and graphs through the\fB\ wmfs -c status\fR command. .PP \fB\ Syntax\fR .PP .RS 4 \fB\ position:\fR “left/right” (relative) or “x;y” (absolute)\&. .PP \fB\ dimension:\fR “ww;hh” for width;height of the rectangle or the image, to display an image at its original size, set it to “0;0”\&. .PP \fB\ color:\fR ”#rrggbb”\&. .PP \fB\ imagepath:\fR absolute path for the image\&. .PP \fB\ border:\fR width of the progressbar border in pixels\&. .PP \fB\ curser:\fR width of the curser in the positionbar\&. .PP \fB\ value:\fR a variable, to draw progressbar\&. .PP \fB\ valuemax:\fR maximum value of the ‘value’ used in the progressbar\&. .RE .PP \fB\ basic usage:\fR wmfs -c status " TEXT visible on 'barname'"\&. .PP \fB\ display colors:\fR wmfs -c status " ^s[;;]"\&. .PP \fB\ display rectangles:\fR wmfs -c status " ^R[;;]"\&. .PP \fB\ display images:\fR wmfs -c status " ^i[;;]"\&. .PP \fB\ display progressbars:\fR wmfs -c status " ^p[;;;;;;]"\&. .PP \fB\ display positionbars:\fR wmfs -c status " ^P[;;;;;;]"\&. .PP \fB\ display graph:\fR wmfs -c status " ^g[;;;;;;]"\&. .RE .PP \fB\ mousebinds:\fR sequences supports mousebinds with format\fB\ (;)\fR or\fB\ (;;)\fR .RE .PP \fB\ surfaces:\fR you can display popups from the statusbar with the mousebind\fB\ (;status_surface;,, )\fR .PP .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 .RS 4 launch a command. ex: func = "spawn" cmd = "urxvtc -e screen irssi"\&. .RE .PP \fB\ quit\fR .RS 4 quit wmfs\&. .RE .PP \fB\ reload\fR .RS 4 reload wmfs\&. .RE .PP \fB\ tag_set\fR .RS 4 set tag by number\&. .RE .PP \fB\ tag\fR .RS 4 set tag by name\&. .RE .PP \fB\ tag_next/prev\fR .RS 4 set next/previous tag\&. .RE .PP \fB\ tag_client\fR .RS 4 tag the client\&. .RE .PP \fB\ tag_client_and_set\fR .RS 4 teg the client and set the tag\&. .RE .PP \fB\ tag_move_client_next/prev\fR .RS 4 tag the client with next/previous tag\&. .RE .PP \fB\ tag_click\fR .RS 4 display tag with a clic on tag button\&. .RE .PP \fB\ tag_new/del\fR .RS 4 add/delete a tag\&. .RE .PP \fB infobar_toggle_hide\fR .RS 4 toggle specific infobar visibility (infobar_name as cmd)\&. .RE .PP \fB\ layout_vmirror\fR .RS 4 vertical mirror tiling\&. .RE .PP \fB\ layout_hmirror\fR .RS 4 horizontal mirror tiling\&. .RE .PP \fB\ layout_rotate_left\fR .RS 4 tiling rotate anti/clockwise\&. .RE .PP \fB\ layout_prev_set\fR .RS 4 back to previous set layout\&. .RE .PP \fB\ layout_next_set\fR .RS 4 go to next set layout\&. .RE .PP \fB\ layout_integrate_left/right/top/bottom\fR .RS 4 client integration in the client zone by direction\&. .RE .PP \fB\ client_close\fR .RS 4 close the client\&. .RE .PP \fB\ client_resize_right/left/top/bottom\fR .RS 4 resize client with direction\&. .RE .PP \fB\ client_focus_right/left/top/bottom\fR .RS 4 focus client with direction\&. .RE .PP \fB\ client_tab_right/left/top/bottom\fR .RS 4 tab client with direction\&. .RE .PP \fB\ client_swap_right/left/top/bottom\fR .RS 4 swap client with direction\&. .RE .PP \fB\ client_focus_next/prev\fR .RS 4 move focus to the next/previous client\&. .RE .PP \fB\ client_swap_next/prev\fR .RS 4 swap with the next/previous client\&. .RE .PP \fB\ client_untab\fR .RS 4 untab the client\&. .RE .PP \fB\ client_focus_next_tab\fR .RS 4 move focus to next tab-client\&. .RE .PP \fB\ client_focus_prev_tab\fR .RS 4 move focus to previous tab-client\&. .RE .PP \fB\ client_focus_click\fR .RS 4 give focus to client with a clic\&. .RE .PP \fB\ client_toggle_free\fR .RS 4 toggle free the selected client\&. .RE .PP \fB\ client_toggle_ignore_tag\fR .RS 4 toggle ignore_tag the selected client\&. .RE .PP \fB\ client_tab_next_opened\fR .RS 4 open the client in a tab\&. .RE .PP \fB\ status\fR .RS 4 display the argument text in the statusbar\&. .RE .PP \fB\ status_surface\fR .RS 4 display a surface. can contain sequences\&. .RE .PP \fB\ mouse_resize\fR .RS 4 resize the client\&. .RE .PP \fB\ mouse_move\fR .RS 4 move the client\&. .RE .PP \fB\ mouse_swap\fR .RS 4 swap the client\&. .RE .PP \fB\ mouse_tab\fR .RS 4 tab the client\&. .RE .PP \fB\ screen_next/prev\fR .RS 4 go to next/previous screen\&. .RE .PP \fB\ screen_move_client_next/prev\fR .RS 4 move the client to next/previous screen\&. .RE .PP \fB\ launcher\fR .RS 4 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 "AUTHOR" 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\&. .RE