LSMD Document

lsmd version:
0.3p
file version:
1.2.0
by Visigoth, blkhawk, ilmcuts, jesus_mjjg, rabidcow, and Seg@

lsxcommand 1.9.1

lsxcommand-1.9.1
by Visigoth, blkhawk, ilmcuts, jesus_mjjg, rabidcow, and Seg@
Category: console

The lsxcommand LoadModule is a text box that sits on your desktop. It will let you type !bangs, folder names, documents, apps, urls, etc and execute them. You can also use it as a calculator, a clock, do searches from it, display the currently playing winamp song, and pick winning lottery numbers.

Table of Contents

Introduction

if you specify a border width and you dont have CommandNotMoveable set, you can drag it around by the border. there is a problem that some people are having where the mouse cursor is not set back to a normal cursor after it is off the text box. to fix this, use CommandNoCursorChange to stop lsxcommand from changing the cursor.
just a tip: lots of programs names work in lsxcommand.. you can type stuff like 'notepad', 'icq', 'netscape', to start some programs instead of the full path. the history is working great.
Note: I have tried to copy most of the old text readme here, but some pieces may well be missing. Visigoth wrote most of that, so most of the "I"s in here will be him. Just so ya know. -- rabidcow

Position

Settings and bang commands for basic window positioning.
CommandX COORD
Initial x position on the primary monitor or containing box.
CommandY COORD
Initial y position on the primary monitor or containing box.
CommandWidth COORD
Initial width in pixels.
See also: !CommandSize
CommandHeight COORD
Initial height in pixels.
See also: !CommandSize
CommandNotAlwaysOnTop BOOL
lsxcommand normally tries to stay above regular windows. Set this to true to make it try to stay below? float? instead.
CommandHiddenOnStart BOOL
Normally the command box is visible at startup, set this to true to make it start hidden.
CommandOffsetX INT
This value determines which point on its window LSXCommand should use as a reference for the CommandX value.
   0: left
   1: horizontal center
   2: right
CommandOffsetY INT
This value determines which point on its window LSXCommand should use as a reference for the CommandY value.
   0: top
   1: vertical middle
   2: bottom
