StartUp! Documentation

StartUp! launches programs, opens files, opens folders, and runs scripts for you when you boot BeOS. It gives you a nice graphical alternative to editing the UserBootscript file, making BeOS a better place for everyone from novice to expert.

Please read at least a little of these instructions, it could save you some frustration.


Installation

Installing StartUp! is simple; just follow these steps:

  1. Put the StartUp directory anywhere on your boot disk.
    Dropping it into the apps or home directories is a good choice.
  2. Double-click on the Install-StartUp.sh script in the StartUp directory.
    StartUp will tell you what it's going to do, and let you bail out if you change your mind:

    [StartUp!'s install]

    Choose to either do the install by hand, or let StartUp! install itself.

Once StartUp! is installed, you'll never have to edit your UserBootscript again.

Install by hand

To install StartUp! by hand, you'll have to do these things:

  1. Add a line to your UserBootscript to launch StartUp!:
    waitfor Twitcher
    sleep 1
    /boot/full/path/to/StartUp -launch
    
    There's no need to add & to make it run in the background, StartUp! is designed to launch everything as quickly as possible and get out of your way.
    Be sure to add the -launch argument on this line, otherwise you'll be staring at StartUp!'s main window during boot, which isn't that useful.
    To find out why you need the waitfor and sleep in there, read the Technical Information.
  2. Create a Startup Items directory in your home directory.
  3. Put things you want to start at boot time into the Startup Items directory. These can be links to applications, files, or folders, actual applications, files, or folders, shell scripts, or anything else you need to launch at boot time.

Let StartUp! install itself

If you let StartUp! install itself, it will:

  1. Preserve your original UserBootscript. You can restore this to get rid of StartUp! and go back to your normal boot routine at any time. Look in /boot/home/config/boot, the backup copy is easy to spot.
  2. Create a new Startup Items directory in your home directory.
  3. Create a new UserBootscript. The new UserBootscript will have:

After StartUp! has installed itself, you might want to run it to check your Startup Items, just to make sure StartUp! didn't put anything silly in there. If you had something complex or "interesting" in your UserBootscript, you might want to take a look in there just to make sure StartUp! didn't screw things up.

I'm confident that StartUp! won't make a total mess of things (unless your UserBootscript was seriously messed up to start with), but it's better to be safe than sorry.


Using StartUp!

Adding and removing Startup Items

Note: The main window is currently too stupid to notice if you add or remove a Startup Item while it's open. That will change before 1.0 is released.

To create a new Startup Item:

  1. Drag something into your Startup Items directory (located in your home directory).
    The something can be an application, a link to an application (a much better idea than putting the app itself there), a file, a link to a file, a shell script, a link to a shell script, a directory, or a link to a directory. That's pretty much anything on your boot disk.

    Tip: Dropping a file or directory on the main StartUp! window (or picking StartUp from the "Open With" menu in Tracker, or dropping it on the StartUp icon) will automatically create a link to it in the StartUp! items directory.

To remove a Startup Item:

  1. Drag the item from your Startup Items directory (located in your home directory) to the Trash or another directory.

The main window

After you've installed StartUp!, running it will display the main window:

[main window]

The main window lets you edit the Startup Item's name (you can also do this directly in Tracker), the command-line arguments that are given to the item, and the directory that the item starts in.

Click on any Startup Item to edit its goodies:

Name This is just the item's name, as it appears here, and in the Startup Items folder.
Arguments

Any command-line arguments that you put here will be passed to the item when it gets launched. You can use quotes to keep things together if there are spaces in an argument (for example, to pass Hello world as one argument instead of two, you'd write "Hello world" or 'Hello world').

Unlike the shell, there's no difference between using " and ' quotes (StartUp! won't expand environment variables in the command-line either; if you need to do that, you want to put a shell script here instead).

Note: If you see (or put) & here to run the app in the "background" (all Startup Items are run in the "background", as quickly as StartUp! can fire them off), it's ignored. The same is true for redirections. If that didn't make any sense to you, don't worry about it, you can ignore this stuff too. :-)

Directory

If you've got a Startup Item that absolutely must run in a particular directory, you should complain to whoever wrote such a fragile piece of software. That program probably won't work properly when you run it from the Tracker, either!

Another option is to put that directory here; the Startup Item will be launched in this directory.

Note: Yes, it sucks to type (or copy/paste) a directory here. In the future you'll click here to get a file selector instead.


Technical Support

If you've got a problem with StartUp! or a question, send email to arcanedragon@pobox.com. All tech support questions are answered by a human, as quickly as possible; please don't get bent out of shape if it takes a day or so for a reply. I usually answer email within a few hours.


Technical Information

A couple of technical notes, in case you're interested:

waitfor Twitcher

StartUp! has to wait for the Deskbar's "Twitcher" thread to finish starting up, or it causes a deadlock in the app_server. (The waitfor command waits for the named thread to start.) This is not good, and causes all sorts of evil side-effects (mostly apps that don't re-paint themselves). If you have TManager or you open a Terminal and look at the output of ps, you'll notice one or more threads blocked on tmp_rport0... that's the bug described here.

This isn't actually StartUp! causing the deadlock, but it's possible to cause it if any of your Startup Items use the desklink command to add icons, menus, etc. to the Deskbar.

The deadlock is a race condition, so it's possible that some people might never see it. Waiting for the Deskbar's "Twitcher" thread to appear, and then another second, doesn't actually seem to add any time to your boot, and it's much safer.

Note: I've had to up this to sleep 2 on my desktop (a dual P2 350MHz with a very nice IBM Deskstar 7200rpm disk in it), which is a little faster than my laptop (P2 333MHz with a much slower disk). You may have to tweak this based on how fast your system is. :-(

I'm still trying to figure out what's causing this so I can submit a bug report, fix it (if it's my fault), or add some sort of work-around. If I can't beat this, I'm not releasing StartUp! at all; requiring hackery in the UserBootscript that the user needs to fool with sort of defeats the whole purpose of this app, doesn't it?

What StartUp! understands in UserBootscript

StartUp! has a miniature shell script parser built in, so it can pick commands out of your UserBootscript at installation time and re-create them as Startup Items.

Some complex constructs aren't things that make sense as Startup Items. These include any of the () (sub-shell), case, for, if, and while constructs.

StartUp!'s parser will ignore & in a command, as well as any stream redirections (such as >/dev/null); the command will still be added as a Startup Item.

If you want any of these things to be handled by StartUp!, create a shell script in your Startup Items directory that does what you want.


Missing Features

Features I intend to add to StartUp! in the future:


Version History

Note: The following bugs are known, but not fixed yet:

Note: These are "acknowledged feature" bugs that I haven't implemented yet or decided how to handle:

The versions:

0.4.0 Fourth beta version.

Features removed:

  • everything to do with shareware nagging and/or shareware registration
0.3.0 Third beta version.

Features added:

  • notices if items are removed from the Startup Items folder (node monitor)
  • notices if new items are added to the Startup Items folder (node monitor)
  • notices if items are moved into or out of the Startup Items folder (node monitor)
  • invoking (double-click or press Enter) a Startup Item in the main window will launch it

Bugs fixed:

  • misspelt Marco's name (fixed)
  • icons in CLV are truncated on left-hand side (fixed)
  • docs aren't clear about Twicther being a thread in Deskbar, and waitfor sits around waiting for the named thread (fixed)
  • re-entering registration info seems to put you into nag land; it doesn't seem to save the new registration info (fixed)
  • sometimes crashes on startup in ULAWDecoder::Decode() while trying to play the coffee pouring sound; caused by media_server and/or media_addon_server not being done booting yet (bug submitted to Be, #20000726-20872; disabled the SFX for now)
0.2.0 Second beta version. Bugs fixed:
  • text fields might be accepting styles
  • text fields should ignore whitespace at start/end of string in registration window
  • ~/path/to/script fails
  • only title bar, menu, scroll bar in main window give it focus; ALL windows are affected
  • should store failed registration attempts in syslog
  • won't quit sometimes
  • main window close button closes window but not the app
  • garbage at end of nag text
0.1.0 First beta version.
0.0.1 Internal development builds. Initial implementation, testing, etc.

Credits

Arcane Dragon Software


Design and Programming Chris Herborth

Other Helpful People


liblayout GUI library Marco Nelissen
Santa's Gift Bag library Brian Tietz
Sound effects Partners In Rhyme
Key generation Derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm.
Tea cup icon
(for Install-StartUp.sh)
Xerxes Rânby
Helpful support/Beta testing Alex ?, #bedev, becodetalk, bedevtalk, Fred Ferrigno, Dianne Hackborn, Scot Hacker, Mikael Jansson, Meaghan, Next Generation Entertainment, Jeff Odell, Penelope, Poe, Jean-Baptiste Queru, Tyler Ritti, Peter Schultz, Owen Smith, Chris Tate, John Tegen, John Thomas, Lynette Woodward-Herborth

Last update: Mon Aug 14 11:48:19 EDT 2000


Copyright © 2000 Arcane Dragon Software, all rights reserved.

Questions? Comments? Send email!