
lSwitcher for OS/2, Version 2.7
********************************

Copyright (C) 1997-2004  Andrei Los


LICENSE
=======

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as contained in
the file COPYING in the distribution package.

The full source code is available. 

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



ACKNOWLEDGEMENTS
================

First of all I would like to thank the following people for comments,
suggestions, bug reports, and other feedback on this program:

Julian Buss
Alessandro Cantatore
Alexander Conon
"Doodle"
Ian Douglas
Don "Freiheit" Eitner
Tim Erickson
Alfredo Fernandez Diaz
Javier Arias Fernandez
Klaus Fuchs
Michel Goyette
Cristiano Guadagnino
Tomas Hajny
Johann Harrieder
Martin Iturbide
Reb James  
Andreas Ludwig
"Jiki"
John Martin
David Mediavilla
Nenad Milenkovic  
Romulo Silva Neiva
Nick
Dmitry Novoseletsky 
Sander Nyman
Konstantin Okounkov
Dariusz Piatkowski
Lech Wiktor Piotrowski 
Henk Pol
Sergey Posokhov
Mike Reichel
Loris Rinaldo
Lewis Rosenthal
Antonio Manara Rossini
Danis Tazetdinov
Karel Wesseling
John Wibawa
Sebastian Wittmeier
Denis Zavorotny
Vladislav Zhuk


Special thanks to the following people who provided translation
of the README.TXT and program resources and thus made the existence 
of localized versions of this program possible:

Tomas Hajny -- Czech translation
Alfredo Fernandez Diaz -- Spanish translation



DESCRIPTION
===========

This software is a task switcher application for OS/2 and eCS, which 
includes an enhanced replacement for the standard Alt-Tab switcher and 
a feature-rich task bar. The program is implemented as both a standalone 
application and as a widget for XWorkplace WPS enhancer by Ulrich 
Mller. Functionalities of both incarnations of the program are very 
similar.



USAGE
=====

Run LSWITCH.EXE from an OS/2 command shell or file folder or place it 
in the startup folder for automatic start at boot time. The /I command
line option can be used to specify program settings file, see below. 
To enable support for DOS full screen sessions run LSWITCH.EXE in each 
such session or place it in AUTOEXEC.BAT. Resource files LSWRES*.DLL must
be in the directory where the program executable is. LSWHOOK.DLL must be
in the program directory or in a directory specified in LIBPATH statement 
of CONFIG.SYS.

To use lSwitcher widget place LSWIDGET.DLL and resource DLLs LSWRES*.DLL
in the PLUGINS\XCENTER subdirectory of the XWorkplace installation. 
LSWHOOK.DLL in this case needs to be in a directory specified in LIBPATH 
statement of CONFIG.SYS. After restarting XCenter, lSwitcher widget will 
show up in the list of available widgets. To be able to use the Alt-Tab 
switcher capability of the widget in DOS full-screen sessions you will 
need to run LSWITCHD.EXE in each DOS full-screen session. Any errors 
which the widget may encounter during its initialization are reported in
XWPLOG.LOG file which resides in the root of your boot drive.


NOTE: The standalone application and the widget cannot be used in the 
same time. Remove the widget from XCenter widgets directory before 
running LSWITCH.EXE.



POPUP WINDOW
============  

To activate lSwitcher popup window use Alt-Tab (or Ctrl-Tab if you enabled 
this hot key combination, see settings below). 

Browse through the list by holding the Alt (Ctrl) key down and pressing 
the Tab key. Browse backwards by holding down the Shift key at the same 
time. You can also browse through the list using the arrow keys. To select 
a window, release the Alt (Ctrl) key. To cancel the selection and return 
to the original window, press Spacebar before releasing the Alt (Ctrl) key.

You can also switch to a window by clicking left mouse button on its icon 
in the lSwitcher's PM popup window. Clicking mouse button 2 on an icon 
displays the popup menu with possible actions for the window corresponding 
to this icon.

If, while the popup window is active, Ctrl key (or Alt key if Ctrl-Tab popup
hotkey is active) is pressed, releasing the Alt (Ctrl) key does not cause
hiding of the popup window and switching to the selected window ("sticky popup"
mode). In this mode switching to the selected window is done by pressing Enter, 
while all other keys behave similarly to the "nonsticky" mode (see hotkeys
below). The sticky mode can also be turned on in the program settings.