CommandWaitForBox BOOL
LsxCommand will not appear until he is loaded in a box with the !CommandBoxHook. Please check lsbox documentation.
!CommandMove COORD COORD
Moves the command window to the specified position. This can now accept all regular position forms (eg, "-106c") as well as relative positions by using the suffix "r". (This syntax is new as of 1.9.0, if you were using the old "default relative with parens for absolute" syntax, you'll have to change it.)
Move the command box 100 pixels down:
!CommandMove 0r 100r
            
Move the command box to 30% across the screen without changing its y position:
!CommandMove 30% 0r
            
When !CommandMove is called without parameters, it moves to the current mouse cursor position.
If !CommandMove is called with "home" as its parameter, it moves back to the original position it received from step.rc
!CommandSize COORD COORD
Resizes the command window to the specified size. You can use percents and relative values here as well.
If !CommandSize is called with "home" as its parameter, it resizes back to the original size it received from step.rc
!CommandShow
Makes the LSXCommand box visible.
Note: It does *not* give LSXCommand focus. To do this, use !FocusCommand - this command gives focus to LSXCommand, and if it's not visible, it shows it also.
!CommandHide
Just hides LSXCommand. Nothing really special.
!ToggleCommand
Shows the command box if it was hidden, hides it if it was visible.
!CommandBoxHook
This is used with lsbox: *ModuleHook !CommandBoxHook Please, check LsBox documentation
Technical details: The exact syntax used by lsxcommand is: !CommandBoxHook <here be dragons> <hwnd, in decimal> (it ignores the box file that lsbox gives it.) If you don't understand that, you probably don't need to.
See also: CommandWaitForBox
!CommandCalculate STRING
Evaluate an expression and paste the result into the command window. This can be used with *CommandChar to do calculations with something other than =.

Appearance: Back and Border

Settings that control how the border and background of the command box look.
CommandBevelBorder BOOL
Use bevels instead of solid, single color borders.
CommandBorderSize INT
Width in pixels of the border.
If you want to have different sized borders on each side, use CommandTopBorderSize, CommandBottomBorderSize, CommandLeftBorderSize, and CommandRightBorderSize.
CommandBottomBorderSize INT
Height in pixels of the bottom border, overrides CommandBorderSize for that border.
CommandTopBorderSize INT
Height in pixels of the top border, overrides CommandBorderSize for that border.
CommandLeftBorderSize INT
Width in pixels of the left border, overrides CommandBorderSize for that border.
CommandRightBorderSize INT
Width in pixels of the right border, overrides CommandBorderSize for that border.
CommandBorderColor COLOR
color of the border
CommandBGColor COLOR
background color
CommandBackground IMAGE
Path to your background image. If this is not an absolute path, LSXCommand looks in your images directory.
Note: If this option is not specified, the background and border colors are used.
CommandStretchBackground BOOL
If set to true, the background image will be stretched.
CommandTransparentEditBox BOOL
This will make the text in the edit box draw transparently over the background. If you don't set this and are using a bitmap for the background, the text will still use the background color.
This behavior has changed in 1.9.0, and will probably change again.

Appearance: Text

Settings that control how the text in the edit box looks.
CommandTextSize INT
Font height in pixels. (NOT in points!)
CommandTextBold BOOL
Use a bold font.
CommandTextUnderline BOOL
Underline the text.
CommandTextItalic BOOL
Use an italic font.
CommandTextColor COLOR
Text foreground color.
CommandTextFontFace FONT
Name of the font face to use.
CommandTextAlign OPTION
Sets the text alignment: left, center, or right

Command History

As you use it, lsxcommand will remember the last few commands you ran, and autocomplete as you type to make it easier to repeat recent things. You can also use the up and down arrow keys to scroll through the history list, as well as page up, page down, ctrl+home, or ctrl+end.
CommandHistoryFile FILE
Specifies the file lsxcommand stores its history in.
This file will be written to every time you execute a command, and if you ever use !CommandClearHistory.
CommandHistoryEntries INT
Sets number of history entries of which to keep track.
CommandHistoryMenuEntries INT
Sets the maximum number of history entries available from the context menu.
(this may not work in 1.9.0/1.9.1)
CommandClearHistoryOnStartup BOOL
Clears the history on startup.
Note: You will lose the history in the CommandHistoryFile - not just the history in memory.
CommandNewestHistoryItemsOnTop BOOL
This setting places newer history items at the top of the menu, instead of at the bottom.
CommandWrapHistory BOOL
Normally scrolling through the history with up/down, etc. will stop when you reach either end of the history list. With this set, it will continue on the other end. (page up/down will still stop at the end, but you can press it again to continue in that direction.)
CommandUnixHistory BOOL
The most popular UNIX shell (bash) has the inverse history navigation: Up for previous, down for next. You can use this system with this setting.
CommandAddExternalsToHistory BOOL
If this is on, LSXCommand will add any commands launched with the !Command !Bang command to the history. Since I've been using AlterScript with this a lot, it became annoying to have all of AlterScript's commands end up in LSXCommand's history.
CommandNoTabMicroComplete BOOL
Stops Tab-MicroCompletes from taking place. When you are typing in LSXCommand and get an autocompletion, you may want to automatically go on to the next word. see also lsxcommand.txt, section II.5 Tab-MicroComplete and Context Menu Access
CommandTabFileComplete BOOL
Enables the completion of file names by using the tab key. Shift-tab will search through the file list in the other direction. Use ctrl-tab for microcompletion when this is set. see also lsxcommand.txt, section II.9 Tab File Completion
CommandNoAutoComplete BOOL
Turns *off* AutoComplete. Someone asked for it, so I coded it :).
!CommandClearHistory
Clears both the history in memory *and* the history in the CommandHistoryFile.
Tab-MicroComplete is a feature I made up on my own - not even Microsoft has it. When you are typing in LSXCommand and get an autocompletion, you may want to automatically go on to the next word. For instance, when you search with a particular search engine, and then want to search with the same engine again, but with a different phrase.
With Tab-MicroComplete, you can do that. If you hit tab while in LSXCommand, the cursor will be moved to the start of the next word, or to the end of the line (depending on where the current cursor is).

Context Menu

LSXCommand now has Context Menu Access! You can either right- click on LSXCommand's command box or call the !CommandContextMenu !bang command. If you use the !bang command, the menu appears wherever your mouse is on screen. The Context Menu contains past history entries, all your aliases, and all search engines.
CommandContextMenuStandardItems INT
This item does two things. It first turns on the standard menu items: Cut, Copy and Paste. Second, it tells where to put the standard items, above or below the LSXCommand specific menus.
CommandContextMenuStandardItems 1 ; Above
CommandContextMenuStandardItems 2 ; Below
CommandContextMenuStandardItems 0 ; Off (Default)
CommandContextMenuAboveBox BOOL
If you have your LSXCommand window at the bottom of the screen, you will want to turn this on. If at the top, leave this off. This sets where the context menu will appear - above or below the LSXCommand box.
CommandContextMenuExecute BOOL
Tells LSXCommand to execute a selection from the context menu instead of copying its data to the LSXCommand box.
Note: Since the point of search engines is to have you enter a search phrase, it is not possible to have search engines execute.
CommandContextMenuOrder STRING
Specifies which order each submenu should appear. For instance, you can have History, Alias, then Search Engines or Alias, History, Search Engines, or...
The setting is 3 numbers: 0, 1, and 2. The combination of these numbers sets in which order each submenu appears. The first number is the position of the History submenu. The second is the Alias submenu. And the last is the Search Engines submenu.
You can also set any of the three to 9 to remove the corresponding submenu entirely.
CommandContextMenuAutoPopup BOOL
If you set this to true, then everytime the mouse will come over the lsxcommand box, the contect menu will appear.
!CommandShowContextMenu
Makes LSXCommand's Context Menu visible wherever the cursor is on the screen, regardless of LSXCommand's visibility.

