_______       __    __    __ ___ ___ ___ ___ ___ ___
  |   _   \---.-.  |--.__|--|  |   Y   |   Y   |   Y   |
  |.  l   /  _  |  _  |  |  _  |.  |   |.  |   |.      |
  |.  _   1___._|_____|__|_____|.  |   |. / \  |. \_/  |
  |:  |   |                    |:  1   |:      |:  |   |
  |::.|:. |       v1.1.1        \:.. ./|::.|:. |::.|:. |
  `--- ---'                      `---' `--- ---'--- ---'

More complicated than your grandma's VWM!

Comments & Complaints to RabidCow.

Contents



The Basics
size, position, and number of virtual desktops
General Display
display options that apply with color or bitmaps
Colors and Bevels
for drawing with solid colors
Bitmaps
for drawing with bitmaps.
Icons
for drawing icons on miniwindows
Titlebars
for drawing titlebars on miniwindows
Switching Desks
for controlling things related to switching desktops
Misc. Behavior
misc. options for controlling various aspects of how the VWM behaves
!Bang Commands
commands to control the VWM
Special Windows
to specify windows that need to be treated differently
Triggered Actions
hooks for scripts to extend the VWM
lsBox
load the VWM in a box
Multi-Monitor
to control placement on systems with more than one monitor
Reference
various strings that appear in a number of places
Tricks
some neat ways to use some features
Known Bugs and Notes
there are no bugs.
Changes
aka "what's new?"
Index
alphabetical list of commands

The Basics



VWMPos <x> <y>
VWMx <x>
VWMy <y>
These set the position of the main vwm window, you can specify them in one line with VWMPos or in two with VWMx and VWMy. The default position is 0,0 so you should specify this unless you are loading the VWM in a box or wharf. RabidVWM will use ParseCoordinate if you are using a build of LiteStep that includes it, otherwise it will use its own version.
VWMPos 0 0	; left edge of screen
VWMPos -0 0	; right edge of screen (off screen)
VWMPos -20c 0	; 20 pixels left of center of screen
VWMPos 25% 0	; 25% across the screen
Using internal parser instead of ParseCoordinate:
VWMPos 40%+10 0	; 10 pixels right of 40% across the screen
VWMPos -15r 0	; 15 pixels left of current position (useful for !VWMMove/Size)
VWMSize <width> <height>
VWMWidth <width>
VWMHeight <height>
These set the size of the main vwm window, again you can set them in one line or two. All forms accepted for position can be used. If you load the VWM into a box or wharf, you can leave the size out and it will fill the area.
VWMDesks <x> <y>
VWMDesksX <x>
VWMDesksY <y>
Specifies the number of virtual desktops across and down. Only positive integers are allowed. If you don't set the number of desktops, a default of 2x2 will be used and the module will remind you that you should set it.

General Display



VWMSelExpand <border size>
The area that the desktop select bitmap is drawn in is the area for the selected desktop, plus this amount of padding on each side.
VWMDeskBorder <border size>
Defines a border area inside the VWM window where desktops are not drawn. The select bitmap can overlap this area, and miniwindows which are partially outside the edge desks can as well.
VWMUseFakeTrans
This enables "fake" background transparency by drawing the background image in the transparent areas. Windows behind the VWM will be obscured.
VWMTransparent
This enables real transparency in Windows 2000 and above, it will be ignored on systems that do not support it. (note that alpha works slightly differently between real and fake transparency, windows and select alpha cut through for real transparency and are layered for fake)
VWMConstantUpdate

This causes the VWM window to be redrawn constantly even if no windows have changed. This is intended to be used with .snapshot mode if you want the miniwindows to stay up to date better (off screen windows will still not be updated), but it does take a lot more CPU time. Without .snapshot windows this should have no visible effect.

!This can easily increase your CPU usage by more than 400 times. RabidVWM will go from a quiet little module using less than 0.1% of your CPU to a ravenous monster, consuming more than 40%.

VWMUseTransBlt
This enables magic pink transparency in bitmaps. This will take about 3 times the cpu usage of solid bitmaps, about the same as 1 sample snapshot mode.

Colors and Bevels



The VWM is made up of several elements, such as the miniwindows, each desktop's area, and the selected desktop area, each of which is drawn as a box. Each of these elements has sub-elements, such as the interior fill color and the border color, which can be specified separately for each element.

Older color settings should also work, but I don't recommend them since they don't make any sense.

Any <color> can be:

  • a standard litestep color:
    VWMWinColor 00a000

  • a scaled litestep color:
    VWMWinColor 00a000*-32

  • an index for a system color:
    VWMWinColor :2

  • a scaled system color:
    VWMWinColor :2*64

(the scale values are the same as for ...Bevel)

Alpha amounts range from 0 to 255: 255 = completely opaque/solid, 0 = completely transparent. With real transparency, anything with an alpha of 0 will let mouse clicks through to whatever's underneath, use an alpha of 1 to prevent that.

Sub-Elements
...Color <color> element fill color
...BorderColor <color> element border color, only used if bevel is not set or to automatically calculate bevel colors from
...LightColor <color> element border highlight color
...DarkColor <color> element border shadow color
...Bevel [<amount>] whether or not to draw 3D "bevels" around this element (VWMBevel turns this on for miniwindows), and optionally the amount to lighten/darken the border color to produce the highlight and shadow colors if they are not given
...Alpha <amount> element alpha transparency level
Main Elements
VWMWinColor <color>
VWMWinBorderColor <color>
VWMWinDarkColor <color>
VWMWinLightColor <color>
VWMWinBevel <amount>
VWMWinAlpha <amount>
Colors for the miniwindows.
VWMTitleColor <color>
VWMTitleBorderColor <color>
VWMTitleDarkColor <color>
VWMTitleLightColor <color>
VWMTitleBevel <amount>
Colors for the miniwindow titles, if drawn. Note that titles drawn in magic pink will probably not work the way you expect. Don't do that. (Is this still true?)

Titles use the same alpha as the window.

VWMBackColor <color>
VWMBackBorderColor <color>
VWMBackDarkColor <color>
VWMBackLightColor <color>
VWMBackBevel [<amount>]
VWMBackAlpha <amount>
Colors for the VWM background. (That is, the background area for each desktop in the VWM.)

You must set VWMUseFakeTrans for background transparency to work.

