IS:WindowSnapper

From Lavish Software Wiki
Jump to navigation Jump to search
A 5-box crew in WoW showing WindowSnapper and ClickBoxer -- click the image to see full pic or see this video to see WindowSnapper in action with this team

What is WindowSnapper?

Lord of the Rings Online, EverQuest II and World of Warcraft with a WindowSnapper autolayout

WindowSnapper is an open source Picture-in-Picture solution for Inner Space. Although configuration is not simplified by this particular solution, it does make instant Picture-in-Picture easy.

Future versions or custom modifications could include an in-game user interface window to help with configuration.

ISBoxer Suite

WindowSnapper is part of the ISBoxer Suite, which also includes Repeater and KeyMapper, as well as the configuration utility ISBoxer Toolkit. The best way to enjoy WindowSnapper is to use the ISBoxer Toolkit! See the ISBoxer Suite page for more information and downloads.

Features

WindowSnapper does these things on a per session basis
  • Automatically instantly resizes and positions the window, including always on top) when it is no longer the active foreground window (the window "snaps to" this position and back to what it was).
  • Size and position of the switched window is configurable both during run-time and when launched
  • CTRL+ALT+P hotkey (configurable) causes snapper to ignore the next time the window is sent to the background (press again to change your mind)
  • CTRL+ALT+O hotkey (configurable) causes snapper to "snap to" with a border for easy dragging and resizing the snap to position. Press again when finished to complete the process and store the new position.
  • Provides an instant rollover zoom feature for snapped windows (video of rollover feature) with an optional rollup/rolldown over time effect (video of rollover with effect]) -- feature can be disabled, and the zoom level can be configured as well
  • Includes an autolayout (EzMode!) feature that can automatically dock snapped windows to an inside or outside edge of the screen in popular form (outside is for dual monitor setups, specifically where dragging the window to another monitor will not provide a performance hit, such as with a single video card on Windows Vista). This feature covers the vast majority of WindowSnapper setups!
  • Optionally provides wheelswitcher functionality, allowing you to hold down a key (such as Ctrl) and use the mouse wheel to quickly switch through windows
