Tiotha
Home
Road Map
 
Help
Download
 

RUNNING TIOTHA

Command: Tiotha
Runs Tiotha using "%logonserver%\NETLOGON\programs.xml" for its settings file.

Command: Tiotha -xmlfile "C:\program files\tiotha\programs.xml"
Runs Tiotha using "C:\program files\tiotha\programs.xml" for its settings file.
Note: If you download the 0.05t release of Tiotha then compile it and run it from "C:\program files\tiotha\" Tiotha should look similar to the below image with this command.

Command: Tiotha -nostatus
Runs Tiotha without a status bar.

Command: Tiotha -noshell
Runs Tiotha without attempting to become the shell.

Command: Tiotha -noclose
Runs Tiotha with all "close" options disabled or hidden and ignores close messages sent it by the system.
Note: This has some unintended consequences that the shutdown app distributed with Tiotha handles gracefully. If you shutdown or logoff differently you may experience a message telling you that Tiotha is "not responding." If it seems to work well, you may be putting your data in other programs at risk. Either use the provided shutdown app, or make sure the method you are using will force the program to close if it is "not responding" but allows it to close normally otherwise.

Command: Tiotha -verbose
Runs Tiotha with a split view: the top encompasses the icons, while the bottom contains information resulting from applying the settings file used by Tiotha.
Note: This is a new feature as of version 0.06e.
Note: You can see an example of the verbose view in action under the troubleshooting heading within this document.

Command: Tiotha -nostatus -xmlfile "C:\program files\tiotha\programs.xml" -noclose
Runs Tiotha without a status bar, using an alternate settings file, and preventing the user from closing it.
Note: All the command line options above can be combined together in any order.
Note: If you download the 0.05t release of Tiotha then compile it and run it from "C:\program files\tiotha\" Tiotha should look similar to the below image with this command.

Command: Tiotha -nocache
Runs Tiotha with the caching feture turned off. This is recomended if you are using a local settings file.
Note: This is a new feature as of version 1.0rc2.

CREATING A SETTINGS FILE

Creating a Tiotha settings file is not difficult, in part because the bulk of one can be copied and pasted from shortcuts.

Here we will create a Tiotha settings file with just one icon, not too useful in the real world, however it should give you a good idea of what it takes.

The Basics

All Tiotha settings files must start like this.

<?xml version="1.0"?>
<tiotha>
  <allapps>
    <allicons>

Additonally, all Tiotha settings files must end like this.

    </allicons>
  </allapps>
</tiotha>

Each icon is defined between icon tags like these.
Note: <!-- Stuff like this is a comment! -->
Update: As of version 0.07av you can use the autoload and visible attributes to automatically load a program or make an icon invisible or both.

      <icon autoload="0" visible="1">  <!-- Firefox -->
      </icon>

Each icon should have a rank.
A rank enforces the order which the icons are displayed (smaller is better).
Shortcuts do NOT have an equivalent to this!

        <rank>10</rank>

Shortcut Equivalence

Each icon should have a label.
A label is the text that a user sees under the related icon.
This is equivalent to a shortcut's name.

        <label>Firefox</label>

Every icon must have a target.
A target tells Tiotha what program to launch with which parameters.
This is equivalent to a shortcut's target.

        <target>C:\Program Files\Mozilla Firefox\firefox.exe</target>

Some programs need a directory specified inorder to work properly.
A dir tells tiotha what directory to start a program in.
This is equivalent to a shortcut's "start in" entry.

        <dir>C:\Program Files\Mozilla Firefox</dir>

Every icon should have an icon file.
An icon file is the file that contains the image you want to use.
This is equivalent to the "file name" found in the change icon dialog.

        <iconfile>C:\Program Files\Mozilla Firefox\firefox.exe</iconfile>

If you want to use an icon other than the first one in the specified file, specify an icon index.
An icon index tells Tiotha which icon to use in the specified icon file.
This is equivalent to highlighting an icon in the "current icon" control.

        <iconindex>0</iconindex>

So the resulting file would look like this.

<?xml version="1.0"?>
<tiotha>
  <allapps>
    <allicons>
      <icon>  <!-- Firefox -->
        <rank>10</rank>
        <label>Firefox</label>
        <target>C:\Program Files\Mozilla Firefox\firefox.exe</target>
        <dir>C:\Program Files\Mozilla Firefox</dir>
        <iconfile>C:\Program Files\Mozilla Firefox\firefox.exe</iconfile>
        <iconindex>0</iconindex>
      </icon>
    </allicons>
  </allapps>
</tiotha>

It will work. That is, it will let you lauch Firefox if it is installed where we said it was.

Conditionals

I hope you will agree, that was pretty straight forward. I also hope you have noticed a problem. What if not all the computers that use this settings file have Firefox installed? You will get an icon that does not work and looks like this.

Fortunately conditionals can be used to filter what icons are included.

Conditionals for an icon must be placed between two conditionals tags.

        <conditionals>
        </conditionals>

Tiotha supports six conditional rules: file existence, directory existence, user group membership and their inverses.

Here is a quick run through.

If the file specified exists true else false.

          <conditional test="FileDoesExist">C:\Program Files\Mozilla Firefox\firefox.exe</conditional>

If the file specified exists false else true.

          <conditional test="FileDoesNotExist">C:\Program Files\Mozilla Firefox\firefox.exe</conditional>

