- main - - news - - quick guide - - info. - - theme creation - - ref. sheet - - theme installation - - faq -
 
[ litestep installer, distro patch ]
   
OTS: Information  
   

LiteStep is now reaching a new level of maturity and sophistication, while growing in popularity. The LiteStep dev team have done an incredible job with the shell. They are currently engaged in an ambitious project with the geoshell team which will take LiteStep even further.

But my purpose here is not to discuss the future - it is to determine how to make best use of the excellent tools we have right now. And what tools might these be, you ask? Tools like environment variables [evars], include statements [includes], and galois' LiteStep Theme Selector [LSTS].

Now you may be thinking "I use evars, and includes, and LSTS - what are you talking about?" While it is true that many themers and users use these tools, some don't. And there is little or no consensus amongst those who do use them - each sets up and distributes themes as he or she sees fit.

If even a handful of theme authors [themers] could agree on a certain theme structure, it would make LiteStep infinitely easier to handle. Users would know when downloading a theme exactly how it is to be installed, rather than following different installation instructions for every theme. A structured approach would benefit themers too, it would be easier to distribute themes and be assured that end users could install them painlessly. It would spare themers from much of the tedious end user support and elaborate installation documentation they must often provide in the current environment.

Now some of you are no doubt concerned at any talk of a structured or standardized approach to authoring themes [themeing]. You fear that such an initiative would make themeing difficult, or limit your creativity. I assure you, the Open Theme Standard for LiteStep [OTS] will not in any way impinge on your flexibility in creating themes. Nor will it add unnecessary complications or overhead to theme creation, which is already a fairly involved process. In fact it will simplify and enhance theme creation and distribution. The OTS team consists of themers - none of us would be party to something detrimental to themers.

As you will see, OTS is not something new. It is really a formal restatement of concepts that have existed in the LiteStep community for some time. Now there are too many people who have contributed to structured themeing over the years, I'm not aware of all of them, and I can't possibly thank all the ones I am aware of individually. I'd just like to mention one individual whose site happened to introduce me both to LiteStep, and the idea that themes should be packaged in a systematic manner: tin omen.

I was originally going to call this the 'LiteStep Theme Standard', but felt that would be unfair to galois whose LiteStep Theme Selector app. has the same initials. After a moments consideration, I decided to add the word 'Open'. However this is not mere wordplay - openness is an integral part of OTS. This is why a group of respected and experienced themers was assembled for the development of the OTS specification. This is not any individual's personal pet project. OTS is about helping out the entire LiteStep community - there's no room here for egos or personal agendas. : )

Oh and one final comment before we delve into the specifics of OTS. Standards are good. Standards are important. Standards are vital to retain any sense of order and efficiency in any significant endeavour.

For a 'real-world' example of standards, lets take hardware. You can go into any hardware store and buy tools, window frames, 2x4s, pipes, faucets, etc. and you know you can use them in your house. Housing standards provide safety to homeowners, but they also enable different companies to make their own home-hardware components secure in the knowledge that they will all work together. What about computer hardware? In the days before there were open standards like OpenGL, or even DirectX APIs, game developers had to write their own video, sound and mouse drivers! Game development was thus even more difficult than it had to be, and installing, configuring & using games was often an exasperating experience.

And what about the X Windows community? If every Enlightenment or BlackBox theme had to be installed & configured in its own unique way, these 'shells' never would have been adopted and supported by end users.

 

We will begin at the highest level by examining directory structure. Each directory will be accompanied by a brief description, which will be expanded upon.

X: |__litestep...................main LiteStep directory | |__personal...............contains all user settings | |__shortcuts..............contains shortcuts [.lnk files] | |__themes.................LiteStep themes directory | |__theme-X............theme directory | |__config.........theme config. files | |__images.........theme graphics | |__misc...........skins, any other extras | |__modules........all [non-core] modules used | | | |_docs........documentation for modules | |__sounds.........sound files | |__wallpaper......desktop backgrounds

