WMI(5)

NAME
WMI - Window Manager Improved, a X11 window manager for hackers

DESCRIPTION
The file actions.conf is used to define actions manually. Three types of actions are supported: external (extern), internal (intern) and sequential (chain) actions. The internal actions are described in the following section.

INTERN ACTIONS
Note, most actions are context-sensitive, this means that they are only available, if they would have any effect.

attach-all-clients:
    Attaches all detached clients.

attach-client:
    Attaches an detached client to the workspace. If the client has been detached as floating client, it'll be attached as floating client again, otherwise if will be attached to the focussed frame, or to a new frame, if there does not exist a frame yet.

banish:
    Banishes the pointer to bottom-right corner.

begin-record:
    Begins recording all WMI specific actions until end-record-* or cancel-record will be invoked, except entering interactive mode and end-record-*.

bind-keys:
    Creates a shortcut for a specific action.

cancel-record:
    Cancels the recording of actions immediately.

create-action:
    Creates a new action alias for an external application.

create-workspace:
    Creates a new workspace on the focussed monitor.

cycle-client-next:
    Focusses next client within a frame.

cycle-client-prev:
    Focusses previous client within a frame.

cycle-slot-tab-next:
    Focusses next slot tab of the slot.

cycle-slot-tab-prev:
    Focussed previous slot tab of the slot.

cycle-workspace-next:
    Focusses next workspace on the monitor.

cycle-workspace-prev:
    Focusses previous workspace on the monitor.

destroy-action:
    Destroys a selected extern- or chain-action. Always valid.

destroy-workspace:
    Destroys the focussed workspace. Only valid if no clients or frames are attached to this workspace and at least another workspace exists.

detach-all-clients:
    Detaches all clients from focussed frame or all floating clients.

detach-client:
    Detaches the focused client.

end-record-chain:
    Ends recording actions and provides to create a chain action, which will invoke all recorded actions sequentially through only one alias name.

end-record-script:
    Ends recording actions and provides to save all recorded actions to a shell script which uses wmiremote for remote invocation of the actions. This enables flexible pseudo session management.

exec:
    Provides a list of all executables in the $PATH environment, which can be executed. You can also use the '/' character to browse through your directories and choose an executable which isn't available through the $PATH environment. You can also smuggle additional command arguments behind the executable name, as you know it from the command line. But note that this is not as powerful as you use the shell. Note, that exec executes the choosen application directly.

exec-term:
    Same as exec, except that the action will be executed within the defined (see common.conf) default terminal.

grow-down:
    Grows the focussed floating client or frame in south direction. This action is not valid for borderless clients.

fit-client:
    Fits the client size to workspace area.

grow-left:
    Grows the focussed floating client or frame in west direction. This action is not valid for borderless clients.

grow-right:
    Grows the focussed floating client or frame in east direction. This action is not valid fo borderless clients.

grow-up:
    Grows the focussed floating client or frame in north direction. This action is not valid for borderless clients.

hide-bars:
    Hides all bars of all frames/clients on the workspace.

hide-borders:
    Hides all borders of all frames/clients on the workspace.

hook-client:
    Hooks a client to a specific workspace. Thus the specific clients class::instance will be attached automatically to the hooked workspace afterwards all the time.

join-frame-down:
    Joins the focussed frame with its neighbor frame in south direction.

join-frame-left:
    Joins the focussed frame with its neighbor frame in west direction.

join-frame-right:
    Joins the focussed frame with its neighbor frame in east direction.

join-frame-up:
    Joins the focussed frame with its neighbor frame in north direction.

kill-client:
    Kills the focussed client. First WMI will try to let the client close itself, if the client ignores this request, it'll be killed.

kill-slot-client:
    Kills the slotted client.

lower:
    Lowers the focussed client or frame.

max-client-to-screen:
    Maximizes the focussed floating client to the whole screen.

move-client-down:
    Moves the focussed floating client in south direction.

move-client-left:
    Moves the focussed floating client in west direction.

move-client-right:
    Moves the focussed floating client in east direction.

move-client-up:
    Moves the focussed floating client in north direction.

quit:
    Exits WMI and saves all settings.

