← All Lab Notes

Making QLab Unstoppable

revised 10/2023: changed the file name of the Launch Agent plist

The Voxel uses QLab to control critical aspects of our building, such has HVAC and work lights. Similarly, for projects such as museum installations or interactive exhibits, a robust unattended QLab installation may be required.

Note that this list differs from the official A Computer Prepares - QLab 5 Edition instructions from Figure 53. Those instructions are optimized for a typical QLab Mac with an operator running intense shows.

Rather than optimizing for performance, these instructions are focused on configuring a QLab Mac for months of reliable unattended operation.

QLab Appliance Setup Checklist

This checklist generally assumes you are starting with a fresh Mac. If a well-loved Mac is being repurposed to an unattended use, it's a good idea to reinstall macOS.

macOS System Settings

CategorySettingValuemacOS Version
SoundAlert volume0%
SoundPlay sound on startupOFF
SoundPlay user interface sound effectsOFF
SoundPlay feedback when volume is changedOFF
General - Software UpdateCheck for updatesOFF
General - Login ItemsOpen at LoginRemove all unnecessary items
General - Login ItemsAllow in the BackgroundRemove all unnecessary items
General - SharingScreen SharingON
General - AirDrop & HandoffAirDropNo One
General - AirDrop & HandoffAirPlay ReceiverOFF
Desktop & DockMission Control - Displays have separate SpacesOFF
Desktop & DockDesktop & Stage Manager - Click wallpaper to reveal desktopOnly in Stage Manager14.0 Sonoma
Energy SaverStart up automatically after a power failureON
Energy SaverWake for network accessON
Lock ScreenStart Screen Saver when inactiveNever
Lock ScreenTurn display off when inactiveNever
Lock ScreenRequire password after screen saver begins or display is turned offNever
Users & GroupsAutomatically log in as(your user account)

Add a QLab Launch Agent

A Launch Agent is a special instruction document for macOS. In this case, it asks the OS to open QLab 5 when the user logs in. After that, if QLab crashes or is quit by a user, it will automatically open QLab again.

Place this plist file in Users > (your user account) > Library > LaunchAgents. Typically the Library folder is hidden, so you must use the Go to Folder... pane to get there. In Finder, select the Go menu then choose Go to Folder... and type in ~/Library/LaunchAgents.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>KeepAlive</key>
	<true/>
	<key>Label</key>
	<string>com.figure53.QLab.5</string>
	<key>ProgramArguments</key>
	<array>
		<string>/Applications/QLab.app/Contents/MacOS/QLab</string>
	</array>
	<key>RunAtLoad</key>
	<true/>
	<key>ProcessType</key>
	<string>Interactive</string>
</dict>
</plist>

QLab Preferences

In QLab, navigate to the QLab menu and choose QLab Preferences....

SettingValue
At launchRestore most recent workspaces
Automatically check for updatesOFF

In QLab, navigate to the Tools menu and choose Black out desktop backgrounds.

Program a Startup Group Cue

In your QLab Workspace, make a Timeline Group that starts your show. Though you might have cues on Wall Clock triggers, consider what the show's behavior should be if the power briefly went out after the times have passed. Program defensively.

In Workspace Settings > General, point the When workspace opens, start cue number option to your startup Group.

Make QLab Send Texts

It might be useful to be notified when QLab has been restarted. A Script Cue can be crafted to send text messages via the macOS Messages app on an internet-connected Mac. Messages may only be sent to iOS devices unless you have a cellular iPhone set up for Text Message Forwarding.

tell application "Messages"
	set myid to get id of first account
	set theBuddy to participant "+1 ??? ???-????" of account id myid
	send ("QLab launched @ " & time string of (current date)) to theBuddy
end tell

#005 Make QLab Unstoppable