The directories mentioned above are simply the essential ones - it does not mean that these should be the only entries in the LiteStep folder hierarchy. If a theme has no sounds or wallpapers, it obviously does not need to have the corresponding folders. Nor does the directory structure need to be this flat: For example, theme graphics need not go directly into the ...theme-X\images folder - they may be placed in subfolders therein.

Each directory will now be examined, and any essential files it contains will be mentioned. At this point, the files themselves will not be discussed - they will be dealt with in the next section of this document.

litestep
[LiteStepDir]
This is where a build of LiteStep has been installed. The following core files reside here:
- step.rc
- modules.ini [presence depends on modules used]
- lsts.exe [optional]
- themepopup.rc [optional]
personal
[PersonalDir]
Four files which contain all of a user's personal settings are stored here:
- evars.rc
- hotkey.rc
- popup.rc
- personal.rc
shortcuts
[ShortcutsDir]
Shortcuts can be stored in this folder or it's subfolders for use with a wide range of LiteStep modules. They could be used by deskfolders, lslnkmenu, and popup modules, for example.
themes The main themes directory - all themes are contained in subfolders of this directory.
theme-X
[ThemeDir]
The 'root' directory for a theme. All theme related files are stored in subfolders of this directory. It should contain the following files:
- step.rc
- readme.[txt/htm]
- theme-X.thm
- preview.bmp
config
[ConfigDir]
This folder contains two core files and all general theme config. files, e.g. script.rc, syscolour.ini, rainmeter.ini, .box, etc. See the theme creation guide for more details.

Themevars.rc is used to define any evars required by a theme, and popuptheme.rc defines the standard SHIFT-left-click theme popup menu:
- themevars.rc [if required by a theme]
- popuptheme.rc [SHIFT-left-click popup menu]
images Theme images are contained here, or in subdirectories of this folder.
misc
[MiscDir]
This the place to include fonts, skins for applications such as sysmeter, Winamp, WindowBlinds, etc. Any miscellaneous items may be included here, hence the name. ; )
modules
[ModulesDir]
All third party modules used by a theme must be stored here. If a core file from a particular build is required, it may be placed here.
docs The documentation for all third party modules should be stored here.
sounds
[SoundsDir]
If a theme requires any sound files they may be placed here.
wallpaper
[WallpaperDir]
Desktop backgrounds are contained here, or in subdirectories of this folder.

 

There are four directories that contain inter-related core files in OTS: the LiteStep directory, the personal directory,the theme directory and the theme config. directory.

core files: LiteStepDir

X:\LiteStep\

step.rc This contains one line:

include "$LiteStepDir$themes\theme-X\step.rc"

In order to change themes, all that needs to be done is to change 'theme-X' in this file to the desired theme's directory name. If LSTS is used, it will automate the process of theme swapping and this file will not have to be edited manually.
modules.ini Some modules store their settings in modules.ini. If a theme uses such a module, the themer will have provided a modules.ini file which should be copied to the LiteStep directory.
lsts.exe This is the LSTS executable. It is an optional component, since OTS themes may easily be switched by editing step.rc in the LiteStep directory. However, the use of LSTS is strongly encouraged - it is an excellent theme switching tool and doesn't complicate theme creation in the slightest.
themepopup.rc This file is generated by LSTS. If a user decides to use LSTS, they may include themepopup.rc in their personal popup.rc in order to quickly switch themes via the popup. So the users personal popup.rc would contain a folder such as:

*Popup "Change Theme" Folder
include $LiteStepDir$themepopup.rc
*Popup ~Folder

core files: PersonalDir

X:\LiteStep\personal\

evars.rc This file contains environment variables chosen by the OTS team and defined by the end user according to their system. Only the most essential and commonplace environment variables are defined in this file. If a theme requires additional environment variables, they can be set in the themevars.rc file located in the config directory of the theme. The following evars are defined in evars.rc:

FileManager - path to file manager
TxtEditor - path to text editor
CmdPrompt - path to command prompt
AudioPlayer - path to audio player
MediaPlayer - path to media player
Browser - path to web browser
GfxViewer - path to graphics viewer
GfxEditor - path to graphics editor
DUN - path to dial up networking
Email - path to email client
IRC - path to IRC client
FTP - path to FTP client
IM - path to instant messaging client