Calculator

Oh yes, it can do calculations too. Type an equals sign (=) and then the expression you want evaluated, such as "=1+1", then press enter. But wait, there's more! Much more. Almost... too much...
CommandCommaDelimiter BOOL
Some Eurpoean countries use commas as decimal delimiters, so this changes decimals from periods to commas.
CommandRPNCalculator BOOL
Makes the calculator an RPN calculator. If you don't know what this is, don't use it! You'll only confuse yourself. Others call RPN "Postfix" notation. If you want to learn more, obtain a Hewlett-Packard RPN calculator (the 48/49 series are especially nice, IMO :).
As of version 1.7.8, the calculator functionality has been entirely revamped, thanks to the work of Jonas Sicking. Just like in older versions, calculator commands start with an = sign at the prompt, then the expression to evaluate.
What's new? Everything - from the supported operators to the base conversion, it's all been redone.
LSXCommand handles float precision, so decimals are allowed. The result will be placed right back into LSXCommand's command box with an equals sign in front of it and a space after it. This enables you to use the result of the last command right off the bat! (By the way - spaces are allowed)
LSXCommand understands the following operators:
     + - * \ / ( ) ^ % ! E
     
Addition, Subtraction, Multiplication, Division, Division, Open Parenthesis, Close Parenthesis, Power, Modulus (remainder), Factorial, Exponential
Yes, there are two division operators. HOWEVER, the \ means integer division, and the / means regular division.
E is the 10 to the power operator. For instance, 1E6 is 1 million. Note: don't try 1*E6 - that won't work. Just do 1E6 or (1E6). You can even do 1E(5+4), but don't try to multiply the two.
MATH LIBRARY FUNCTIONS
With the revamping of the calculator functionality comes some really useful stuff: a library of mathematics functions! The following is a list of the supported math functions:
      TRIG FUNCTIONS        ANALYTIC FUNCTIONS      CONSTANTS
      ``````````````        ``````````````````      `````````
      sin                   exp                     pi
      cos                   ln                      e
      tan                   log
      cot                   log2
      asin                  log10
      acos                  sqrt
      atan                  floor
      acot                  ceil
      sinh                  abs
      cosh                  fpart
      tanh                  ipart
                            sign
                            rand
                            rnd
The trig functions should be self explanatory. The log functions are a bit tricky: ln and log are both base e, while log2 and log10 are base 2 and 10 respectively. If you haven't heard of the other functions (like fpart and ipart), consult your graphing calculator's manual - the one you never bothered to read because you already thought you knew how to use a calculator :P
To use these functions, you would type something like '=sin(0)'. Note that since pi and e are constants, you don't put () after them. For instance, =pi would result in =3.141...
RPN CALCULATOR FUNCTIONALITY
As of version 1.7, you can use LSXCommand as a "Postfix" calculator. If you are not familiar with this expression, leave it be and don't worry about it! If you really want to learn more, obtain a Hewlett-Packard RPN calculator and learn to use it.
RPN mode does *not* turn your history into a stack. It does, however, make LSXCommand accept postfix notation expressions. See the documentation for the CommandRPNCalculator RC Command above in section II.2.
This functionality extends to the 1.7.8 revamping of the calculator code. It should work fine, but I haven't played with it enough to say anything more than that.
Note: The RPN calculator will currently not do subtraction properly. (at all) For now, make the second operand negative and add, or find a better RPN calculator. Sorry. (if someone writes it as a separate module, it can now be integrated into lsxcommand with *CommandChar and !CommandSetText)
MULTIPLE NUMBER BASE FUNCTIONALITY
As of version 1.7.1, you can specify numbers in different number bases. With the 1.7.8 rewrite of the calculator, LSXCommand supports 4 bases: decimal (10), binary (2), hexadecimal (16) and octal (8).
To specify a number as binary, place a 'b' in front of it. For instance, entering "=b10" in LSXCommand will return "=2" as an answer. If you typed "=5 + b10", you would get "=7" as an answer.
Append the following prefixes for its respective base:
   b - binary
   h - hexadecimal
   o - octal
   d - decimal (this is, of course, the default)
NUMBER CONVERSION FUNCTIONALITY
With the version 1.7.8 rewrite comes much more flexible number conversion. You can convert between any of the bases supported by LSXCommand (listed above).
To convert *from* decimal *to* hexadecimal (color conversion), you would do the following:
=dh 255 255 255 --> =hff hff hff
So, to convert *from* a base *to* another base, place the identifier of the from base first, then the to base, then each number to convert with a space between each one.

Internet Searches

Both Netscape and Internet Explorer support a small feature where you can type a question mark (?) and then a keyword, and they will search the net for you. However, you could never tell which engine Netscape was going to use (Netcenter had deals with all the major engines) and IE always seemed a bit screwy to me. Anyway, LSXCommand now has this functionality - and you always know which engine you are searching with!
For instance, to search for "Litestep" with LSXCommand, enter the following and hit <Return>:
     ? Litestep
The above will search your default search engine for the phrase Litestep. (See the section below about the engines.list file to set up your default engine, and add more!).
To use a specific search engine with your query, you must simply insert an engine ID after the question mark, like this (Note the lack of a space after the question mark - it's important!):
     ?Altavista Litestep
This searches AltaVista for the phrase Litestep.
CommandSearchEngineList FILE
The path to your engines.list - the list of search engines to use with LSXCommand. see also lsxcommand.txt, section II.4 The engines.list File.
If you set this to anything starting with a *, that will be used as a key to read the engine list from step.rc.
CommandSearchEngineList *CommandSearchEngine
*CommandSearchEngine default google
*CommandSearchEngine Google http://www.google.com/search?q=<args>
CommandSearchEngineBrowser FILE
Path to the browser to be used with search engines. If not specified, LSXCommand uses the default browser on your system.
!CommandRescanEngines
Rescans the engines.list file.
Note: it does not load a new engines.list file if specified in the step.rc; it will attempt to reload the same engines.list file.
!CommandSearch
Performs an internet search. This can be used with *CommandChar to do searches with something other than ?.
Maybe you can't be bothered to hold down the shift key when you want to do a search:
*CommandChar / !CommandSearch ?<args>
The following is the list of engines that come preconfigured in the sample engines.list (Note - unless otherwise stated, these are configured to the default options these engines use. Another note - engine names are not case sensitive, I just wrote them the proper way in the examples):
     * Default: Yahoo!
     * Yahoo!		(?Yahoo quake) [Note exclusion of !]
     * AltaVista	(?AltaVista phrase I can't find anywhere)
     * Lycos		(?Lycos insane asylum)
     * Excite		(?Excite dilbert)
     * InfoSeek		(?InfoSeek obey your thirst)
     * Google!		(?Google linux) [Note exclusion of ! again]
     * HotBot		(?HotBot nothing in particular)
     * DejaNews		(?DejaNews good compilers)
     * LycosMP3		(?LycosMP3 Offspring Gone Away)
     * ScourMP3		(?ScourMP3 Robert Miles Children)
     * Lyrics		(?Lyrics I wish I was a little bit taller)
     * LyricsByTitle    (?Lyrics I Wish)
     * Slashdot		(?Slashdot Quest for Cool Cases)
     * Floach		(?Floach lsxcommand)
     * MSDN		(?MSDN I didn't know that API call existed)
     * Amazon		(?Amazon Barbarians Led by Bill Gates)
     * SoftSeek		(?SoftSeek UltraEdit)
     * Hardware		(?Hardware AMD K7)
     * CMA		(?CMA phrase in that article I can't find)
     * Patent		(?Patent US05731339__)

     Added as of 1.1:

     * UPS		(?UPS 1Z99999999999)
     * FedEx		(?FedEx 1092831023)
     * Airborne		(?Airborne 123934309)

     Added as of 1.5: (sorry, I gave up on examples - too many!)

     * BigBook
     * BarnesAndNoble
     * MediaFindMP3
     * Reel
     * Archieplex
     * Filez
     * Shareware
     * NorthernLight
     * OpenText
     * InfoSpace
     * GoTo
     * Pathfinder
     * MetaCrawler
     * Top5
     * A2Z
     * AskJeeves
     * MerckMan
     * APWire
     * WhoWhere
     * LibraryOfCongress
     * Finger
     * NSLookup
     * LettermanTop10
     * Anonymizer

   Just a couple of notes:
     - LycosMP3 and ScourMP3 are customized versions of Lycos
       (lycos.com) and Scour (www.scour.net) to search strictly for
       MP3's.
     - Lyrics (by itself) searches www.lyrics.ch for the lyrics
       themselves.  LyricsByTitle searches for titles of songs
       available on the Lyrics server.
     - Hardware searches Tom's Hardware - a good site for hardware
       reviews.
     - CMA searches ZDNet's Computer Magazine Archive - which is cool
       if you don't remember where you saw an article.
     - Patent looks up the specified patent number on IBM's Patent
       server - www.patents.ibm.com
     - The last three are all shipment tracking searches - UPS, FedEx
       or Airborne Express
          
For more information about adding, removing, or changing engines in the list file, see the section below.
PLEASE NOTE: LSXCommand's default search engine list is quite large; however, there are tons of other good search engines out there. After version 1.5, all engines which are said to be Added in the Change Log (above) are actually added to the master LSXCommand Search Engines list available at my web site: http://floach.pimpin.net/visigoth/litestep/lsxcommand-engines.list (sorry, this offer has expired.)
CATEGORY FUNCTIONALITY
Before I start on the category functionality, I have to say the following: your default search engine (identified by the "Default ..." line in your search engines list) should be left alone on a line by itself. Try and make it the first non-comment line in your engines list.
Just one more note: When a search engine is in a category, you access it *THE SAME WAY* when typing a search command. (ie. even if "Amazon" is in the "Books" category, you still use it by typing "?Amazon <book>")
That said, we can get to the meat of the subject. Categories are the same as sub-menus in the popup menu. The only difference between search engines in a category and not in a category is the fact that one is in a sub-menu (such as "Books ->" or "MP3 ->") and the other is in the root "Search Engines ->" sub-menu.
To create a category in your search engines list, all you have to do is type the name of the category and then an open brace ( "{" ). This must be on its own line. Now you can place as many search engines as you like in that category, each one on its own line just as in the original engines.list. To close a category, simply place a closing brace ( "}" ) on its own line.
You can also have spaces in your category names (NOTE: This doesn't mean you can have spaces in your search engine names. That has not been implemented). To do this, enclose the category name in quotes, such as "Music and Movies". Also, you can have a keyboard accelerator assigned to a sub-menu. (You know how the File menu and the Edit menu have underlines under the 'F' and 'E'? You can have that too - those are called keyboard accelerators). To have a keyboard accelerator for a particular letter in the category name, place an ampersand ( "&" ) in front of the letter. For instance, "Music and &Movies". If you want to have an ampersand inside the name of a category, put two ampersands in a row. As an example, "Music && Movies" will have an ampersand between "Music" and "Movies" but no keyboard accelerator. "Music && &Movies" will have both an ampersand and an accelerator.
You are allowed to have sub-categories up to 8 levels deep. (If you really need more than that, bug a developer. It's not hard to change.) You could do something like Computers-> Software-> Download Libraries->.
For human readability, you can also have white space in front of both search engine lines and category lines.
For an example, see the included engines.list file in this distribution of LSXCommand. (engines.list sold separately. You probably got a copy when you installed LiteStep.)

The engines.list File

This file tells LSXCommand how to use different search engines to search the Internet. The basic structure of the file is like this (Note - it's probably a good idea to follow along with the sample engines.list):
     Default	<moniker>
     <moniker1>	<keyed url1>
     <moniker2>	<keyed url2>
     ...		...
The <moniker> element is one of the monikers listed below (<moniker1>, <moniker2>, etc). As explained above, the default engine that will be used is <moniker>. The <keyed url#> elements are, basically, URLs that tell LSXCommand where to send your web browser. However, there is one difference: the special "key" <args> is used to determine where to place your search string.
For instance, let's take a look at Yahoo!'s line:
     Yahoo		http://search.yahoo.com/bin/search?p=<args>
          
This means the following:
     * The user must begin a search with ?Yahoo to use this search
     * The user's search phrase (stuff after ?Yahoo) is placed in
       <args>.  So, the statement "?Yahoo something" gets converted
       to: http://search.yahoo.com/bin/search?p=something
Multi-word searches are handled automatically by LSXCommand. For this reason, LSXCommand can't quite use specialized engines to their full extent - for instance, the "Simple Search" function on the Lyrics server - www.lyrics.ch - has more than one search field.
You can find the full engines.list (the one shipped with LSXCommand is by no means complete and neither is this one, but it is larger) here:
http://floach.pimpin.net/visigoth/litestep/lsxcommand-engines.list
(Ha! You didn't actually believe that, did you?)
TO MAKE YOUR OWN SEARCH ENTRIES:
Go to the page where you enter a search phrase. Type something and search for it. If your URL bar has a lot of &'s and ='s, this site can be used with LSXCommand. All you have to do is copy this URL and paste it into your engines.list file with a moniker of its own. Then, replace the phrase you searched for with the key <args>.
The above type of an engine is one that uses the GET method to send data to the web server. The other type of method is called POST. This is the one that doesn't have all the &'s and ='s in the URL. What you have to do is go back to the search page and go into the actual HTML. Find the place with the <form> tag and from here on, you have to set up your own &'s and ='s from the names and values listed, using the action= property of the form tag as a base. Sorry if it's confusing, but it's almost 5 AM.

Clock

You can have the command box show the current date and time when you're not otherwise using it.
The clock functionality in LSXCommand is quite robust, though hard to use since the format commands look nothing like what you would expect them to. If you want a quick format command that gives you both the date and time, use "%#c". If you want more customization, you will just have to read below. Sorry...
CommandTime STRING
Format string that tells LSXCommand how you want your time and date to look.
See below for formatting.
CommandClockDisappearsOnFocus BOOL
If you want the clock to automatically disappear when you click in LSXCommand, set this on. Otherwise, the clock will "pause" at the current time/date. This makes it easier for you to copy/paste the time and date into any app.
Okay, so you want more control, eh? The following comes straight from the Microsoft Developer Network Library. It is a table of format commands you must use to create your time & date string. Examples are listed below the table.
   %a                 Abbreviated weekday name
   %A                 Full weekday name
   %b                 Abbreviated month name
   %B                 Full month name
   %c                 Date & time representation for current location
   %d                 Day of month as number (01 - 31)
   %H                 Hour in 24-Hour format (00 - 23)
   %I                 Hour in 12-Hour format (01 - 12)
   %j                 Day of year as number (001 - 366)
   %m                 Month as number (01 - 12)
   %M                 Minute as number (00 - 59)
   %p                 AM / PM indicator for current location
   %S                 Second as number (00 - 59)
   %U                 Week of year as number, with Sunday as first
                      day of the week (00 - 53)
   %w                 Weekday as number, with Sunday as 0 (0 - 6)
   %W                 Week of year as number, with Monday as first
                      day of the week (00 - 53)
   %x                 Date representation for current location
   %X                 Time representation for current location
   %y                 Year without century (two digits) (00 - 99)
   %Y                 Year with century (four digits)
   %z                 Time-zone name / abbreviation
   %Z                 Same as %z
   %%                 Percent sign
The # sign (pound, hash, whatever you like...) can be used as a prefix for most format commands. For instance, %#<character>. The following lists the change in meaning for those commands that are affected:
   %#c                Long date & time representation for current
                      location.
   %#x                Long date representation only for current
                      location.
   %#d, %#H, %#I,     Remove leading zeros.
   %#j, %#m, %#M,
   %#S, %#U, %#w,
   %#W, %#y, %#Y
So, what the heck does all that crap mean? Basically, you think of how you want your date & time to look, and then substitute the proper codes where they are needed, for instance:
     Think Of...            Code Used
     ```````````            `````````
     05:30:00 PM            %I:%M:%S %p
     Monday 06/14/99        %A %x
     Mon. 6/14/1999         %a %#m/%#d/%Y  -  Removes leading zeros
     June 14, 1999          %B %d, %Y
     Monday, June 14, 1999  %#x

Audio Player

CommandScrollWinAmpTitle BOOL
If on, this setting takes WinAmp's scrolling title and displays it in LSXCommand. Note that WinAmp's scroll song title preference must be on for this to happen. A neat trick with this is to have both a clock and a WinAmp scroller. The WinAmp scroller will show when WinAmp is running. If not, the clock will show.
CommandWinAmpDisappearsOnFocus BOOL
Just like CommandClockDisappearsOnFocus, but for the WinAmp scrolling feature.
CommandMusicPlayer STRING
This command enables LSXCommand to use the titles of other music players besides WinAmp. You should set it to the class name of the application you are looking for. If you want this to work with Foobar2000, you'll probably need to get the foo_class plugin for it.

Misc. Behavior

CommandNotMoveable BOOL
Normally you can drag the command box around by its borders. Set this to true to disable that.
CommandNoCursorChange BOOL
Normally the mouse cursor will change to the text-selection "I beam" cursor when you move over the command box. Set this to have it stay as the default cursor.
CommandAssumeNetAddress BOOL
If you type a command and it looks like a URL without the protocol and does not exist as a file on your system, this will cause lsxcommand to try sticking "http://" on the front and opening it with your web browser.
CommandExplorePaths BOOL
If enabled, any directory path you enter into LSXCommand will open a treed explorer window, instead of the standard folder window.
CommandNoWarnOnError BOOL
If there is an error (for instance, if the command you entered is invalid or the calculator couldn't evaluate the expression you entered), you will get an error message. This, when turned on, will suppress it.
CommandHideOnCommand BOOL
Hides lsxcommand when a command is issued.
CommandHideOnEsc BOOL
Hides lsxcommand when you press the Escape key.
CommandSelectAllOnFocus BOOL
Selects everything in the command box when it gains input focus.
CommandSelectAllOnMouseFocus BOOL
Just like CommandSelectAllOnFocus, just that it only works when clicking to focus LSXCommand.
The reason these are two separate options is for people like me: I like to be able to just click once to put the cursor where I want it -not select the entire command. But, some people like the explorer way of doing things better, so I added it.
CommandHideOnUnfocus BOOL
Hides LSXCommand when it loses keyboard focus. This can be used to hide LSXCommand after it runs an app.
CommandNoClearOnCommand BOOL
Won't clear the input after you execute a command.
CommandClearOnHide BOOL
Clears the text when lsxcommand is hidden.
CommandOnFocus ACTION
Will execute a command when you !FocusCommand (or when you focus it with the mouse).
CommandOnUnfocus ACTION
Executes a command when the command box loses focus. (eg, when you click on something else)
*CommandAlias STRING ACTION
Aliases (or Binds) a phrase to another command.
*CommandAlias step  notepad c:\litestep\step.rc

Will open c:\litestep\step.rc in notepad when you type "step" into the command box.
If the command assigned to the alias contains the string <args>, it will be replaced with any arguments given after the name of the alias in the command box.
You can categorize your aliases with { and }, exactly like the engines.list.
*CommandChar STRING ACTION
Creates single-character command aliases that can take a line as parameters. This can be used to create shortcuts that act like ? and =. (actually, this is how those two are implemented now.)
The text entered after the symbol in the command box replaces any occurance of <args> on the *CommandChar line before execution.
So if you use mzscript a lot and need a fast way to check on the value of variables:
; assign ` (grave accent) to show mzscript variables
*CommandChar ` !VarShow <args>
Then you can type things like `mousex.
You can only assign aliases to printable, non-alphanumeric ASCII characters and character code 128. (used by MS for the euro symbol) It might not be a good idea to redefine " and !, but you can if you want. You can use the keyword stop instead of a character to prevent any further chars from being defined, eg if you want to stop themes from defining them.
The full list of chars you can alias is: !"#$%&'()*+,-./:;<=>@[\]^_`{|}~€