If the directory specified exists true else false.

          <conditional test="DirDoesExist">C:\Program Files\Mozilla Firefox</conditional>

If the directory specified exists false else true.

          <conditional test="DirDoesNotExist">C:\Program Files\Mozilla Firefox</conditional>

If the user is a member of the specified group true else false.

          <conditional test="UserIsMember">esd189/Domain Admins</conditional>

If the user is a member of the specified group false else true.

          <conditional test="UserIsNotMember">esd189/Domain Admins</conditional>

Therefore, to make it so we only get a Firefox icon if it is installed, we change the settings as below.

<?xml version="1.0"?>
<tiotha>
  <allapps>
    <allicons>
      <icon>  <!-- Firefox -->
        <rank>10</rank>
        <label>Firefox</label>
        <target>C:\Program Files\Mozilla Firefox\firefox.exe</target>
        <dir>C:\Program Files\Mozilla Firefox</dir>
        <iconfile>C:\Program Files\Mozilla Firefox\firefox.exe</iconfile>
        <iconindex>0</iconindex>
        <conditionals>
          <conditional test="FileDoesExist">C:\Program Files\Mozilla Firefox\firefox.exe</conditional>
        </conditionals>
      </icon>
    </allicons>
  </allapps>
</tiotha>

Logical Operators

Logical Operators are used to combine conditionals.

Tiotha supports two logical operators, "and" and "or".

"And" requires that all objects one level down be TRUE or else "and" returns FALSE.
Given the relationship A and B = C where T = true and F = false.

 A   B   C 
 T   T   T 
 T   F   F 
 F   T   F 
 F   F   F 

"Or" requires that all objects one level down be FALSE or else "or" returns TRUE.
Given the relationship A and B = C where T = true and F = false.

 A   B   C 
 T   T   T 
 T   F   T 
 F   T   T 
 F   F   F 

A real world example.

Say you are unhappy with Internet Explorer and want all you users to use Firefox. However, you can't be sure that you have successfully deployed Firefox to all the workstations. Additionally, you want members of your computer support group and domain administrators to have access to Internet Explorer. You would configure your Internet Explorer icon similar to the below.

      <icon>  <!-- Internet Explorer -->
        <rank>10</rank>
        <label>Internet Explorer</label>
        <target>C:\Program Files\Internet Explorer\iexplore.exe</target>
        <iconfile>C:\Program Files\Internet Explorer\iexplore.exe</iconfile>
        <conditionals>
          <and>
            <conditional test="FileDoesExist">C:\Program Files\Internet Explorer\iexplore.exe</conditional>
            <or>
              <conditional test="FileDoesNotExist">C:\Program Files\Mozilla Firefox\firefox.exe</conditional>
              <or>
                <conditional test="UserIsMember">esd189/Domain Admins</conditional>
                <conditional test="UserIsMember">esd189/_GRP_ISSC</conditional>
              </or>
            </or>
          </and>
        </conditionals>
      </icon>

Our outermost logical operator is an <and> so if any of its components are false we will not include the icon. The first conditional checks that Internet Explorer is where we would expect it. The next component of our outermost logical operator is another logical operator <or> so if any of its components are true it will be as well. It checks if FireFox is NOT installed where we expect it. Inside the next <or> we check if the user is a member of either the group "Domain Admins" or "_GRP_ISSC" of the "esd189" domain.

RUNNING TIOTHA AS THE SHELL

By Group Policy (Recommended)

By using group policy you can simply control what users get Tiotha allowing other to continue using the start menu.

Navigate to or create your policy at an OU level that makes sense for your AD.

Once in the group policy editor locate "User Configuration/Policies/Administrative Templates/System/Custom User Interface."

Edit the policy simply specifying which program to run (along with command line options).

Using the properties of the policy you can control what groups it applies to.

Hard Coding a Workstation

Warning: This will remove the start menu from your desktop! Plot out ahead of time how you are going to fix this if you get it wrong. Usually you can do this by pressing Ctrl + Alt + Delete on you keyboard, clicking the Task Manager button on the resulting dialog, then clicking New Task on the Applications tab, typing regedit.exe in the resulting dialog and clicking OK. However, this can be restricted by Group Policy, so check that you have access to it first!

Open the registry editor and change the value of key "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell" to the desired Tiotha command. For example: "C:\program files\tiotha\tiotha.exe" -noclose

TROUBLESHOOTING

Problem: Tiotha only loads the first part of the icons I expect.
Issue: Your XML settings file is invalid.
Solution: Fix you settings file. The problem should lie between the last icon you see and the end of the next one you expect to see.
Note: You can use an XML validator to make sure this doesn't happen to you (a very good practice, especially in a production situation).
Note: As of version 0.06e you can use the -verbose command line option to view XML validation and other helpful information.

Problem: I made a change for a user, how can they tell if it worked without logging out and back in?
Issue: Tiotha doesn’t constantly check if things have changed (this makes it run much faster).
Solution: Have the user click on the Tiotha window then have them push the F5 key.

Problem: One of my users lost their Tiotha window.
Issue: Tiotha has a Window that can be drug off the screen or covered by another.
Solution: Have the user hold the Alt key and press the Tab key until Tiotha is selected then have the user release the Alt key. If Tiotha still isn't visible, have the user press the F6 key while Tiotha still has the focus.