VWMFlashColor <color>
VWMFlashBorderColor <color>
VWMFlashDarkColor <color>
VWMFlashLightColor <color>
VWMFlashBevel <amount>
VWMFlashAlpha <amount>
Colors used for miniwindows while they are flashing.
VWMSelColor <color>
VWMSelBorderColor <color>
VWMSelDarkColor <color>
VWMSelLightColor <color>
VWMSelBevel [<amount>]
VWMSelAlpha <amount>
Colors used for the selected desktop.
VWMBevel
Turns on bevelling for miniwindows.
VWMBevelWidth <pixels>
The bevel on miniwindows has an outer part and an inner part. This sets the distance between them, which defaults to 0. If you set this to a negative number, the inner bevel is not drawn.
VWMNoBorder
Doesn't draw borders around desks or miniwindows. If VWMBevel is specified miniwindows still get a bevelled border.

Bitmaps



The VWM is made up of several elements, such as the miniwindows, each desktop's area, and the selected desktop area, each of which is drawn as a box. A bitmap and border area can be specified for each of these elements.

Any <border size> can be either a single number to indicate a fixed border on all sides, or four numbers: left, top, right, and bottom border sizes. Setting the border to 0 will effectively remove the border.

Alpha transparency values in the colors section also apply to bitmaps.


SNAPSHOT MODE: You can set some bitmaps to ".snapshot" to set the bitmap to a shrunken screen-shot of the element as it was last displayed on the screen. This takes a lot of processor time, so you can select a quality setting (eg ".snapshot 3", including quotes) as a number from 0-5, 0 being the default:

	0	1 sample/pixel
	1	5 samples in a +
	2	5 samples in a X
	3	9 samples in an octagon
	4	8 samples, same as 3 but without center
	5	17 samples in two octagons, for the truely insane
CPU usage will be higher with snapshot (and with more samples), but the snapshots aren't updated very often. One sample snapshot mode takes about the same CPU time as transparent bitmaps.

VWMBackBmp <bitmap>
VWMBackBorder <border size>
VWMBackTile

Instructs the vwm to use a bitmap for the background of the main window, and specifies which bitmap should be used. VWMBackTile makes the back bitmap tiled rather than stretched. Use this if you just want to specify one bitmap and tile it for every desktop, for example.

This can be set to ".snapshot" for snapshot mode.

VWMSelBmp <bitmap>
VWMSelBorder <border size>
VWMSelTile

Bitmap for selected desktop.

This can be set to ".snapshot" for snapshot mode.

VWMWinBmp <bitmap>
VWMWinBorder <border size>
VWMWinTile

Set the bitmap for the miniwindows. VWMWinBorder specifies a border around the bitmap that does not get stretched. This basically works the same as skins for systray except in separate commands. VWMWinTile will tile anything that would have been stretched.

This can be set to ".snapshot" for snapshot mode.

VWMWinBmp is also used to switch to bitmapped miniwindow mode. If no bitmap is specified, or it doesn't load, none of the other miniwindow bitmaps will work: VWMTitlebarBmp, VWMFlashBmp, VWMFlashTitleBmp. (Miniwindows are then drawn using solid colors.)

VWMTitlebarBmp <bitmap>
VWMTitlebarBorder <border size>
VWMTitlebarTile
Same as VWMWin... except for the titlebar of the miniwindows, if it gets drawn. No effect without VWMTitlebars and VWMWinBmp.
VWMFlashBmp <bitmap>
VWMFlashBorder <border size>
VWMFlashTile
Same as VWMWin... except for flashing miniwindows. No effect without VWMWinBmp.
VWMFlashTitleBmp <bitmap>
VWMFlashTitleBorder <border size>
VWMFlashTitleTile
Same as VWMTitlebar... except for flashing miniwindows.

Icons



VWMShowIcons
Enables drawing icons in the miniwindows.
VWMScaleIconToFit
Try to shrink the icons in miniwindows to fit inside them rather than letting them run over the edge. This has no effect if VWMShowIcons has not been specified.
VWMIconSize <size>
Icons are drawn this large, in pixels, square. This has no effect unless VWMShowIcons is specified. Defaults to 16.
VWMMinIconSize <size>
If an icon should scale to smaller than this, it is not drawn. This has no effect unless both VWMShowIcons and VWMScaleIconToFit are specified. Defaults to 4.
VWMIconBorder <border size>
Specifies the border around the window that the icon should not be draw on. All values are distances in pixels from the appropriate edge.
VWMForceIconBorderTop
If a titlebar is drawn on a miniwindow, the top border is usually replaced by the height of the titlebar. This will prevent this and ensure that the top border space set with VWMIconBorder will be used. This has no effect if VWMShowIcons and VWMTitlebars are not both enabled.

Titlebars



VWMTitlebars
Enables drawing titlebars on the miniwindows.
VWMTitleForTitle
Only draw titlebars on miniwindows corresponding to windows that have titlebars. Splash screens, for example, tend to not have titlebars. This has no effect if VWMTitlebars is not specified.
VWMTitlebarHeight <height>
Specifies the height of the titlebars drawn in the miniwindows in pixels. This has no effect if VWMTitlebars is not specified. Default is 3 pixels.
VWMTitlebarMod <mod>
Specifies the height of the titlebars as a fraction of the vwm desk size. Actual size is (minidesk height)/mod. This has no effect if VWMTitlebarHeight is specifically given.

Switching Desks



See also:

VWMHideTaskOnSwitch
Hides tasks that aren't on the current desktop. This means they don't show up in tasks-type modules, or in the alt-tab list. If litestep crashes with this setting, you're in trouble. (During testing, I had music coming from an invisible and uncontrollable winamp.)
VWMNoSwitchOnFocus
Prevents the VWM from switching desktops when LiteStep gives a window on a different desk input focus. (for example, clicking on a tasks tile) Switching to a window with ALT-TAB or any way but through LiteStep will not change desks.
VWMSwitchOnAnyFocus
Switches to the desk containing the window with input focus no matter how it was set. This will enable switching desks with ALT-TAB, but also sometimes when you close the last window on a desk or other times.
VWMFocusTop
Set the input focus to the topmost window on the desktop you're switching to. (not counting "always on top" windows)
VWMFocusLast
Set the input focus to whichever window last had input focus on the desktop you're switching to.
VWMNoGathering
Doesn't gather all windows on exit. This may not work if you use VWMHideTaskOnSwitch.
VWMReturnToFirstScreen
Causes the VWM to switch to the top-left desk on exit.
VWMInitialDesk <desk>
Specifies desk to start on. Note that any existing windows may not be in the correct desk if you use this.

Misc. Behavior



VWMMouseLeft <action>
VWMMouseRight <action>
VWMMouseMiddle <action>
These select an action for each mouse button when you click on the vwm window. Valid actions are:
	0	Do nothing
	1	Switch desktops
	2	Drag miniwindow 
		(hold down CTRL to snap on drop)
