WMFS(1)

NAME
wmfs - Window Manager From Scratch

SYNOPSIS
wmfs [-hv] [-C <file>] [-c <uicb_function> <cmd>]

DESCRIPTION
WMFS is a lightweight and highly configurable tiling window manager for X written in C.

OPTIONS

-C <file>
    Load a configuration file.

-c <uicb_function> <cmd>
    Execute an uicb function to control WMFS.

-v
    Print version information to standard output, then exit.

-h
    Print help information, then exit.

DEFAULT KEY BINDINGS

Control-Alt + r
    Reload WMFS binary

Super + Return
    Run a terminal (urxvt by default)

Super + q
    Quit the selected client

Control-Alt + q
    Exit WMFS

Super + f
    Toggle free the selected client

Super + Shift + f
    Toggle ignore_tag the selected client

Super + Shift + h
    Toggle infobar visibility

Alt + Tab
    Give the focus to the next client

Alt-Shift + Tab
    Give the focus to the previous client

Alt + h
    Give the focus to the client on the left

Alt + l
    Give the focus to the client on the right

Alt + k
    Give the focus to the client on the top

Alt + j
    Give the focus to the client on the bottom

Super + Tab
    Give the focus to the next tabbed client

Super-Shift + Tab
    Give the focus to the previous tabbed client

Control-Shift + h
    Swap with the client on the left

Control-Shift + l
    Swap with the client on the right

Control-Shift + k
    Swap with the client on the top

Control-Shift + j
    Swap with the client on the bottom

Alt-Shift + h
    Tab in the client on the left

Alt-Shift + l
    Tab in the client on the right

Alt-Shift + k
    Tab in the client on the top

Alt-Shift + j
    Tab in the client on the bottom

Alt-Shift + u
    Untab the client

Super + h
    Increase the client to the left

Super + l
    Decrease the client from the left

Super + k
    Increase the client to the top

Super + j
    Decrease the client from the top

Super-Control + h
    Decrease the client from the right

Super-Control + l
    Increase the client to the right

Super-Control + k
    Decrease the client from the bottom

Super-Control + j
    Increase the client to the bottom

Control + Right
    Next tag

Control + Left
    Previous tag

Control + Up
    Next screen

Control + Down
    Previous screen

Super + m
    Vertical mirror layout

Super-Shift + m
    Horizontal mirror layout

Super + r
    Rotate layout right

Super-Shift + r
    Rotate layout left

Super-Control-Alt + h
    Integrate client in left layout

Super-Control-Alt + j
    Integrate client in bottom layout

Super-Control-Alt + k
    Integrate client in top layout

Super-Control-Alt + l
    Integrate client in right layout

Super + o
    Restore previous layout

Super-Shift + o
    Restore next layout

Super + p
    Display a launcher in the statusbar to run an unix command

Super + F[1..9]
    Change tag view

Super-Shift + F[1..9]
    Transfert the selected client to the wanted tag

Super + -
    Delete current tag

Super-Shift + -
    Add current tag

CONFIGURATION
WMFS is configured by $HOME/.config/wmfs/wmfsrc.

include: wmfsrc supports ”@include” to split configuration file by section.
    Usage: "@include ~/.config/wmfs/wmfs_themes".

[themes] wmfsrc supports themes for client and statusbar.
    Misc
        name: theme name, will be used in next sections.

        font: theme font in XLFD format.

    Bars
        bars_width: bar height in pixels.

        bars_fg/bg: statusbar text/background color.

    Tags
        tags_normal_fg/bg: normal tag text/button color.

        tags_normal_statusline: normal tag statusline.

        tags_sel_fg/bg: selected tag text/button color.

        tags_sel_statusline: selected tag statusline.

        tags_occupied_fg/bg: occupied tag text/button color.

        tags_occupied_statusline: occupied tag statusline.

        tags_urgent_fg/bg: urgent tag text/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/bg: normal client titlebar text/background color.

        client_normal_statusline: normal client statusline.

        client_sel_fg/bg: selected client titlebar text/background color.

        client_sel_statusline: selected client statusline.

        frame_bg: client border color.

        client_titlebar_width: client titlebar height in pixels.

        client_border_width: client border height in pixels.

[bars]
    position: statusbar position on screen (0=Top; 1=Bottom, 2=Hide).

    screen: screen to display statusbar (start ar 0), set to -1 to display on every screen.

    elements: ordered statusbar elements t=Tags, s=Statustext, y=Systray, l=Launcher.

    theme: names of the statusbar theme.

[tags]
    circular: enable tag wrapping. default is true.

    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.

[client]
    theme: apply theme to client by default.

    key_modifier: key modifier to perform actions on clients.

    focus: select the focus mouse options; enter=focus follow mouse, click=click to focus, everything-else=disable focus mouse support.

    mousebinds: mouse actions on client.

    padding: enable padding between clients. default is 0.

    autofocus: give focus to new created clients. default is false.