PiPSqueak, added 2008-11-18, can additionally do the following
  • "Squeaks" the first window into the activated secondary window's PiP slot, for a "no holes" setup
  • Provides a method to set up any number of PiP window regions
  • Can automatically layout a given number of WindowSnapper windows (using AutoLayout), without having to do anything in each session
  • Overrides automatic snapping functionality of WindowSnapper, (much like the Ignore feature activated by CTRL+ALT+P) such that clicking on a non-game window will not cause the window to go PiP (there ideally isn't room for it to do so anyway, since the PiP slots should all be taken)

How fast is "Instant"?

See this youtube video for a demonstration

Installing WindowSnapper

WindowSnapper is part of the ISBoxer Suite, which also includes Repeater and KeyMapper, as well as the configuration utility ISBoxer Toolkit. The best way to enjoy WindowSnapper is to use the ISBoxer Toolkit! See the ISBoxer Suite page for more information and downloads.

If you wish to download WindowSnapper alone, however, here you go:

  1. Make sure you have Inner Space build 4759 or later (you can hover your mouse over the icon in the system tray to find out)
  2. Download the latest version: windowsnapper-20090118.zip
  3. Extract to the Scripts folder of your Inner Space installation

Launching WindowSnapper

Ez-Mode with AutoLayout

Per Inner Space session you want to snap, enter the following command in the console
run autolayout
AutoLayout will launch WindowSnapper for you, taking care of -pos and -size for you.

That's it! Go play! If you don't like the default AutoLayout, it is easy to try another AutoLayout. See the AutoLayout command below for syntax and examples.

Ez-Mode with AutoLayout and PiPSqueak

In the Uplink (the main program), enter the following command in the console
run autolayout
AutoLayout will launch PiPSqueak for you, taking care of positioning and sizing for you for 5 sessions (1 main window, 4 PiP windows)

If you've got a different number of windows, you can tell AutoLayout how many to plan for, like this:

run autolayout 4

That's it! Go play! If you don't like the default AutoLayout, it is easy to try another AutoLayout. See the AutoLayout command below for syntax and examples.

Advanced

Per Inner Space session you want to snap, enter the following command in the console
run windowsnapper
This will spit out the following information
WindowSnapper: Window will snap to 800,0 with size 320x240
To change snap position, enter command (e.g.) snappos 123,456
To change snap size, enter command (e.g.) snapsize 640x480
WindowSnapper also accepts -size 640x480 and -pos 123,456 as parameters, such as
run windowsnapper -size 640x480 -pos 123,456
To launch WindowSnapper with a custom snap-to size, pass a -size parameter as follows (180x120 is only an example size)
run windowsnapper -size 180x120
To launch WindowSnapper with a custom snap-to position, pass a -pos parameter as follows (100,100 is only an example position)
run windowsnapper -pos 100,100
To launch WindowSnapper with both a custom snap-to position and size, pass both parameters as follows
run windowsnapper -size 180x120 -pos 100,100

WindowSnapper also takes any of the other parameters used by the SnapSet command described below.

Changing configuration during run-time

To change the snap-to position while WindowSnapper is running, use the snappos command as follows
snappos 100,100
To change the snap-to size while WindowSnapper is running, use the snapsize command as follows
snapsize 180x120

Using AutoLayout

The AutoLayout feature of WindowSnapper is a snap to use! Simply launch WindowSnapper without parameters (run windowsnapper) -- or with parameters configuring rollover, wheelswitcher, or hotkeys if you prefer -- and then use the autolayout command (just type autolayout in the console and hit enter). That's pretty much it!

When used without parameters, AutoLayout will detect whether you have a widescreen, or standard screen ratio, and line snapped windows along the bottom (widescreen) or right (standard screen) edges of the screen, with enough room for 5 windows. If you want to change the number of windows, or the edge of the screen, it is very easy to specify! See the AutoLayout command below for syntax and examples.

Keybinds

Keybinds are always configurable, but by default, the following keybinds are provided
  • CTRL+ALT+P: Ignore the next time this window goes inactive, so as to not "snap to". This keeps the window in full size mode.
  • CTRL+ALT+O: Toggle draggable mode, allowing you to configure the snap-to size and position by dragging with the mouse.

Commands

SnapSet

Syntax
SnapSet [OPTIONS ...]

Options may be one or more of the following:

  • -size #x#: Specify the snap-to size. Example: -size 320x240
  • -pos #,#: Specify the snap-to position. Example: -pos 800,0
  • -alwaysontop: Enable Always On Top for snapped windows (default)
  • -noalwaysontop: Disable Always On Top for snapped windows
  • -norollover: Disable RollOver functionality
  • -rollover: Enable RollOver functionality (default)
  • -rolloverscale #.##: Specify the zoom level for RollOver functionality. For example, 1.5 means a 50% increase (150% scale), or 2 means a 100% increase (200% scale). Example: -rolloverscale 1.5. Default is 1.5.
  • -rolloverframes #: Specify the number of frames (as in, frames per second) to take scaling the window up or down (for rollup/rolldown over time). Example: -rolloverframes 10. Default is 1.
  • -dragkey <combo>: Specify a key combination to enable draggable mode. Example: -dragkey "CTRL+ALT+O". Default is CTRL+ALT+O.
  • -ignorekey <combo>: Specify a key combination to ignore the next window deactivation (so the window will not snap to, when you switch away). Example: -dragkey "CTRL+ALT+P". Default is CTRL+ALT+P.
  • -wheelswitcher <key>: Specify a key (not a combination) that, when held, will allow you to scroll the mouse wheel to switch sessions. Example: -wheelswitcher Ctrl.
  • -nowheelswitcher: Disable wheelswitcher functionality (default)
  • -ignore: Ignores window deactivation, preventing snapping from occuring
  • -noignore: Does not ignore or no longer ignores window deactivation, which would prevent snapping from occuring (default)
  • -autotoggleignore: Automatically toggles Ignore back off (snapping back on) next time the window is activated (default)
  • -noautotoggleignore: No longer automatically toggles Ignore back off (snapping back on) when the window is activated

SnapPos

Syntax
SnapPos <X>,<Y>
Examples
snappos 100,100
snappos 800,0

SnapSize

Syntax
SnapSize <Width>x<Height>
Examples
snapsize 320x240
snapsize 640x480

SnapDrag

Controls the draggable mode for this session. When in draggable mode, the snap-to size and position will be configurable by simply dragging the window.

Syntax
SnapDrag on|off|toggle
Examples
snapdrag on
snapdrag off
snapdrag toggle

SnapDock

Docks the snap-to position to the top, bottom, left or right of the current window's snap-to position. The snap-to size will be copied exactly.

Syntax: SnapDock <other session name> top|bottom|left|right

Examples
snapdock is2 bottom
snapdock is3 right
snapdock is4 left
snapdock is5 top

AutoLayout

Positions the snap-to position for this session in its rightful position according to an automatic layout format

Syntax 1
AutoLayout

Used without parameters, AutoLayout will auto-detect which edge of the screen will best fit, for 5 snapped windows. For widescreen, this will be the bottom edge. For standard screen, this will be the right edge.

Syntax 2
AutoLayout [#] [outer] <EDGE>
Parameters
  • # - Optional. Number of windows to make room for (the lower the number, the larger the screens, so if you only want 2, you might also try leaving this default or 4 or so, depending on how large you want the windows). If this parameter is not provided, defaults to 5. Ideally your desktop resolution should be evenly divisible by this number.
  • outer - Optional. If "outer" is specified, windows will be lined on the outside of the monitor instead of making room on the inside (used for dual monitor setups that allow moving the window between monitors, without performance hit -- e.g. single video card, on Windows Vista or certain XP setups)
  • EDGE - Required. Can be left, right, top, or bottom.
Examples
autolayout 5 left
autolayout 4 right
autolayout bottom
autolayout outer right
autolayout 6 top

Manual PiPSqueak configuration

To manually launch and configure PiPSqueak without AutoLayout, first launch PiPSqueak in the Uplink (the main program) -- before launching any game windows -- by right-clicking the icon in the system tray, and selecting "Console". Then, in the console window that comes up in the Uplink, enter the following command:

run pipsqueak

Nothing should appear to happen if you did this right.

Next, use the "pipsqueak" command to configure each of the slots, including the main window slot (which is number 1). The syntax to do so is as follows:

pipsqueak -slot # x,y,width,height
Example
pipsqueak -slot 1 0,0,1680,840

When setting a slot, you will see output. The example above should give the following output:

Slot 1 is now 0,0,1680,840

You can set as many slots as you want with 1 command by adding another -slot parameter in the same format, like so:

pipsqueak -slot 1 0,0,1680,840 -slot 2 0,840,420,210

The following command will set up 4 PiP slots along the bottom of the screen, with a relatively large main slot:

pipsqueak -slot 1 0,0,1680,840 -slot 2 0,840,420,210 -slot 3 420,840,420,210 -slot 4 840,840,420,210 -slot 5 1260,840,420,210

This gives the following output, as expected:

Slot 1 is now 0,0,1680,840
Slot 2 is now 0,840,420,210
Slot 3 is now 420,840,420,210
Slot 4 is now 840,840,420,210
Slot 5 is now 1260,840,420,210

This is the same configuration as doing run autolayout 5 bottom in the Uplink with a 1680x1050 resolution.

After setting up each of the slots, all that's left to do is launch the game windows -- you will not need to launch WindowSnapper in each window (and if you try, it will say it's already running!). If you need to supply additional configuration to WindowSnapper, use the SnapSet command in each window.

Release history

  • 2009-01-18 (To download this specific version: windowsnapper-20090118.zip)
    • Fixed bug with -ignorekey when passed to the WindowSnapper script itself (as opposed to snapset command)
  • 2009-01-17 (To download this specific version: windowsnapper-20090117.zip)
    • PiPSqueak script now accepts WindowSnapper parameters to pass to sessions at launch (now supporting noalwaysontop, norollover, etc)
  • 2008-12-22 (To download this specific version: windowsnapper-20081222.zip)
    • Fixed another problem with cursor position scaling
  • 2008-12-20 (To download this specific version: windowsnapper-20081220.zip)
    • Fixed a problem with cursor position scaling
  • 2008-12-14 (To download this specific version: windowsnapper-20081214.zip)
    • Added options to SnapSet command and WindowSnapper script
      • -alwaysontop: Enable Always On Top for snapped windows (default)
      • -noalwaysontop: Disable Always On Top for snapped windows
  • 2008-11-18 (To download this specific version: windowsnapper-20081118.zip)
    • WindowSnapper windows will now auto-snap when WindowSnapper is launched, if the window is inactive (not the active window)
    • Added PiPSqueak script, which would be run in the Uplink (the main program). PiPSqueak will "squeak" session 1 into an empty PiP slot, for a "no holes" configuration. With PiPSqueak running, newly launched sessions will automatically run WindowSnapper and move into position
    • AutoLayout can now be run in the Uplink (the main program) to launch PiPSqueak with automatic slot management in the usual AutoLayout style, except that using a 5 session count will make room for 4 PiP windows
    • Added options to SnapSet command and WindowSnapper script
      • -pipsqueak: Use PiPSqueak
      • -nopipsqueak: Do not use PiPSqueak (default)
  • 2008-11-16 (To download this specific version: windowsnapper-20081116.zip)
    • Fixed WheelSwitcher functionality
    • Added options to SnapSet command and WindowSnapper script
      • -ignore: Ignores window deactivation, preventing snapping from occuring
      • -noignore: Does not ignore or no longer ignores window deactivation, which would prevent snapping from occuring (default)
      • -autotoggleignore: Automatically toggles Ignore back off (snapping back on) next time the window is activated (default)
      • -noautotoggleignore: No longer automatically toggles Ignore back off (snapping back on) when the window is activated
  • 2008-11-10 (To download this specific version: windowsnapper-20081110.zip)
    • Fixed bug where MINIMIZING a window would cause WindowSnapper to lose the window's original size and position
  • 2008-11-07 (To download this specific version: windowsnapper-20081107.zip)
    • Fixed bug in Draggable mode when the window is left in this mode and loses focus. When the window loses focus while in Draggable mode, now saves and goes un-draggable
    • Added optional mousewheel session switching. When enabled, allows you to hold a specified key (e.g. Ctrl) and scroll the mouse wheel to switch sessions
    • Added AutoLayout, a nearly-idiot-proof method of configuring window sizes and positions. Should work well for most people.
    • Added rollover effect, enabled by default. Rollup/rolldown over time functionality is available, but is currently synced with game rendering and thusly may not appear smooth, so by default, rollover effect is instantaneous.
    • New commands: AutoLayout and SnapSet
  • 2008-11-02 (To download this specific version: windowsnapper-20081102.zip)
    • Added ability to drag to move or resize to set the snap-to position. New default CTRL+ALT+O bind toggles this special mode, using the new snapdrag command
    • Added snapdock command
  • 2008-10-31 (To download this specific version: windowsnapper-20081031.zip)
    • Window frame style is now stored and restored, instead of always snapping back to a thick frame (resizable window)

Join us on IRC

We are on irc.lavishsoft.com in channel #isboxer, the best place to talk about and get help with all of the tools for multi-boxing with Inner Space! Whether you are already using it, or just have some questions for people who are, please feel free to stop by.

If you do not know how to join IRC, click here to join us via your browser!