_______ __ __ __ ___ ___ ___ ___ ___ ___ | _ \---.-. |--.__|--| | Y | Y | Y | |. l / _ | _ | | _ |. | |. | |. | |. _ 1___._|_____|__|_____|. | |. / \ |. \_/ | |: | | |: 1 |: |: | | |::.|:. | v1.2.0 \:.. ./|::.|:. |::.|:. | `--- ---' `---' `--- ---'--- ---'
More complicated than your grandma's VWM!
Comments & Complaints to RabidCow.
|
|
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 screenUsing 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 | |
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. |
VWMSelExpand <border size> |
![]() |
VWMDeskBorder <border size> |
![]() |
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. |
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. |
VWMLayers |
Specifies the order in which the layers that compose the display are drawn:
|
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:
...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> |
![]() |
...BorderColor <color> |
![]() |
...LightColor <color> |
![]() |
...DarkColor <color> |
![]() |
...Bevel [<amount>] |
![]() 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> |
![]() |
VWMNoBorder |
Doesn't draw borders around desks or miniwindows. If
VWMBevel is specified miniwindows still get a bevelled border.
|
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.
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 insaneCPU 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. 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. This can be set to ".snapshot" for snapshot mode.
|
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.
|
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.
|
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.
|
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. |
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 :) |
Anywhere you see <deskno> ,
you can use:
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 NotepadTo 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
You can put |
!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:
|
!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 .
|
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 classIf 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. |
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 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
|
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
|
RabidVWM can be loaded with lsbox, version 2.72 or newer, using
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. |
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 " 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 twowill 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.) |
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^ |
Use ckhotspots to switch desktops when you bang against the edges of the screen: *NetLoadModule ckhotspots-2.3.3 ckHotspotsVersion1Style true *ckHotspot 0 1 1 -2 !VWMLeft !none *ckHotspot 1 0 -2 1 !VWMUp !none *ckHotspot -1 1 1 -2 !VWMRight !none *ckHotspot 1 -1 -2 1 !VWMDown !none Thanks, Mr. Underhill, for pointing out just how simple it is. :) But this is seriously driving me crazy... |
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 4You'll probably want to !VWMSize after that.
|
Auto-hide the VWM:
*ckHotspot $VWMX$ $VWMY$ $VWMWidth$ $VWMHeight$ !VWMShow !VWMHide |
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^" |
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 .
| |
Pretty tooltips with xlabel:
*NetLoadModule xlabellight-3.2.6 *label VWMToolTip VWMToolTipSolidColors FFFFE1 000000 VWMToolTipSolidBevelSize 1 VWMToolTipX 0 VWMToolTipY 0 VWMToolTipHeight 17 VWMToolTipWidth $VWMToolTipHeight$ VWMToolTipAutoWidthMode left VWMToolTipAlwaysOnTop true VWMToolTipStartHidden true VWMToolTipGhosted true VWMToolTipNoEscapeSequence true VWMToolTipNoTextSplit true VWMToolTipFontColor 000000 VWMToolTipFontHeight 15 ; the next two lines should be one VWMOnHover !execute [!LabelMove VWMToolTip ^@mxs^ ^@#d^^@mys^-$VWMToolTipHeight$^@#d^] [!LabelSetText VWMToolTip '(^@md^) ^@ct^'][!LabelShow VWMToolTip] VWMOnUnhover !LabelHide VWMToolTipAnd if they're not pretty enough, they're fully customizeable. | |
To allow dragging the VWM, use lsbox. You can also do some clumbsy dragging with
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 OnMouseMoveIn 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)$
|
VWMHideTaskOnSwitch
(or others) not working?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^"To bind to a hotkey, put this in your personal.rc: *Hotkey CTRL+ALT X !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. |
Why is VWMHideTaskOnSwitch (or others) not working?
|
A number of VWM settings are configured in your personal.rc by the OTS2 installer. This prevents themes from randomly turning annoying things on and leaving you to guess at how the VWM will behave with each new theme. Attempting to change any of those settings from theme.rc will just be ignored. So go check personal.rc if it has no effect at all. (If it does something, but not the right thing, that's probably different.) |
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^.bmpIf 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^" |
How do I make it switch desktops when I move the mouse to the edge of the screen? |
Use ckHotspots, as described in the Tricks section. |
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
|
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:
|
Drag and Drop | |
You can drop a number of different kinds of things onto the VWM:
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
If a | |
|
1.2.0 |
|
1.1.1 |
|
1.01 |
|
1.0 final |
|
1.0 beta 5 |
|
1.0 beta 4 |
|
1.0 beta 3.1 |
|
1.0 beta 3 |
|
1.0 beta 2 |
|
1.0 beta 1 |
|
1.0 alpha 6.1 and prior |
|
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!
.--------.-----.-----. | | _ | _ |__ |__|__|__|_____|_____|__|