[rules] specific rules for clients: to identify an application, use xprop.
    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: specify a tag to display 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: specify to client to ignore tags (client is displayed on every tag).

[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.

[keys]
    each line is contained within [key]...[/key]

    mod: key modifier (Alt, Control, Shift, Super).

    key: key to press, you can identify it with "xev".

    func: uicb function to launch.

    cmd: if func = "spawn" set the external command to launch.

STATUS
statusbars, tags, surfaces and titlebars support sequences to display text, images bars and graphs through the wmfs -c status command.

Syntax

    position: “left/right” (relative) or “x;y” (absolute).

    dimension: “ww;hh” for width;height of the rectangle or the image, to display an image at its original size, set it to “0;0”.

    color: ”#rrggbb”.

    imagepath: absolute path for the image.

    border: width of the progressbar border in pixels.

    curser: width of the curser in the positionbar.

    value: a variable, to draw progressbar.

    valuemax: maximum value of the ‘value’ used in the progressbar.

basic usage: wmfs -c status "<barname> TEXT visible on 'barname'".

display colors: wmfs -c status "<barname> ^s[<position>;<color>;<text>]".

display rectangles: wmfs -c status "<barname> ^R[<position>;<dimensions>;<color>]".

display images: wmfs -c status "<barname> ^i[<position>;<dimensions>;<imagepath>]".

display progressbars: wmfs -c status "<barname> ^p[<position>;<dimensions>;<border>;<value>;<valuemax>;<bgcolor>;<fgcolor>]".

display positionbars: wmfs -c status "<barname> ^P[<position>;<dimensions>;<curser>;<value>;<valuemax>;<bgcolor>;<fgcolor>]".

display graph: wmfs -c status "<barname> ^g[<position>;<dimensions>;<value>;<valuemax>;<bgcolor>;<fgcolor>;<name>]".

mousebinds: sequences supports mousebinds with format (<key>;<uicb-function>) or (<key>;<spawn>;<command>)

surfaces: you can display popups from the statusbar with the mousebind (<key>;status_surface;<position>,<dimension>,<color> <datas>)

UICB Functions
UICB functions list. for “User Interface Call Backs”.

usage in the wmfsrc: func = "tag_next" or func = "spawn" cmd = "urxvt -e vim".
usage in the status.sh: wmfs -c status "<barname> ^s[<position>;<color>;next](1;tag_next)".
usage in your terminal: wmfs -c tag_next.

spawn
    launch a command. ex: func = "spawn" cmd = "urxvtc -e screen irssi".

quit
    quit wmfs.

reload
    reload wmfs.

tag_set
    set tag by number.

tag
    set tag by name.

tag_next/prev
    set next/previous tag.

tag_client
    tag the client.

tag_client_and_set
    teg the client and set the tag.

tag_move_client_next/prev
    tag the client with next/previous tag.

tag_click
    display tag with a clic on tag button.

tag_new/del
    add/delete a tag.

infobar_toggle_hide
    toggle specific infobar visibility (infobar_name as cmd).

layout_vmirror
    vertical mirror tiling.

layout_hmirror
    horizontal mirror tiling.

layout_rotate_left
    tiling rotate anti/clockwise.

layout_prev_set
    back to previous set layout.

layout_next_set
    go to next set layout.

layout_integrate_left/right/top/bottom
    client integration in the client zone by direction.

client_close
    close the client.

client_resize_right/left/top/bottom
    resize client with direction.

client_focus_right/left/top/bottom
    focus client with direction.

client_tab_right/left/top/bottom
    tab client with direction.

client_swap_right/left/top/bottom
    swap client with direction.

client_focus_next/prev
    move focus to the next/previous client.

client_swap_next/prev
    swap with the next/previous client.

client_untab
    untab the client.

client_focus_next_tab
    move focus to next tab-client.

client_focus_prev_tab
    move focus to previous tab-client.

client_focus_click
    give focus to client with a clic.

client_toggle_free
    toggle free the selected client.

client_toggle_ignore_tag
    toggle ignore_tag the selected client.

client_tab_next_opened
    open the client in a tab.

status
    display the argument text in the statusbar.

status_surface
    display a surface. can contain sequences.

mouse_resize
    resize the client.

mouse_move
    move the client.

mouse_swap
    swap the client.

mouse_tab
    tab the client.

screen_next/prev
    go to next/previous screen.

screen_move_client_next/prev
    move the client to next/previous screen.

launcher
    native prompt. ex: func = "launcher" cmd = "exec" display the “exec” launcher.

BUGS
WMFS isn't stable for now. So it certainly contains some bugs.

AUTHOR
Martin Duquesnoy <xorg62@gmail.com[1]>.

WWW
Main site: https://github.com/xorg62/wmfs

Wiki: https://github.com/xorg62/wmfs/wiki

Bug tracker: https://github.com/xorg62/wmfs/issues

COPYING
WMFS is under the BSD license. See COPYING for more information.