raise:
    Raises the focussed client or frame.

rehash:
    Rereads the $PATH environment for exec actions, this is useful after having installed new apps. It's pretty similiar to the (t)csh or zsh way of life.

rename-workspace:
    Renames the focussed workspace. Note, that WMI doesn't cares about the names, they may be equal or not.

save-settings:
    Manually saves session settings (shortcuts, workspace configuration).

select-client:
    Selects a client from a list of all clients.

select-client-id:
    Selects a client from a list of all client ids.

select-frame-down:
    Focusses the downward neighbor frame of the focussed frame.

select-frame-left:
    Focusses the leftward neighbor frame of the focussed frame.

select-frame-right:
    Focusses the rightward neighbor frame of the focussed frame.

select-frame-up:
    Focusses the upward neighbor frame of the focussed frame.

select-workspace:
    Provides the names of all workspaces of this monitor and focusses the selected workspace afterwards.

show-bars:
    Shows all bars of all frames/clients on the workspace.

show-borders:
    Shows all borders of all frames/clients on the workspace.

shrink-down:
    Shrinks the focussed floating client or frame in south direction.

shrink-left:
    Shrinks the focussed floating client or frame in west direction.

shrink-right:
    Shrinks the focussed floating client or frame in east direction.

shrink-up:
    Shrinks the focussed floating client or frame in north direction.

send-client-down:
    Sends the focussed client to its neighbor frame in south direction.

send-client-left:
    Sends the focussed client from the focussed frame to its neighbor frame in west direction.

send-client-right:
    Sends the focussed client from the focussed frame to its neighbor frame in east direction.

send-client-up:
    Sends the focussed client from the focussed frame to its neighbor frame in north direction.

slot-client:
    Attaches the running client to the slot if WMI was build with slot support.

split-frame-down:
    Splits the focussed frame in south direction. Only valid if at least two clients are attached to the focussed frame.

split-frame-left:
    Splits the focussed frame in west direction. Only valid if at least two clients are attached to the focussed frame.

split-frame-right:
    Splits the focussed frame in east direction. Only valid if at least two clients are attached to the focussed frame.

split-frame-up:
    Splits the focussed frame in north direction. Only valid if at least two clients are attached to the focussed frame.

sticky-client:
    Makes the focussed client sticky. Sticky means that the client will be visible on all workspaces and always on top.

startup-action.name:
    Starts an action after WMI is up and running on each start.

swap-client-down:
    Swaps the focussed client in the focussed frame with the focussed client of the downward neighbor frame.

swap-client-left:
    Swaps the focussed client in the focussed frame with the focussed client of the leftward neighbor frame.

swap-client-right:
    Swaps the focussed client in the focussed frame with the focussed client of the rightward neighbor frame.

swap-client-up:
    Swaps the focussed client in the focussed frame with the focussed client of the upward neighbor frame.

swap-frame-down:
    Swaps the focussed frame with the downward neighbor frame.

swap-frame-left:
    Swaps the focussed frame with the leftward neighbor frame.

swap-frame-right:
    Swaps the focussed frame with the rightward neighbor frame.

swap-frame-up:
    Swaps the focussed frame with the upward neighbor frame.

toggle-bar:
    Toggles the visibility of the clients or frames titlebar.

toggle-border:
    Toggles the visibility of the frame or client border.

toggle-client-mode:
    Toggles between floating mode of a client with border and maximized mode.

toggle-client-sticky:
    Toggles the focussed client between sticky and floating mode.

toggle-float-bar:
    Toggles the visibility of the floating bar.

toggle-focus-mode:
    Toggles the focus between frames and floating clients.

toggle-inputmode:
    Enters input mode, which will appear in the status bar.

toggle-slot:
    Toggles the visibility of the slot.

toggle-sloppy-mode:
    Toggles the sloppy focus mode.

toggle-status-bar:
    Toggles the visibility of the status bar.

toggle-tiled:
    Toggles tiled mode of a frame.

unslot-client:
    Detaches the last client which has been attached to the slot again.

unhook-client:
    Unhooks a client from the hooked workspace.

zoom-client:
    Zooms the focussed client to the tiled (left) column.