The default for left is drag and right is switch desktops.
VWMAlwaysOnTop
Makes the vwm window float above mere mortal windows. This has no effect if the VWM is in the Wharf or a Box. The default is to stick to the desktop, below other windows.
VWMNoShow
VWMHidden
If either of these is present, the VWM windows starts hidden. Use !VWMShow to make it visible.
VWMNoWrap
Normally going right from the right-most desktop will take you to the left-most, etc. This setting will disable that.
VWMDeskSpacing <width> <height>

Maximized windows are usually sized to slightly larger than the visible area so that their borders are placed offscreen. To prevent these borders from being drawn on adjacent desks, an amount of space is reserved between desks that never appears on screen. This option specifies the size of that space. Default is 16 12, other VWMs use 10 10, so use that is you're going to switch between them with windows still up.

This will also affect the space between desks in the VWM, but in scale with the screen resolution.

VWMSnapWindowOnDrag
Windows snap while they are being dragged, hold down ctrl to drag normally.
VWMHoverTime <millisec>
Specifies the amount of time that the mouse stays in one place before it is considered to be hovering, and the time after the mouse leaves the window that it is considered gone. Default is 500 milliseconds = 1/2 second.
VWMDetectTitleChange
Tells it to monitor the titles of windows, so miniwindows corresponding to new windows or windows whose titles have changed can register for VWMOnTitleChange.
VWMNoShellFlash
Stop miniwindows from flashing when their window's titles do. (AIM for example.)
VWMFlashCount
This sets the maximum number of times a window will flash. After it has flashed this number of times, the window will remain in the flash colors/bitmap. The default of 0 means flash forever.
VWMRefreshTime
This sets the time interval for VWM refreshes and the time between miniwindow flashes and updates with VWMConstantUpdate. The default is 250 milliseconds.
VWMKeepWindowsWithParent
When a program pops up a message, this will try to move those messages to the desktop where that program is. This might also work for instant messaging apps and the like, but I'm not sure. (technically, it gathers new windows to their owner because using the actual parent would be silly... parent sounds nicer tho :)

!Bang Commands



Anywhere you see <deskno>, you can use:
  • desk number
  • a desk x and y coordinate (as <deskx> <desky>)
  • left, right, up, or down (optionally followed by a number of desks to move in that direction)
  • a (windowspec) in (parenthesis), to refer to the desk containing that window
All desk numbers start at 1, 0 is the current desk (usually the same as just leaving it out).