Bang Commands

!FocusCommand
Set focus to command (nice for binding to hotkeys).
!Command ACTION
Now use the power of LSXCommand anywhere within Litestep! Shortcuts, wharf items, whatever that can run !bang commands outside of its own can now use LSXCommand.
!CommandBrowseFile STRING
Brings up an Open Dialog Box to browse for a file for LSXCommand to open. It's just the same as typing in the file's name.
Note: You can send an argument to this !Bang command to specify the filter for the open box.
For instance, to see just Text Files, you might do this:

!CommandBrowseFile All Text Files (*.txt, *.ini)|*.txt;*.ini
!CommandBrowseFolder
Brings up a folder selection dialog. You can select a folder to browse to. There are no arguments for this !Bang command.
!CommandToggleTimer
Toggles the current timer. If you use this, the WinAmp timer no longer takes precedence over the clock. You have to call this !Bang again for the WinAmp scroller to appear.
!CommandSetText STRING
This !Bang sets the text in LSXCommand to its arguments. This makes for some really neat stuff (for instance, a shortcut that pops up LSXCommand with a question mark and a space already in it ready for an argument to search with).
Note: this !Bang command does not show LSXCommand if it is hidden.
Example: !SetText "?Altavista "
!CommandShowText STRING
This will set the text, like !CommandSetText, but not set focus to the command box.

