**Firestarter** is a desktop environment startup script/service manager. Its job is to abstract out the startup and configuration of basic X session components. It will attempt to piece together a fully functional desktop environment based on currently available programs and configuration files found in `~/.config/firestarter`.
Lastly, make sure you're not executing a bunch of stuff from your WM's config. Firestarter will handle the startup of bars, Pulse, etc. by itself. Double-executing will just cause more problems.
In the `contrib` directory of this repository is a series of example configuration files. These files consist of several lines that look somewhat like the following:
Every first uncommented line is a "check" command that must succeed in order for the following "target" line to be executed. Once a target command is selected, parsing stops and the target is executed. When Firestarter is invoked with no arguments, any file with a first line of `#.fsdefaults` is parsed this way.
Any file that does *not* have the initial "crunchdot" is executed normally. You can keep shell scripts or symlinks in here and they will be executed without issue.
All STDOUT and STDERR messages from these commands are saved to a logfile in `~/.local/share/firestarter/logs` under the same name as the configuration file. By default, these logfiles are rotated every time you log in.
Firestarter, in addition to spawning the programs in the default configs, also integrates with the following utilities, should the requirements be installed:
*`$PATH`: `~/.bin` and `~/.local/bin` are added to `$PATH` at the lowest priority.
* loginctl: When firestarter dies, loginctl will be called to eliminate the remainder of the session. If loginctl is not available, firestarter will kill off *only* the processes that it spawned.
* Plasma: If `kcminit` is installed, it will be invoked to configure device and theme settings. When this is the case, `XDG_CURRENT_DESKTOP` is changed to `KDE` in order for themes to actually take.
* xhost: Firestarter will open up the current session to other sessions by your user, allowing you to open a TTY and spawn your WM back in if you have to.
* The `wm` config file is special; if it exists and a target can be found for it, firestarter will watch the `_NET_WM_NAME` atom on the root window, waiting for it to initialize before starting XDG autostarts. This prevents applications from being started before the WM is ready to manage them. You can disable this by setting `FS_NOWAITWM`.
* In addition to this, setting the `FS_DIEONWM` variable makes firestarter automatically end the session if the WM were to die for any reason. This requires that the target be a simple invocation of the WM; `TERMINAL=urxvt i3` will not work.
Firestarter by no means contains an exhaustive list of all possible programs. If you know of or have created a program that should be added, *please* open an issue about it. The script should be light but its choices massive.