To open Notepad on the desk containing WinAmp:

	!VWMOpen (#c WinAmp*) notepad.exe

To move right 4 desks:

	!VWMDesk right 4 or !VWMDesk left -4

To gather all windows to desk 3 down a (vertical) 1x4 VWM:

	!VWMGather 3 or
	!VWMGather 1 3 or
	!VWMMoveApp 3 #a or (these are a bit less efficient)
	!VWMMoveApp 1 3 #a 

!VWMLeft/Right/Up/Down
!VWMDesk <deskno>
Switch to a specific desktop.
!VWMGather [<deskno>]
Gathers all windows to the current or a specific desktop.
!VWMGatherLost [<deskno>]
Gathers all "lost" windows to the current or a specific desktop. Lost windows are windows that are currently outside of any desktop, normally they are left there until you try to switch to them (at which point that window is brought to the current desk).
!VWMOpen <deskno> <command> <parameters>
Switches to a specific desktop and opens or executes a command.
!VWMMoveApp <deskno>
!VWMMoveApp <deskno> <windowspec>
Move the foreground window to the specified desktop, or in the specified direction. If windowspec is given, moves the first matching window instead. See "special windows" for a description of windowspec, several more flags are accepted:
   d	find window on current desk only
   p	find topmost window rather than lowest hwnd
   h	find by window handle, in decimal
   a	find all matching windows
   d1.1	only windows on desk 1,1
   d4	only windows on desk 4
To gather all notepad windows to the current desk:
!VWMMoveApp 0 #ac Notepad
To move all notepad windows on desk 3,2 to a desk containing a mozilla window:
!VWMMoveApp (#c MozillaWindowClass) #ad3.2c Notepad
!VWMReset
Resets the VWM to the initial state specified in step.rc, also reload all bitmaps. This is the same as !refresh exept it only applies to the vwm.
!VWMMove [<monitor>] <x> <y>

Sets the screen position of the VWM window. Position is the same as for VWMPos. If the monitor name is supplied, the VWM is moved to that monitor, otherwise it stays on whichever monitor it was last placed on.

You can put r after a number to make it relative to the VWM's current position: !VWMMove 0r -10r

!VWMSize <width> <height>
Sets the size of the VWM window.
!VWMFlash [<state>] <windowspec>
Flashes the miniwindow for windows that match the given windowspec. windowspec is the same as for !VWMMoveApp.
!VWMExec <command>
Executes a command after replacing variables, see the reference section below. This allows you to read information out of the module outside of a VWMOn... action.
To find the class name for a window with a specific title, try:
!VWMExec !alert "^@wc(#t * - Notepad)^"
!VWMSetDesks <x> <y>
Change the number of desks available. This will not be remembered next time you start LiteStep. Relative values are allowed, start with + or -. 0 means no change.
!VWMSetDesks 0 +1  ; add one row of desks
!VWMShow [toggle|off|no|false|hide]
Shows or hides the VWM window. If toggle is specified, the state is toggled, if off, no, false, or hide is specified, the window is hidden, if anything else or nothing is specified, the window is shown.
!VWMHide
Hides the VWM window.
!VWMToggleOnTop [toggle|on|yes|true]
This toggles between on top and on bottom. You can specify true, yes, on, or toggle (or anything else). true, yes, or on will set it to on top, toggle or nothing will toggle the state, and anything else will set it to on bottom.
!VWMToggle <setting> [<state>]
Toggle a setting on the fly, changes are NOT saved to the config file. state is the same as for !VWMToggleOnTop, setting can be any of:
Bevel, DetectTitleChange, FocusTop, FocusLast, ForceIconBorderTop, NoBorder, NoGathering, NoSwitchOnFocus, NoWindows, NoWrap, ReturnToFirstScreen, ScaleIconToFit, ShowIcons, SnapWindowOnDrag, Titlebars, TitleForTitle, UseTransBlt, NoShellFlash, ConstantUpdate
!VWMToggleHideTask [toggle|on|yes|true]
Changes the state of VWMHideTaskOnSwitch on the fly. Any parameters are treated the same as for !VWMToggleOnTop.
!VWMAction <action> <command>
Set an event triggerred action on the fly, changes are NOT saved to the config file. action can be any of the VWMOnXXX commands, without the leading "VWMOn". command is the same as for those, or nothing to clear it.
!VWMSticky [<state>] [<windowspec>]
Changes the "stickiness" of the given window, or the active window if none is specified. state can be toggle, on, off, true, false, or nothing. If you supply a windowspec but no state, it must start with #flags.

Special Windows



Any of these can have the window spec preceded by flags, starting with #, that will tell the vwm what to match against:
    t	match window title
    c	match window class
If you don't specify any flags, it will check both, but you can specify the flags to save a little processor time and prevent accidentally misidentified windows. Use !VWMExec !alert "^@wc^" to find the window class of the active window, or !VWMExec !alert "^@wc(#t Window Title)^" for the window class of a window from a title.

Wildcards are allowed in all window specs.

*VWMIgnoreTitleChange <windowspec>
List windows that change their window titles often and it doesn't matter. No effect without VWMDetectTitleChange.
To prevent WinAmp's miniwindow from triggering VWMOnTitleChange when it changes songs and you have VWMDetectTitleChange set:
*VWMIgnoreTitleChange #c WinAmp*
*VWMFix <windowspec>
Windows that should be hidden rather than moved to different desktops. You'll probably want this for Photoshop 5.5 and older, don't bother for newer ones. I have to decide what to do on exit for these guys, probably show them and gather their parents to the current desktop. Note that the window spec identifies the PARENT of the window to be fixed.
*VWMSticky <windowspec>
Windows that should appear on all desktops and should not be drawn in the vwm.
*VWMStartWindowsOnDesktop 
  <windowspec> <deskno>
Windows that should start on a specific desktop. Idea stolen from ckVWM, of course. All desk numbers start at 1.

See also VWMKeepWindowsWithParent.
My favorite is: (one line)
*VWMStartWindowsOnDesktop #c AIM_IMessage
     (#c _Oscar_BuddyListWin)
This starts all AIM message windows on whatever desk the buddy list is on.

Triggerred Actions



These can all use ^@variable^ as listed in the reference section below.
VWMOnInit <command>
VWMOnQuit <command>
Command is run after the VWM has initialized or before it quits. If the VWM is in lsbox mode, each of these will be called only once, and the VWM window may not be set up when they are called.
VWMOnMouseOver <command>
VWMOnMouseOut <command>
Runs command when mouse enters/leaves VWM window.
VWMOnMouseOut will be delayed by the hover time.
For autohide:
VWMOnMouseOut !VWMHide
VWMOnHover <command>
VWMOnUnhover <command>
Runs commands when the mouse stops moving for a while over the VWM or starts moving again.
VWMOnHover !VWMDesk ^@md^
will switch desks on hover.
VWMOnSwitchFrom <command>
VWMOnSwitchTo <command>
Runs commands before or after switching desktops.

Combined with a background switcher, you can use something like

VWMOnSwitchTo !SwitchBackground bitmap^@dc^.bmp
to have a different background for each desk.

Or, run a different script before leaving each desk:

VWMOnSwitchFrom !DoScriptNo^@dc^

If you'd rather have a separate VWMOnSwitchTo1, VWMOnSwitchTo2, etc. for each desktop, use:

VWMOnSwitchTo ^@#d^VWMOnSwitchTo^@dc^^@#d^
There is a downside to this, you can't use ^@...^ variables in VWMOnSwitchTo# unless you use a !VWMExec, and the command must be in quotes.

VWMOnNewWindow <command>
VWMOnRemoveWindow <command>
Runs when windows are added/removed. This may include windows that are not drawn in the VWM. I recommend against openning a new window in response to these, LiteStep windows should be ok.
VWMOnTitleChange <command>
Runs a command when a window title changes. VWMDetectTitleChange must be set for this to work.
VWMOnLeftButtonDown <command>
VWMOnRightButtonDown <command>
VWMOnMiddleButtonDown <command>
VWMOnLeftButtonUp <command>
VWMOnRightButtonUp <command>
VWMOnMiddleButtonUp <command>

Runs a command when a mouse button is pressed or released over the VWM's window. These actions happen before any VWMMouse... ones.

VWMOn...ButtonDown replace VWMOnClick..., although those still work for now. If both are specified, the new ones take precedence.

VWMOnMouseMove
Executes a command when the mouse moves over the VWM. Don't do anything too lengthy here, since it will get called a lot.
VWMOnRepaint
Called when the VWM has repainted its display. This may be useful if you're using the bitmap handle from ^@ib^ to display a copy of the VWM someplace else.
VWMOnMoveWindow <command>
VWMOnSizeWindow <command>
Runs a command when a window is moved or resized.
VWMOnFlash <command>
Runs a command when a window first starts flashing. This is NOT run each time the window flashes, just once when it starts flashing. This can be used even if VWMNoShellFlash is set. !VWMFlash does not trigger this action.

If you wanted to be difficult, you could use:

VWMNoShellFlash
VWMOnFlash !VWMFlash #h ^@ch^
instead of just leaving out VWMNoShellFlash

lsBox



RabidVWM can be loaded with lsbox, version 2.72 or newer, using *ModuleHook !VWMLoadBoxHook. User data strings are currently ignored.

RabidVWM will not load rc commands from the box file.

VWMLoadInBox
Tells the vwm to wait for lsbox to load rather than creating its main window.
!VWMLoadBoxHook <box file> <handle>
Hook bang for lsbox. Do not call this manually.

Multi-Monitor



Multimonitor positioning has typically been difficult to set up, and entirely non-portable across different configurations. I have tried to allow positions on different monitors to be specified in an easy to understand way that also will let single- or multi-monitor themes usable on different multimonitor configurations.
MonitorNames <list of monitor names>

This specifies the names of the monitors on your system. These are only used in step.rc and don't have anything to do with the names in control panel. Monitor names are all listed on the same line, separated by spaces. The primary monitor is the first one, and the rest follow in order. The special name "all" is reserved and refers to the total combined workspace of all monitors.

Monitor names should begin with a letter or underscore.

If you have three monitors and the second one (according to the order given in control panel) is the primary one,

  MonitorNames pri one two
will name monitor 1 "one", monitor 2 "pri", and monitor 3 "two"

VWMOnMonitor <monitor name>
This specifies which monitor the VWM window will be drawn on. VWMPos will always specify a position on this monitor. If no monitor name is specified, it will be on the primary monitor.
VWMSwitchMonitor <monitor name>
When specified, this will tell the vwm to only switch windows that are on the named monitor. It seems a littly quirky at times, but generally works pretty well. (This does not yet adjust the desktop rectangle in the VWM.)

Reference



System colors (:###) are the same as for GetSysColor(), or:
	:0		Scrollbar color
	:1		Background color
	:2		Active titlebar color
	:3		Inactive titlebar color
	:4		Menu color
	:5		Window color
	:6		Window "frame" color?
	:7		Menu text color
	:8		Window text color
	:9		Active titlebar text color
	:10		Active window border color
	:11		Inactive window border color
	:12		Background color of MDI window
	:13		Selected item color
	:14		Selected item text color
	:15		Button/3D item color
	:16		Button/3d item shadow color
	:17		Disabled item text color
	:18		Button/3d item text color
	:19		Inactive titlebar text color
	:20		Button/3d item highlight color
   -- Windows 95 and newer --
	:21		Button/3d item dark shadow color
	:22		Button/3d item bright highlight color
	:23		Tooltip text color
	:24		Tooltip background color
	:25		undefined
   -- Windows 2000 and newer (not 98/ME?) --
	:26		"hotlight"?
	:27		Active titlebar gradient color
	:28		Inactive titlebar gradient color
   -- Windows XP and newer --
	:29		"menuhilight"?
	:30		"menubar"?
^@Variables^:
	^@wd^ desk no of the active window (usually the current desk)
	^@wh^ handle of active window
	^@wo^ handle of active window's owner
	^@wt^ title of active window
	^@wc^ class of active window
	^@wx^ x position of active window in the vwm
	^@wy^ y position of active window in the vwm
	^@wxs^ x position of active window on screen
	^@wys^ y position of active window on screen
	^@wxv^ x position of active window on virtual screen
	^@wyv^ y position of active window on virtual screen
	^@wsx^ x size of active window in the vwm
	^@wsy^ y size of active window in the vwm
	^@wsxs^ x size of active window on screen
	^@wsys^ y size of active window on screen
	^@wsxv^ x size of active window on virtual screen (same as wsxs)
	^@wsyv^ y size of active window on virtual screen (same as wsys)
Any of the ^@w...^ may also be specified as ^@w...(<windowspec>)^ to use the first window matching the given windowspec rather than the active window. For example, ^@wsxs(#c notepad)^ is the width in screen coordinates of the first notepad window found.
	^@dx^ total number of desks across
	^@dy^ total number of desks down
	^@dc^ current desktop number
	^@de^ number of first empty desk

	^@md^ desk no that the mouse is over
	^@mx^ cursor x coordinate relative to VWM window
	^@my^ cursor y coordinate relative to VWM window
	^@mxs^ cursor x coordinate relative to screen
	^@mys^ cursor y coordinate relative to screen
	^@mxv^ virtual screen x coordinate corresponding to the mouse position
	^@myv^ virtual screen y coordinate corresponding to the mouse position

	^@cc^ class of window relevant to command
	^@ct^ title of window relevant to command
	^@ch^ handle of window relevant to command
	^@cd^ desk of window relevant to command

	^@ka^ status of "ALT" key, either true or false
	^@kc^ status of control key
	^@ks^ status of shift key
	^@kw^ status of window key
	^@km^ status of context menu key
	^@kal^ status of left alt key, c, s, or w can replace a
	^@kar^ status of right alt key, c, s, or w can replace a
	
	^@ib^ handle to the vwm's screen buffer bitmap

	^@#a^ apostrophe/single quote '
	^@#c^ carrot/exponent thingy ^
	^@#d^ dollar sign $
	^@#q^ quote "
If any variable might evaluate to some special character that can be escaped with a backslash (\), you can tell RabidVWM to insert the backslash for those characters. For example, if you try to set the text of a label to a window title, any square brackets will need to be escaped to keep it from treating them special:
  !VWMExec !LabelSetText ^@ct\[]^
All characters including and following the backslash will be preceded with a backslash. So, if notepad is open with step.rc, "^@wt\aeiou^" will be "st\ep.rc - N\ot\ep\ad" (with letters this is case sensitive, so STEP would not be escaped.)
windowspec #flags
	t	match window title
	c	match window class
	d	find window on current desk only
	d1.1	only windows on desk 1,1; only numbers are valid
	d4	only windows on desk 4
	p	find top window in paint order rather than lowest hwnd #
	h	find by window handle, in decimal
	a	find all matching windows, or LAST if used in a ^@var^

Tricks



To allow dragging the VWM, use lsbox.

You can also do some clumbsy dragging with VWMOnMouseMove and the ^@mxs^ variables:
(VWMOnLeftButtonDown should have one very long line)

VWMOnLeftButtonDown !VWMAction OnMouseMove !VWMMove ^@#c^@#d^@#c^^@#c^@mxs^@#c^-^@mx^^@#c^@#d^@#c^
   ^@#c^@#d^@#c^^@#c^@mys^@#c^-^@my^^@#c^@#d^@#c^
VWMOnLeftButtonUp !VWMAction OnMouseMove 
In VWMOnLeftButtonDown: ^@#c^@#d^@#c^^@#c^@mxs^@#c^-^@mx^^@#c^@#d^@#c^ becomes ^@#d^^@mxs^-(mouse x pos)^@#d^
Then, in VWMOnMouseMove: ^@#d^^@mxs^-(mouse x pos)^@#d^ becomes $(new mouse pos, rel to screen)-(mouse pos when dragging started, rel to VWM)$

Switch on hover with VWMOnHover !VWMDesk ^@md^
Miniwindow bitmaps can be very small when used with a border, I usually use 9x9 pixels. You can get the window class of the active window with !VWMExec !alert "^@wc^"
Use VWMOnMouseOut !VWMHide for autohide. Make sure you have a way to show it again! To test a flash bitmap, try VWMOnHover !vwmflash #h ^@ch^
Use ^@ch^ to tell whether the mouse is over a window. It will be 0 if it's not. Alternatively, test ^@ct^ against an empty string. If you want RabidVWM to use the same confusing multi-monitor coordinates as other modules, set VWMOnMonitor to all.
tooltips, using label.dll:
(note: VWMOnHover lines have been broken for the sake of page layout.)
   labels vwmtiplabel
   vwmtiplabelstarthidden
   vwmtiplabelheight 16
   ; may want to dynamically size it with a script or something
   vwmtiplabelwidth 128
   vwmtiplabelonleftclick !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]
   vwmtiplabelonrightclick !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]
   vwmtiplabelonmouseleave !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]
   ; set the label's appearance however you want

   ; set the title, move to cursor, pop it up over the vwm
   VWMOnHover !execute [!vwmtiplabelsettext "^@ct\[]^"][!vwmtiplabelmove ^@mxs^ ^@mys^]
         [!vwmtiplabelshow][!vwmtipLabelAlwaysOnTop]
   ; hide it and reset z-order 
   ; (need to keep changing z order to pop up over always-on-top vwm)
   VWMOnUnhover !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]
This does pop up the tooltip if you hover over empty space, you should be able to fix that with a script module.
A better version might use mzscript, like so:
   VWMOnHover !execute [!varset vwmtipx ^@mxs^][!varset vwmtipy ^@mys^]
         [!varset vwmtiptitle "^@ct\[]^"][!dovwmtip]
   VWMOnUnhover !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]
   *script var vwmtiptitle ""
   *script var vwmtipx 0
   *script var vwmtipy 0
   *script bang !dovwmtip
   *script gotoif ("%[vwmtiptitle]" = "") nope
   ; split window titles that are "doc - app" to "doc "
   *script exec !setlistsep -
   *script exec !vwmtiplabelsettext "%[vwmtiptitle:]"
   ; don't pop up directly under cursor, that's unfriendly
   *script exec !varadd vwmtipx 1
   *script exec !vwmtiplabelmove %[vwmtipx] %[vwmtipy]
   *script exec !vwmtiplabelshow
   *script exec !vwmtiplabelalwaysontop
   *script exec !setlistsep :
   *script label nope
   *script ~bang