History

2004-04-08 version 1.9.1 by rabidcow
  • — better error messages, unless you turn them off
  • CommandWrapHistory will make history wrap, like in 1.9.0
  • — pgup/pgdn/ctrl+home/ctrl+end move in history list now
  • CommandAssumeNetAddress should work again
  • CommandNoWarnOnError should work again (and not setting it)
  • — executing stuff should work better (not sure how to explain it, I made some bad assumptions about the return values of LSExecute)
  • — you can set a position to 9 in CommandContextMenuOrder and it will not cause a (check settings) in the menu
  • CommandSearchEngineBrowser should work again
  • — history does not wrap by default
  • — a command consisting of nothing aside from whitespace will not break the history list on restart
  • — history is written to the file after every command instead of just on exit (and in !CommandClearHistory)
2004-04-05 version 1.9.0 by rabidcow
    Some of the changes in 1.8.6 were duplicated here due to uncoordinated concurrent development. (iow, I was slow...)
  • !CommandSize: Change the size of the command box. also "!CommandSize home"
  • !CommandShowText: Like !CommandSetText, but without setting focus.
  • *CommandChar: single-char aliases like ? and =
  • !CommandCalculate: perform calculation, default for =
  • !CommandSearch: perform search, default for ?
  • — The default search engine has a check mark next to it in the menu. (assuming that you set the default near the beginning of the file)
  • — Aliases can be organized into categories, and can use <args>
  • CommandTextAlign left|center|right
  • — you can use "*CommandAlias stop" to end the alias list
  • — Removed some sizeof(char) where pointer arithmatic handles it (meh,*1...)
  • — buffer overflow reading settings, apparently was extra naughty on purels
  • CommandOnUnfocus should now work when CommandHideOnUnfocus is not set
  • — there was a remote possibility that certain OnUnfocus commands could cause litestep to "stop responding to messages", fixed.
  • — The context menu will show up over the edit box when you press the "app" key.
  • — Stores new entries to history list before $constant$ expansion
  • !CommandMove uses more standardishly arguments
  • CommandTransparentEditBox is almost obsolete. Now using flicker-free method, which doesn't really work on Win95 (not supported by OS), but works better everywhere else. Still not perfect unfortunately, no idea why.
  • — Much cleanup and fixes of evil code. "atoi(&atom)" indeed...
  • — Reimplemented search engine and alias lists with hash tables. These now use common code for a lot of things, so you can have categorized menus for aliases and load the search engine list from step.rc (aliases from a file are also possible, but there's no setting for it yet.) Both should also run faster, but you almost certainly won't notice.
  • — Reimplemented history and autocomplete file lists with a cleaner, clearer code structure.
  • — Context menu implementation now restricts you to 8192 (each) history entries, aliases, and search engines, but I think you'd have to worry about resource usage before then. (You can have more, but the context menu won't work right for more than that.) Also, aliases and search engines are now limited to a maximum of 8 categories deep. (an arbitrary limit to make the code easier)
