OcLaunch Launch automagically


FAQ Summary

1. Do I have to use OcLaunch with a terminal?

No. Even if most of examples are based on this use case, you can use it with almost anything, you just need to call the program. For example, a git hook or a shortcut may be a good way to use it.

2. How are version named? What are the conventions?

It is inspired by semver.org.

Currently, for 0.x version, things are named this way:

v 0. 2. 2 -pre1
Prefix Early versions mark Changes here introduce main backward compatibility New features added here, should be compatible Optionally, a suffix to show preversion, release candidate and so on.

Source code and binary archives, internal and git tags are named this way.

This table may be adapted with new v1.x branch.

3. How is the download-area organised?

The download area is intended to store sources, binary and other project related material such as logo, GPG key, 0install feed…

Folder are organised as follow:

  • 0install: 0install prebuilt binaries, upto version 0.3.
  • internal: For internal usage.
  • multi: Multimedia content, especially video.
  • sources: source archive, before version 0.3.
  • static: Static content, to be used elsewhere. For instance, font or animated gif.
  • third-part: Third part content, for internal use.
  • v03: Groups sources and prebuilt archives in several format. Files are named following this pattern.
  • Other files are general, project-wide contents.

After version 0.3, sources and binary files are named as follow:

Prefix Versions Architecture (for prebuilt binary only) Type suffix (_src for sources, _bin for binary) Extension
oclaunch- v0.3.0-pre1 _x86_64 _bin_stripped .tar.lzma
  • _stripped signals that the size of the binary was reduced using strip. It's much smaller but you cannot load extension. This is not yet a problem since extension are not implemented.
  • You may find signature and checksum in the corresponding file, ending with .asc, .md5, etc…

4. What's the difference with CRON?

CRON is a well known tools for automation. It has 3 main differences with oclaunch.

  • Easiness: OcLaunch aims to be much more easy to use since you have commands to add entries, colorization, progression and an friendly community.
  • Planning: with OcLaunch you call the program, you choose when to launch next entry. With CRON, you need to choose a date where it would be the best moment to launch a given command. You must predict and know what the user would do. With OcLaunch, the user has the control, he knows when to launch what. Consider the example of a backup during the lunch break. What's the best: consider that the user would go to eat at a given hour or let him say to OcLaunch when he actually goes to eat?
  • In user space: OcLaunch launch commands in the user space, for example in your terminal or desktop. CRON work almost under the hood, with it's own environment. A different environment can be a problem with command you test in your session, but which work awfully in CRON. Consider the number of problem caused by this fact.
5. What's the difference with a simple add in .bashrc?

A simple add of the command you want to launch in the bashrc may looks easier but in fact, it launch alway the same things, during all the session.
With OcLaunch, it launch each item and then stop, when all is done. It can finish its work.

6. It seems to be two websites, one at oclaunch.tuxfamily.org and another at oclaunch.eu.org. What's the difference?

The website at oclaunch.eu.org is the newest, with the latest news and the freshest documentation.

The website at oclaunch.tuxfamily.org is the oldest, kept to avoid dead links from other websites.

They are both hosted by tuxfamily. See the blog post about the migration.

7. Why did you start writing this program?

I was trying to display a list of task (with Taskwarrior) each time my terminal was opened.

First, I add the command to my bashrc (zshrc actually). But it was inconvenient to display a long list of things every time you open a terminal. And I wanted to use different command, to filter task.

I first create a small bash script, directly in my bashrc. And someday, I rewrote it in OCaml. I started adding functionalities and the project truly started.

# Automatic launching of certain programs
if ! [ -f /tmp/zsh-archey ] # Working file
    touch "/tmp/zsh-archey"
# profanity
if [ -f /tmp/zsh-archey ]
    grep profanity /tmp/zsh-archey >> /dev/null
    if [ $? -eq 1 ] # If we can't find, we launch and write in the file.
        echo "profanity" >> /tmp/zsh-archey
# Diplay tasks
grep "Taskwarrior" /tmp/zsh-archey >> /dev/null
if [ $? -eq 1 ]
    # Si on ne trouve pas, on lance le programme et on écrit dans le fichier
    task rc.xterm.title=no 366
    echo "Taskwarrior" >> /tmp/zsh-archey
# A small reminder from time to time
if [ $RANDOM -le 5003 ]
    task rc.xterm.title=no 366

Almost everything has been rewritten, improved, but the idea of using a file in /tmp directory is a common denominator between the very first attempts and the current implementation.