To change a 4x1 (horizontal) VWM into a 1x4 (vertical) VWM:
   !VWMSetDesks 4 4
   !VWMMoveApp 1 2 #ad2.1
   !VWMMoveApp 1 3 #ad3.1
   !VWMMoveApp 1 4 #ad4.1
   !VWMSetDesks 1 4
You'll probably want to !VWMSize after that.

Frustrating, Annoying Questions



How do I find a window's class name?

Execute the following in LSXCommand, or bind it to a hotkey, to find the class of the active window:

  !VWMExec !alert "^@wc^"
You can also find the class for a window from its title:
  !VWMExec !alert "^@wc(#t insert title here)^"

Winamp 3.0's class is BaseWindow_RootWnd

Why do maximized windows keep moving to different desktops?

If you're using Windows XP with XP styles (ie, not using the Windows 2000 look), maximized windows will sometimes follow when you move to a desktop down/left. This is a known problem with LiteStep VWMs and XP styles, disable XP styles and everything should work.

If you aren't using XP styles, I don't know what the problem is. (actually I don't know what the problem is with XP styles or I'd try to fix it...) Some programs just do this, I suggest loading them in the last desktop if possible.

How do I get a different wallpaper for each desktop?

RabidVWM does not directly support changing the wallpaper, however you can easily do this in combination with a wallpaper changing module.