2004-03-29 version 1.8.6 by jugg/Seg@
  • — jugg's buffer size bugfix added (no more crash if CommandOnFocus and CommandOnUnfocus actions contain more than 255 characters)
  • — custom cz_LCTokenize function replaced with a call of LS core's LCTokenize (they are similar!)
  • HistoryInit() rewritten using GetPrivateProfileString() API call. Custom implementation of procs that are available in the Windows kernel is at least strange thing :) Also it would solve a problem with unknown spaces. (Windows think that spaces is a part of comment and left them in WritePrivateProfileString call (i.e. when modules.ini is written on !Quit), but on the next LS start HistoryInit() reads these spaces as a part of command, usually other, since numbers changed :) )
  • — History is now written before eVar expansion. Is there anybody who think that !alert "X:\Documents and Settings\Seg@\Desktop\" is more informative that !alert "$Desktop$" ?
  • VarExpansion changed to VarExpansionEx. Don't know about fanatics who can type very long strings with very long eVars, but everything can be... [This was changed back in 1.9.0; the buffer is 4096 chars now, which makes VarExpansion and VarExpansionEx the same. Really just something I didn't bother to merge back in. -- rc]
  • — Fixed typos in managing transparent edit boxes (don't know how it works though :) )
  • CommandHideOnEsc
version 1.8.5 by jesus_mjjg/ilmcuts

Index

Configuration
CommandAddExternalsToHistory
*CommandAlias
CommandAssumeNetAddress
CommandBackground
CommandBevelBorder
CommandBGColor
CommandBorderColor
CommandBorderSize
CommandBottomBorderSize
*CommandChar
CommandClearHistoryOnStartup
CommandClearOnHide
CommandClockDisappearsOnFocus
CommandCommaDelimiter
CommandContextMenuAboveBox
CommandContextMenuAutoPopup
CommandContextMenuExecute
CommandContextMenuOrder
CommandContextMenuStandardItems
CommandExplorePaths
CommandHeight
CommandHiddenOnStart
CommandHideOnCommand
CommandHideOnEsc
CommandHideOnUnfocus
CommandHistoryEntries
CommandHistoryFile
CommandHistoryMenuEntries
CommandLeftBorderSize
CommandMusicPlayer
CommandNewestHistoryItemsOnTop
CommandNoAutoComplete
CommandNoClearOnCommand
CommandNoCursorChange
CommandNoTabMicroComplete
CommandNotAlwaysOnTop
CommandNotMoveable
CommandNoWarnOnError
CommandOffsetX
CommandOffsetY
CommandOnFocus
CommandOnUnfocus
CommandRightBorderSize
CommandRPNCalculator
CommandScrollWinAmpTitle
CommandSearchEngineBrowser
CommandSearchEngineList
CommandSelectAllOnFocus
CommandSelectAllOnMouseFocus
CommandStretchBackground
CommandTabFileComplete
CommandTextAlign
CommandTextBold
CommandTextColor
CommandTextFontFace
CommandTextItalic
CommandTextSize
CommandTextUnderline
CommandTime
CommandTopBorderSize
CommandTransparentEditBox
CommandUnixHistory
CommandWaitForBox
CommandWidth
CommandWinAmpDisappearsOnFocus
CommandWrapHistory
CommandX
CommandY
Bang Commands
!Command
!CommandBoxHook
!CommandBrowseFile
!CommandBrowseFolder
!CommandCalculate
!CommandClearHistory
!CommandHide
!CommandMove
!CommandRescanEngines
!CommandSearch
!CommandSetText
!CommandShow
!CommandShowContextMenu
!CommandShowText
!CommandSize
!CommandToggleTimer
!FocusCommand
!ToggleCommand