Download evars.rc.
hotkey.rc User defined hotkeys.

Download a sample hotkey.rc.
popup.rc User defined popup menu.

Download a sample popup.rc.
personal.rc This file has two purposes:
1. To serve as a 'container' for all user settings by encapsulating them within itself via include statements.
2. To define very specific module settings that are to be applied universally across all themes.

A typical personal.rc file would look like:

--------------------------------
;DO NOT EDIT
include "$PersonalDir$evars.rc"
include "$PersonalDir$hotkey.rc"
include "$PersonalDir$popup.rc"

--------------------------------
;DO NOT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING. :)
*Desktop RButton !Popup
*Desktop LButton+SHIFT !PopupTheme
*jDeskMButton2 [.none;!none;!Popup;!none]
*jDeskMButton1 [SHIFT;!none;!PopupTheme;!none]

--------------------------------
;you are free to add to, remove, or change these settings:
*VWMFix Photoshop
*VWMSticky colorPadWin
jDeskDoubleClickTime "1"

A theme's step.rc only needs to include personal.rc, and all the users settings are applied. The '*Desktop' and '*jDeskMButton' statements provide access to two popup menus. The first is the default right-click popup menu [!Popup] which is entirely defined by the user in $PersonalDir$popup.rc and cannot be changed at all by a theme. The second menu [!PopupTheme] is accessed by holding SHIFT and left-clicking on the desktop. !PopupTheme is defined by a themer and may simply be an example popup menu, or it may provide access to theme settings and the like.

Download personal.rc.

core files: ThemeDir

X:\LiteStep\themes\theme-X\

step.rc This is the main theme config. file. It's style and content are defined by the themer. However, the first un-commented lines in this file must be:

ThemeName "theme-X"
ThemeAuthor "Themer X"
PersonalDir "$LiteStepDir$personal\"
ThemeDir "$LiteStepDir$themes\theme-X\"
ConfigDir "$ThemeDir$config\"
include "$PersonalDir$personal.rc"
include "$ConfigDir$themevars.rc"
include "$ConfigDir$popuptheme.rc"

Please note that the last two include lines are required only if a theme uses the themevars.rc or popuptheme.rc files.
modules.ini This file should be provided as required, according to the modules used by a theme.
readme.[txt/htm] The documentation may be as sparse or detailed as a themer wishes. Please read the theme creation guide for more details.
theme-X.thm & preview.bmp All OTS themes must supply these files so that users who wish to use LSTS may readily do so.

core files: ConfigDir

X:\LiteStep\themes\theme-X\config

themevars.rc If environment variables in addition to the ones defined in evars.rc are required by a theme, themers may put them in this file for users to set.
popuptheme.rc This file defines the !PopupTheme menu that is accessed by SHIFT-left-clicking on the desktop. See the theme creation guide for more details.

All users need to know is that their right-click popup menu will not be changed by any theme, and that they can hold down SHIFT and left-click on the desktop to access a theme specific popup menu if one has been provided.

 

Don't let the presence of this section alarm you - the OTS spec. will not be changing every weekend. ; ) A great deal of time, thought and effort has gone into OTS. Among the subjects taken into consideration were stability of the spec. and longevity. The standard has intentionally been kept minimal and simple - the less dependencies there are in a system, the more reliable it is.

This is why LSTS is a highly recommended but optional component. Hopefully LiteStep will have a long life and LSTS will be right by its side. : ) However, if LSTS were to disappear from the face of the earth, OTS would be unaffected. If LiteStep evolves to the point where structure is inherent to the shell, then there will be no need for the Open Theme Standard. Until such time however, it will be passed on and developed as required. : )

1.0, December 7, 2001 -------------------- OTS specification publicly released 0.8, November 1, 2001 -------------------- private publication of OTS specification

 

Any questions, criticisms, etc. regarding OTS or this website may be directed to me.

Please put "OTS" [without the quotes] somewhere in the subject of your email.