Wallpaper changing modules you might try: (I haven't tested any of them)

If you name your wallpapers something1.bmp, something2.bmp, etc:
  VWMOnSwitchTo !wallpaper something^@dc^.bmp
If you name them something else:
  Desk1Paper "c:\path\wallpaper1.bmp"
  Desk2Paper "c:\somewhere\else\another.bmp"
  ; etc., for each desktop
  VWMOnSwitchTo !wallpaper "^@#d^Desk^@dc^Paper^@#d^"

Known bugs and notes



Unsupported VWM Commands
VWMNoMove
RabidVWM does not support dragging the VWM around with the mouse, so this command is unnecessary. If you want to be able to drag it, use LsBox.
VWMOnSwitchTo#

This can be emulated with VWMOnSwitchTo ^@#d^VWMOnSwitchTo^@dc^^@#d^, which will map to $VWMOnSwitchTo1$, $VWMOnSwitchTo2$, etc.

VWMFlashOnTitleChange

This poorly thought out command was my own doing. Now it's gone.

If you're a psycho little pervert and want this behavior, use: VWMOnTitleChange !VWMFlash #h ^@ch^

Drag and Drop

You can drop a number of different kinds of things onto the VWM:

  • files (incl. special objects like Control Panel)
  • URLs
  • raw text
In all cases, the VWM will switch to the desktop which you dropped the crud over and execute it.

Some types of files don't quite open right, folders will open and then complain that they couldn't. (this is a problem in ShellExecuteEx, if anyone knows how to get around this. must use PIDLs) Control Panel applets don't seem to work right either.

Raw text will be executed, line by line, by LiteStep. This means you can drop !bang commands onto the vwm. Unfortunately, some programs seem to let you drag text, but either they don't do it right, or they do it in a way that I didn't anticipate.

In addition to this, you also get a "drag and hover" feature. Drag a file over the VWM and hover over a desk with a program to drop it on. The VWM will switch to that desk, then you can continue to drag the file over the program you want to drop it on and go. Fun for the whole family!

Known Problems

If a window somehow gets "lost": First try switching to that window, it should come back, otherwise try !VWMGatherLost. If that doesn't work, use Alt-Tab to switch to that window, then press Alt-Space. If the window was maximized, select "Restore" (press R if there's no menu) and it will reappear, otherwise select "Move" (or press M), press any arrow key on the keyboard, then move the mouse. Click to drop the window. (This trick should work with ANY vwm.)