Scrolling the mouse wheel over the popup window moves the selection box
left or right depending on the scrolling direction (see Scroll message 
divider in the description of program settings below).

The program also supports several hotkeys when its PM popup window is active:

- "C" closes currently selected window
- "H" hides -------"--------
- "M" minimizes -------"--------
- "R" restores -------"--------  
- "S" shows -------"--------
- "X" maximizes -------"--------
- "F" adds selected window's switch list entry to the list of filters
- "P" changes the priority of the selected window's process

Popup window background color as well as text font and color can be changed 
by drag and drop while the popup window is in the "sticky" mode. The colors
and fonts are saved with program settings.


NOTE: OS/2 PM Alt-Tab switching window must be enabled in order to 
use lSwitcher's PM popup window with Alt-Tab hotkey. This means that you
cannot use this hotkey with OS/2 versions prior to version 4.



TASK BAR
========

By default after the program startup the task bar is shown at the bottom 
of the screen. Settings of the task bar, including mappings of mouse buttons
to particular task bar actions can be set in the program settings. The task 
bar is resizeable and can accomodate several rows of buttons. Text and 
background colors, as well as font for the task bar buttons can be changed 
by drag and drop separately for buttons corresponding to active windows, 
minimized/hidden windows, etc. To change the color and font for the task name
"bubble" hold the Shift key down while the bubble is showing, which will make
the bubble stay on the screen even if the mouse is not over a task bar button.
Holding the Shift key, drag and drop colors and fonts onto the bubble window.
Colors and fonts are saved together with the program settings.

Clicking mouse button 2 on a taskbar button displays the popup menu with 
possible actions for the window corresponding to this button. Clicking mouse
button 2 on the Desktop button or over an unused portion of the taskbar 
displays the lSwitcher menu with the following items:

- Run...
  Opens the dialog window which allows to enter and execute a program or an 
  operating system command.
  
- Suspend system  
  Puts the operating system into the suspended state.
  
- lSwitcher settings...  
  Opens the program settings dialog window.
  
- Quit  
  Ends lSwitcher.

Holding down the Shift or Ctrl key while pressing on the Desktop button in
the task bar shows a popup menu with all Window List entries or all running 
processes, respectively. Selecting an entry from the first menu leads to 
switching to the corresponding window. Selecting an entry in the list of 
processes displays a message box with an option to kill the corresponding 
process.

Task bar is XWorkplace XPager-aware, i.e. it is always shown in the current
virtual desktop.



PROGRAM SETTINGS
================

Program settings can be changed in the settings window. The settings 
window is hidden after the program startup. To activate it select the 
lSwitcher entry in the OS/2 Window List or press settings hotkey 
(Ctrl+Alt+S by default, configurable). The settings window can also be
activated by selecting lSwitcher settings menu item in the context menu
which pops up after clicking mouse button 2 on an empty portion of the 
taskbar.

The settings are saved in the OS2.INI or, if the /I<inifilename> is 
added to the program command line, in the file specified by the
<inifilename>. This file is created in the same directory the program 
executable is. Widget settings are always saved in the file LSWITCH.INI, 
which is created in the XCenter widgets directory.


The settings window includes the following options:

  Popup window page 1

- Replace Alt+Tab window
  Makes lSwitcher replace PM Alt-Tab switcher. 

- Switch to PM from FS sessions  
  Turning this on makes lSwitcher switch to PM and show PM popup window
  when activated from a full screen session. This may be useful if your
  display switches slowly between text video modes.
  
- Scroll icons
  Makes selection stationary and items moving when browsing through
  the item list in the popup window. By default the item list is stationary   
  and the selection moves when browsing.

- Show hints
  Makes lSwitcher show hotkey hints in its PM popup window.

- Alt+Tab; Ctrl+Tab 
  Sets the popup window activation hotkey. Alt+Tab hotkey does not work
  in OS/2 versions prior to version 4.