CONFIGURATION
If you prefer using WMI actions for configuration of the WMI, you can use create-action, begin/end-record-* and bind-keys from input mode. Such a configuration will be saved to actions.session Experienced users may use a manually created configuration described in the following. Note that the actions.conf will override all definitions made (automatically by WMI) in actions.session. Both files are syntactically equal and you can rename an existing actions.session to actions.conf for fine tuning or further manually configuration.

FORMAT
The basic format of all .conf and .session files is as follows: key=value # comment key=\#value # '\' escapes special characters # special characters are: ", =, \ and # If you've whitespaces within values, you've to quote them with '"' characters. You're free to let empty lines or whitespaces before and after keys, the '=' operator and the value. If you need a special character, you've to escape it using the '\' character, e.g. \=.

TYPES OF ACTIONS

extern:
    External actions are aliases to external programs, e.g. mozilla, with following syntax: extern.< alias name >.cmd="< the command, maybe with arguments >" extern.< alias name >.keys=< modifier[+modifier]+(key|button) > The first line defines the command which will be executed if the action defined by < alias name > is invoked. Note that the command needs to be quoted, if it contains whitespaces. The second line defines the shortcut of the action. Note that the second line is optional.

intern:
    Internal actions are such actions defined in wmi(1). It's forbidden to define external or sequential actions with the same alias name as an internal action has. If you ignore this advice, don't wonder if WMI isn't able to invoke the specific internal action anymore. Since internal actions have a fixed semantic you can only define a shortcut for them: intern.< action name >.keys=< modifier[+modifier]+(key|button) > The line defines the shortcut of the action.

chain:
    The chain mechanism, which represents the ability for user defined sequential action invoking is a special feature of WMI never seen before in other window managers. Regardless of which type an action within a chain is, everything is possible, except recursion. Recursion means that the chain is calling itself, which would lead to an endless loop. WMI detects such recursion and will stop the invocation of recursive chains immediatly. Everything is possible means, that you're free to invoke internal, external and sequential actions within one chain arbitrarily. One scenario which may occur is the invocation of several external applications and afterwards automatic arrangement of them (e.g. split actions or whatever WMI provides) through internal actions. But you'll have problems achieving this, since WMI doesn't waits while chain processing until an external application will be ready and proceed afterwards, because this would be indecisable. So take care yourself, that all actions after an external action within a chain are independently from any client window. If you want to achieve something like this, you can use wmiremote(1) with the -a argument within a script and between external and internal actions you may define some sleep or wait timeouts. Through chains it's also possible to define aliases for internal actions, one chain with only one internal action could be an alias for it - sometimes this may useful. The syntax for chains looks as follows: chain.< alias name >.seq=< action[+arg[+arg ...]] >[,< action ... >] ... chain.< alias name >.keys=< modifier[+modifier]+(key|button) > The first line defines the chain. As you can see, all actions of a chain are comma separated and for actions which may need arguments it's optional to smuggle some arguments to these actions with the '+' operator. Note that it's only possible to run defined actions within a chain. If you want to invoke an application from a chain without having defined an external action for it, you could use the following example: chain.cxterm.seq=exec+xterm This will use the exec action and smuggle xterm as command to it.

SHORTCUTS
The basic format of all shortcuts is: [modifier*]+(key|button)[::[modifier*]+(key|button)]* A modifier is one of the following strings: none, mod1, mod2, mod3, ..., ctrl, shift A key is a key on your keyboard, note that keys have to be case sensitive to the definitions in < X11/keysymdef.h >, but without the 'XK_' prefix. This means for example, that 'f1' is invalid, you have to use 'F1' instead (same to Left, Right, Up, Down, etc.). A button is a mouse button, if you've a three-button mouse following buttons are valid: Button1, Button2, Button3.

AUTHOR
WMI was written by Anselm R. Garbe < anselmg@t-online.de > and others (see AUTHORS or the WMI site for further information) You will find the newest version of WMI at http://wmi.berlios.de/. There is also a mailing list.

BUGS
You should report them to the mailing list.

SEE ALSO
wmi(1), wmiremote(1), common.conf(5), session.conf(5), theme.conf(5)