If a *Fix window or toolbar gets lost... well you're screwed for now, deal. There's no easy way for me to distinguish between that and a window that shouldn't be shown at all. (depending on conditions...)

  • The background doesn't always update properly when you change it. This seems to be a bug in the Windows desktop control panel applet, if you change the screen saver at the same time (even changing it and changing it back is enough), it will work. If it really bothers you, there is a !VWMRefreshBack command, but I don't really feel motivated to document it more than that.
  • Sometimes programs will show up in the VWM but not on the screen when they first start. I don't know why this is happening, but it seems to happen mostly with programs that have splash screens. In any case, the window will usually show up if you click where it should be, or switch to the desktop its on. (even if you're already on that desktop)
  • Apparently sometimes windows get lost when Photoshop is open and you recycle. Haven't tracked this down yet.
  • XP-styled windows are sometimes a little sticky. (I blame the eye-candy, har har) I have no idea what would do this, and I have no intention of buying XP, so someone else will have to fix this. (or point me in the right direction) Turning off the styling is reported to work, and things like WindowBlinds do not have this problem. (actually, MSVC seems to do the same thing, and I don't know why that is either.)

Changes



1.1.1
  • removed VWMConfigFile and code to read from box files
  • turned on code to break from loops in paint order to "fix" freeze bug
  • floating tool windows should now "re-home" to their parent when you switch desktops (eg, if you open photoshop, then move it to a different desktop, the tool palettes should now learn to be on the new desktop)
  • added ^@#n^ for newline
  • added VWMOnLeft/Right/MiddleButtonUp/Down. Down actions are the same as VWMOnClickLeft/Right/Middle, which may change in the future
  • VWMFocusLast will not change focus when a window is destroyed (thanks deuce)
  • implemented LM_GETDESKTOPOF
  • drag&drop will now work when loaded threaded (thanks faithful and the flying monkeys)
  • fixed !vwmup/down/left/right with VWMNoWrap (thanks smurth)
  • SwitchOnAnyFocus now only goes off when focus changes (thanks ckvwm)
  • fixed windows randomly getting "*fixed"
  • a bit of code cleanup
1.01
  • added ^@wo^ for window's owner's handle
  • added VWMKeepWindowsWithParent (thx Paradox)
  • fixed continually trying to gather windows that just won't budge
  • fixed continually trying to set focus on empty desks
  • (thx uggi for the logs where I noticed those)
  • stole some flags from popup2 to fix starting idlists in drag&drop
    (now folders and control panel applets work just fine)
1.0 final
  • changed to use more uniform names (like SkinBox):
    changed !VWMResize to !VWMSize
    changed !VWMSetAction to !VWMAction
    removed the "On" part of action names in !VWMAction
  • fixed missing center of image problem
  • fixed: should no longer crash on startup on win95 - *and* actually tested it on win95
  • added VWMOnRepaint (to go with ^@ib^, which I also added somewhere in here)
  • fixed VWMTransparent crashing without VWMAlwaysOnTop
  • fixed Bersirc stickiness (mostly)
  • added VWMOnMouseMove
  • fixed ^@mx^,^@wx^,^@cx^ (was returning y coord)
  • fixed ^@wx^,^@wy^,^@wsx^,etc (were causing command to fail when no window was given)
  • fixed !LsBoxHook to not ignore quotes around box name
  • fixed sticky windows causing SwitchOnAnyFocus to switch desks
  • assorted source code cleanup (no functional change)
  • fixed FocusTop/Last while in a box
  • fixed !VWMSetAction not working after action had been cleared (or never set)
  • taking way to long to release this
  • added VWMFlashCount
  • fixed desk backgrounds "sliding" with solid colors
  • using ShowWindowAsync if the window seems Hung to keep it from freezing the VWM too
  • added real layered window transparency (VWMTransparent)
  • now using ParseCoordinate only if it's available in lsapi otherwise it uses its own internal version
    Of course the internal version can do percents +/- somthing and relative amounts, so maybe I should always use the internal version? but then you never know when they'll add something flashy to the core that you want to use...
  • fixed VWMNoWrap so it doesn't go past the edges
  • reduced start-up time with VWMUseFakeTrans
  • added VWMRefreshTime
  • changed ShowWindowAsync to ShowWindow to fix improper drawing of windows with VWMHidetask
  • fixed ForEachMonitor not working on single monitor systems (for bg image)
  • fixed Photoshop palettes being sticky, turns out it was my fault after all
1.0 beta 5
  • added ^@#...^ to escape special chars like $
  • added \ to escape special chars in titles and such (see tooltip example)
  • added VWMBevelWidth
  • added VWMOnFlash
  • fixed bug causing the module to freeze on repaint (usually start up) if there were no windows for it to draw (fixed a few hours before it was reported :)
  • heavily modified desktop background painter (for transparency and .snapshots) so it's accurate for Windows' brain dead multiple monitor settings (I mean what were they thinking with how "stretch" works?)
  • made *VWMIgnoreTitleChange apply to VWMOnTitleChange, since it wasn't doing anything else.
  • hopefully reduced memory usage
  • fixed miniwindows not updating properly on a !VWMSize
  • fixed a bug preventing focus from being set when switching desks from a bang command (I suspect there may be another, but it works for me)
  • fixed ^@k...^ key state vars, though I'm still not quite sure they're right
  • added optional monitor parameter to !VWMMove
  • fixed the size of the "all" monitor
1.0 beta 4
  • converted docs to html for happy linking and stuff
  • new drag&drop handling, should now work with special folders and urls as well as some other things
  • added drag&hover desk switch
  • actually got VWMSwitchMonitor to work (props to blkhawk for the idea)
  • slightly reduced idle cpu usage (in theory, at least)
  • fixed minimized windows becoming hopelessly lost with VWMHideTaskOnSwitch
  • You can now click and hold on a window's title (or drag it) while switching desks and it will be semi-sticky. So you can drag a window and switch with the keyboard like in ckVWM and others.
  • added !VWMSticky at xnowfall's suggestion and adjusted !VWMFlash to take the same parameters
  • removed VWMFlashOnTitleChange (What was I thinking?)
    Use VWMOnTitleChange !VWMFlash #h ^@wh^ instead if you really want it.
  • made VWMFocusTop ignore "always on top" windows
  • added possibility of using window handle in hex to windowspec, using C 0x... format, for no good reason at all.
1.0 beta 3.1
  • fixed desktop bitmap memory leak
  • tweaked defaults a bit
1.0 beta 3
  • removed imports from user32 that did not exist in win95 (incl multimon)
  • fixed snapshot with slowly drawing windows and with dragging off the current desk
  • fixed snapshots for overlapping windows and "half off the screen" windows
  • fixed multimonitor so it will probably work on single monitor systems (but not win95)
  • added non-functional VWMSwitchMonitor
  • added MonitorNames and VWMOnMonitor
  • fixed window flashing, still won't work in ls builds after 2001-11-19 because it's broken in the shell (COM interface limitation?)
  • snapshots for windows are not taken while dragging in vwm
  • fixed position of monitors to the left or above the primary monitor
  • fixed popups losing focus on empty desks
1.0 beta 2
  • fixed problems restoring previously maximized windows from minimized state
  • added snapshot mode for select bitmap
  • removed requirement of VWMUseTransBlt for back alpha to work
    You still need to set VWMUseFakeTrans.
  • fixed .snapshot backs not showing up without background transparency
  • fixed not-on-top lsbox problems. thanks blkhawk
    This also affected task tiles in some circumstances.
1.0 beta 1
  • added VWMBackBevel and VWMSelBevel
  • added .snapshot mode for background, also thanks to that code from label
  • added new color settings, part 1
  • added alpha settings, should work in all but win95
  • tried to add multimonitor support, but I can't test it
  • fake transparency is now flickerless thanks to code borrowed from Maduin's label
  • tried to be a little more forceful at switching focus when changing desks (this fixes problems I was having, esp with msvc)
  • fixed wrong window gaining focus on window close
  • added VWMNoShellFlash and VWMFlashOnTitleChange
  • added VWMConstantUpdate
  • fixed problems with desks shifting around with FocusXXX & SwitchOnAnyFocus
  • added window size and position ^@vars^
  • hopefully fixed problems with refresh ∓ lsbox
  • fixed windows jumping across the screen while dragging off the edge
  • added OnMoveWindow and OnSizeWindow
  • put !left/right/up/down back in to work with lsdistro (grr)
  • added !VWMToggleHideTask
  • fixed gathering on quit with VWMHideTaskOnSwitch
  • added proper window flashing, just like in the movies (thanks Chaku, even if you're unaware that you've helped me:)
  • fixed .snapshot with tiny windows
  • improved state change detection
1.0 alpha 6.1 and prior
  • Secret, terrible things that men only dare to consider in nightmares.
  • VWM was bitten by a rabid cow

Technically, VWM stands for Virtual Window Manager, but since this module neither manages virtual windows, nor managers actual windows in a virtual way, I don't think that's really appropriate. So let's just say VWM stands for Virtual Desktop Manager, as this does in fact manage virtual desktops. That W in the middle is actually just a D that looks like a W. Ds are sneaky like that, the little freaks. Now go away and stop reading this.

-----



This module uses code from jugg's tasks (the infamous getIconFromWindow, with its endless legacy) and Maduin's label (two functions, one of which has been ripped apart and put back together in a hideous, hideous way). The rest of it's ALL MINE, except for the bits that aren't. SO THERE!

  .--------.-----.-----.
  |        |  _  |  _  |__
  |__|__|__|_____|_____|__|

Index



Bang CommandsStep Commands
  • !VWMAction
  • !VWMDesk
  • !VWMDown
  • !VWMExec
  • !VWMFlash
  • !VWMGather
  • !VWMGatherLost
  • !VWMHide
  • !VWMLeft
  • !VWMMove
  • !VWMMoveApp
  • !VWMOpen
  • !VWMReset
  • !VWMRight
  • !VWMSetDesks
  • !VWMShow
  • !VWMSize
  • !VWMSticky
  • !VWMToggle
  • !VWMToggleOnTop
  • !VWMToggleHideTask
  • !VWMUp
  • *VWMFix
  • *VWMIgnoreTitleChange
  • *VWMStartWindowsOnDesktop
  • *VWMSticky
  • MonitorNames
  • VWMAlwaysOnTop
  • VWMBackAlpha
  • VWMBackBevel
  • VWMBackBmp
  • VWMBackBorder
  • VWMBackBorderColor
  • VWMBackColor
  • VWMBackDarkColor
  • VWMBackLightColor
  • VWMBackTile
  • VWMBevel
  • VWMBevelWidth
  • VWMConstantUpdate
  • VWMDeskBorder
  • VWMDesks
  • VWMDeskSpacing
  • VWMDesksX
  • VWMDesksY
  • VWMDetectTitleChange
  • VWMFlashAlpha
  • VWMFlashBevel
  • VWMFlashBmp
  • VWMFlashBorder
  • VWMFlashBorderColor
  • VWMFlashColor
  • VWMFlashCount
  • VWMFlashDarkColor
  • VWMFlashLightColor
  • VWMFlashOnTitleChange
  • VWMFlashTile
  • VWMFlashTitleBmp
  • VWMFlashTitleBorder
  • VWMFlashTitleTile
  • VWMFocusLast
  • VWMFocusTop
  • VWMForceIconBorderTop
  • VWMHeight
  • VWMHidden
  • VWMHideTaskOnSwitch
  • VWMHoverTime
  • VWMIconBorder
  • VWMIconSize
  • VWMInitialDesk
  • VWMKeepWindowsWithParent
  • VWMLoadInBox
  • VWMMinIconSize
  • VWMMouseLeft
  • VWMMouseMiddle
  • VWMMouseRight
  • VWMNoBorder
  • VWMNoGathering
  • VWMNoShellFlash
  • VWMNoShow
  • VWMNoSwitchOnFocus
  • VWMNoWindows
  • VWMNoWrap
  • VWMOnFlash
  • VWMOnHover
  • VWMOnInit
  • VWMOnLeftButtonDown
  • VWMOnLeftButtonUp
  • VWMOnMiddleButtonDown
  • VWMOnMiddleButtonUp
  • VWMOnMonitor
  • VWMOnMouseMove
  • VWMOnMouseOut
  • VWMOnMouseOver
  • VWMOnMoveWindow
  • VWMOnNewWindow
  • VWMOnQuit
  • VWMOnRemoveWindow
  • VWMOnRepaint
  • VWMOnRightButtonDown
  • VWMOnRightButtonUp
  • VWMOnSizeWindow
  • VWMOnSwitchFrom
  • VWMOnSwitchTo
  • VWMOnTitleChange
  • VWMOnUnhover
  • VWMPos
  • VWMRefreshTime
  • VWMReturnToFirstScreen
  • VWMScaleIconToFit
  • VWMSelAlpha
  • VWMSelBevel
  • VWMSelBmp
  • VWMSelBorder
  • VWMSelBorderColor
  • VWMSelColor
  • VWMSelDarkColor
  • VWMSelExpand
  • VWMSelLightColor
  • VWMSelTile
  • VWMShowIcons
  • VWMSize
  • VWMSnapWindowOnDrag
  • VWMSwitchOnAnyFocus
  • VWMTitlebarBmp
  • VWMTitlebarBorder
  • VWMTitlebarHeight
  • VWMTitlebarMod
  • VWMTitlebars
  • VWMTitlebarTile
  • VWMTitleBevel
  • VWMTitleBorderColor
  • VWMTitleColor
  • VWMTitleDarkColor
  • VWMTitleForTitle
  • VWMTitleLightColor
  • VWMTransparent
  • VWMUseFakeTrans
  • VWMUseTransBlt
  • VWMWidth
  • VWMWinAlpha
  • VWMWinBevel
  • VWMWinBmp
  • VWMWinBorder
  • VWMWinBorderColor
  • VWMWinColor
  • VWMWinDarkColor
  • VWMWinLightColor
  • VWMWinTile
  • VWMx
  • VWMy
  • Tables
  • colors, system colors
  • positions
  • .snapshot levels
  • ^@variables^
  • window specifiers