- "Sticky" popup window
  In this mode the popup window is not hidden after Alt(Ctrl) release.
  Switching to the selection is made by pressing Enter key. All the 
  other hotkeys behave similarly to the "nonsticky" mode. The "sticky" 
  mode can be turned on temporarily if Ctrl(Atl) is pressed after pressing
  Alt+Tab(Ctrl+Tab).
  
- Scroll message divider  
  Specifies how many scroll messages will make the popup window selection
  move one step. 
  

  Popup window page 2  

- Current filters
  The list of windows which do not show up in the lSwitcher popup window.
  
- New entry
  Combo box allowing to specify a new filter entry. Wildcards are allowed
  in the filter entries.
  
- Add entry   
  Adds the new filter entry to the list of filters.
  
- Remove entry  
  Removes selected entries from the filter list.
  
- Refresh  
  Refreshes the list of switch list entries. 
 
- Minimized to viewer 
  Turning this on adds windows minimized to Viewer to the list of windows
  which do not show up in the popup window.

- Hidden 
  Similarly, for hidden windows.

  
  Taskbar page 1  
 
- Enable
  Enables task bar.
  
- Auto hide  
  Turning this on makes the task bar hide when mouse pointer is not over it 
  and show when mouse pointer is at the corresponding edge of screen.
  
- Icons only  
  By default task bar buttons display window's icon along with its switch 
  list title. Turning this on causes task bar buttons display the icons only.

- Auto resize  
  When this option is enabled the length of task bar will change so that
  it is completely covered by buttons and no empty area is shown.

- Top of screen; Bottom of screen  
  Sets the task bar position on the screen.
  
- Reduce desktop workarea  
  Turning this on will adjust maximized window sizes such that they don't 
  overlap with the task bar.

- Maximum button width
  Sets maximum width of the task bar buttons. Note that the actual maximum 
  button width is adjusted such that it is not larger than this number and a 
  whole number of equally sized buttons fits task bar.
  
- Group items
  When this option is enabled only one button, corresponding to each group of
  windows, having the same process ID, will be shown on task bar. Pressing
  such a group button shows a menu containing items corresponding to each
  window in the group. Double click on a group button opens the window which 
  was created first in this group.
  
- Flat buttons  
- 3D look
  These options control the look of the task bar.
  
- Allow resizing  
  When this option is enabled task bar will have a sizing border and can be 
  resized.
  
- Mouse actions  
  Several groups of radio buttons defining assignment of mouse buttons to 
  different task bar actions.

  
  Taskbar page 2
  
  On this page the filters, defining which switch list items are not shown in
  the taskbar, can be specified. This page contains controls similar to the 
  ones on the Popup window page 2.
  
  
  Miscellaneous
  
- Language  
  Defines language of the program. The combo box displays available languages
  depending on which resource DLLs are found in the program directory. The
  new setting is applied after the settings window is hidden.
  
- Settings dialog hotkey  
  Defines which hotkey is used to display the settings dialog.

- Switching to desktop minimizes/hides  
  This option controls whether switching to Desktop with lSwitcher 
  will minimize or hide (depending on the window properties) all open 
  windows. The second switching to Desktop restores the windows to their 
  original positions.
    
- Change minimization Z-order  
  Makes the windows which are minimized or hidden move one step down in 
  Z-order. This makes the just minimized or hidden window appear next 
  after the active window in lSwitcher popup list. By OS/2 default the 
  window which is minimized or hidden becomes the bottommost window. This
  option takes no effect if left Alt key is depressed while the window is
  minimized.
  
- Show lSwitcher in window list  
  Makes lSwitcher's switch list entry visible in the Window List, otherwise 
  it is invisible.

  


KNOWN PROBLEMS/RESTRICTIONS
===========================

If you press Alt-Tab (or Ctrl-Tab if it is enabled) in an FS session 
and then release the Alt (Ctrl) very quickly the lSwitcher can sometimes 
get stuck in the popup state. Press and release the Alt (Ctrl) key one 
more time to switch to the task you've chosen. 

The program appears to be incompatible with the VShield TSR, which is 
a part of ViruScan for DOS by Network Associates Inc. If both lSwitch.exe
and VShield.exe are loaded in a DOS session, this session may crash after 
a while. The reason seems to be a bug in the VShield's INT08 handler. This
is partially confirmed by the fact that VShield causes a crash in combination
with some other programs hooking this interrupt. I have not found a reliable
workaround for this problem so far.

If XCenter properties window is hidden, rather than closed, choosing XCenter 
Properties in a widget submenu locks the system. This is an XCenter problem.

Hidden and minimized to viewer windows are always restored to the current 
virtual desktop. This is an XPager feature/limitation.

This program uses several undocumented operating system features 
and may not work properly in some system configurations. If you encounter 
such problems please let me know.



CHANGES 
=======

V 2.7

- New look!
- Second consecutive switching to Desktop restores all windows to the
  states they had before they were minimized or hidden by switching to
  Desktop.
- Holding Shift or Ctrl key while clicking on Desktop button in the task bar
  opens a list of all switch list items or running processes, respectively, 
  similarly to WarpCenter/eComCenter.
- Popup window accepts scroll messages, e.g. from mouse wheel.
- Popup window and bubble colors and fonts can be changed by drag and drop.
- Taskbar button grouping.
- lSwitcher is XPager-aware, task bar is always shown in the current virtual 
  desktop.
- Some other new program options, changes and bug fixes.


V 2.6

- The program is now distributed under the GNU licence with full source
  code available.
- lSwitcher now exists in the form of widget for XWorkplace.
- Configurable task bar.
- New settings window.
- "Sticky" mode for the popup window.
- Popup window font can now be changed by dragg'n'dropping from the 
  Font Palette.
- Wildcards are now possible in the filters.
- Settings hotkey is now configurable.
- Language of the lSwitcher messages can now be changed in the settings.
- Additional program killing options are added to the popup menu in the 
  popup window and task bar.
- Program priority can now be changed from the popup menu.
- Move command is added to the popup menu.
- Some other new program options.
- Other changes and bug fixes.


V 2.5

- Added the option of stationary items and moving selection.
- Clicking left mouse button on an icon now switches to the window
  corresponding to this icon; clicking right mouse button displays the
  popup menu with possible actions for this window.
- The maximum number of items which can be displayed in the PM popup 
  window changed to 27 (3 lines of 9 icons).
- The settings are now saved in OS2.INI or in a user specified file.
- Several new hotkeys added.
- Some other options added.
- Fixed compatibility problems with programs using Ctrl-Tab hotkey 
  (e.g. Netscape).
- Other changes and bug fixes.
  

V 2.4

- Program parameters can now be set in the Settings Window or in the ini 
  file, command line options are no longer supported.
- Program settings now include the list of programs which are skipped by 
  lSwitcher.
- Program now supports several hotkeys during the PM popup.
- OS/2 full screen monitoring code is now incorporated in the 32-bit 
  executable, no need for a separate 16-bit executable (lswfsmon.exe).
- Full screen popup window now has a maximum number of entries 23, PM  
  popup window - 9, switch menu items option no longer supported.
- Minimizing/hiding open windows when switching to desktop is now optional
- Fixed the problem of lSwitcher dying at load time with no error messages 
  on some system configurations.
- Corrected the problem of current task not showing in the switcher list 
  if it is a full screen task with "minimize to viewer" or "hide" 
  minimization behavior.
- Corrected the problem of current task being selected in the switcher 
  list after popup activization.
- Found a workaround for trap in ProNews when switching to it with lSwitcher
- Some other small changes and bug fixes.


V 2.3

- Added an option of displaying several entries in the PM switcher popup 
  window. 
- At last fixed the problem with Win-OS2 icons not showing up
- Some bug fixes.


V 2.21

- Fixed a problem with Dos Navigator windows switching before lSwitcher
  activation.
- Fixed a problem with Slick Editor minimizing incorrectly when switching 
  to Desktop.


V 2.2

- The OS/2 PM Alt-Tab switcher window is now replaced by lSwitcher's PM 
  switcher (this can be turned off).
- Switching to Desktop minimizes or hides all open windows.
- Switching order changed slightly.
- Fixed some problems with WIN-OS2 windows.
- Some other bugs fixes.



HOW TO CONTACT THE AUTHOR
=========================

If you have any comments on this program, please send email to 
"avl1@inet@ua" 



TRADEMARKS
==========

Some words and/or phrases in this document may be trademarks of some 
companies.
