Configuration

Configuration file

Ceremony mainly uses this plist file to adapt its interface and its behavior. By editing it, you can deeply customize the application, like choosing its components to display, specify which apps should be monitored, and what MDM to use.

Note: All the groups marked as ℹ️ Optional are not required to launch Ceremony. However, when you specify an optional group, the keys marked as required have to be specified.




Admin (Dictionary)

Let you enter the admin mode This allows you to access actions in the Admin menu bar. Here are the actual features.

Dictionary key name: Admin

Key Type Explanation Is Required
IsAdminModeEnabled Boolean If set to true, the Admin menu item in the menu bar is accessible, and so are the shortcuts.
Note: Do not forget to set the key to false after you tried you configuration and before to install it on an end-user machine.
⚠️

Input (Dictionary)

ℹ️ Optional

Lets you configure the properties of the input variables files, where all the values entered by the user will be found. You can read Input components to get more info.

Note: As this group is optional, it can be omitted. In this case, the file path will be /Users/jdoe/Ceremony/Ceremony_inputs.json and the file format will be JSON. But if you use this group, you cannot omit the FileFormat key.

Dictionary key name: Input

Key Type Possible values/Examples Explanation Is Required
FileFormat String PLIST, JSON Lets you specify the file format you want to use to save the input variables ⚠️
FilePath String - Let you specify the path of the file where Ceremony will write in.
Note: Prefer absolute paths, and avoid special characters like ~. For the tilde, you should use the ${USER_NAME} placeholder which Ceremony will populate.
About the input file path

You need to specify the full path to the file, for example: /tmp/user_input.json or /Users/Shared/enrollment_inputs.plist. The extension of the file has to match the FileFormat key. Note that you may need to give the right to the end-user to write in some directories if necessary, for Ceremony to be able to save the file in those directories.


Font styles (Dictionary)

ℹ️ Optional

You can define here custom font configurations which will be available in any place where you can use font configurations. To use a font configuration defined here, you just need to add the key Style in the font configuration dictionary, and to give as value the name of the key. A font configuration can have a style and implement other properties, like setting the color. Note that if a font configuration uses a style but also specifies properties which exist in the style, the properties in the style will be overridden.

To use them in a font configuration elsewhere in the plist, simply set the key Style to the name of the style you want to use.

You can define default fonts that will be used in Ceremony by default if possible when no other font configuration is specified.

Dictionary key name: FontStyles

Key Type Explanation Is Required
DefaultPrimary Font configuration Used when displaying simple text
DefaultSecondary Font configuration Used when displaying text which is less important, like details
Example

We defined here two font styles: Title and Body:


    <dict>
      <key>Title</key>
      <dict>
        <key>SystemFontWeight</key>
        <string>Bold</string>
        <key>Size</key>
        <integer>30</integer>
      </dict>
        <key>Body</key>
        <dict>
            <key>SystemFontWeight</key>
            <string>Regular</string>
      </dict>
    </dict>
    

You can use a font style to define another font style. Do note that if you specify a style A for a font that is already used as a style B in the style A, Ceremony will ignore one of the style to avoid infinite loops.

Example:

    <dict>
        <key>Title</key>
        <dict>
            <key>SystemFontWeight</key>
            <string>Bold</string>
            <key>Size</key>
            <integer>30</integer>
            <key>Style</key>
            <string>Title2</string>
        </dict>
        <key>Title2</key>
        <dict>
            <key>Style</key>
            <string>Title</string>
            <key>Color</key>
            <dict>
                <key>Style</key>
                <string>Main</string>
        </dict>
    </dict>
    

Color styles (Dictionary)

ℹ️ Optional

You can define here custom colors which will be available in any place where you can use colors. To use a font configuration defined here, you just need to add the key Style in the font configuration dictionary, and to give as value the name of the key. A color can have a style and implement other properties, like setting the alpha. Note that if a color uses a style but also specify properties which exist in the style, the properties in the style will be overridden.

To use styles in a colors elsewhere in the plist, simply set the key Style to the name of the style you want to use.

You can define default colors that will be used in Ceremony by default if possible when no other color is specified.

Dictionary key name: ColorStyles

Key Type Explanation Is Required
DefaultBorder Color The default color to apply to containers and components borders
Example

We defined here two colors: Main and Secondary:


    <dict>
        <key>Main</key>
        <dict>
            <key>DarkMode</key>
            <string>#819ABE</string>
            <key>LightMode</key>
            <string>#ED682580</string>
        </dict>
        <key>Secondary</key>
        <dict>
            <key>DarkMode</key>
            <string>#000000</string>
            <key>LightMode</key>
            <string>#50607F</string>
        </dict>
    </dict>
    

You can use a color style to define another color style. Do note that if you specify a style A for a font that is already used as a style B in the style A, Ceremony will ignore one of the style to avoid infinite loops.


ℹ️ Optional

Lets you customize some properties relative to the navigation view. This view is at the bottom of the window and display the navigation buttons. The last slide will display a Quit button instead of the Next button, whose text will differ. This Quit button will make the app to terminate. It will be enabled only if all the application monitors specified in the monitors are installed. And it will allow to quit the app only if the current slide is valid.

Dictionary key name: Navigation

Key Type Explanation Is Required
IsHidden Boolean If set to true, the navigation view will be hidden (useful when displaying one slide in full screen for example). Default is false
PreviousButtonText String The text of the previous button (left)
NextButtonText String The text of the next button (right)
PreviousButtonTextColor Color The text color of the previous button (left)
NextButtonTextColor Color The text color of the previous button (right)
QuitButtonText String Let you customize the text of the Quit button which appears on the last slide, replacing the next button
InstallationIncompleteQuitText String The text displayed in an alert when the user clicks the Quit button despite all applications/packages are not installed.
UserCanQuitIfInstallationIsIncomplete Boolean If set to true, this key allows the user to quit the app with the Quit Button or the Quit shortcut even if all applications/packages are not installed. Default is false.
Note: If the user closes Ceremony window, the behavior you specified is ignored and the app is terminated with no conditions. To avoid that, checkout IsClosable key in Window

App Termination (Dictionary)

ℹ️ Optional

Groups all the keys to customize the app termination behavior.
Note
This group is optional. It can be omitted. In this case. the classic shortcut to quit the app will be enabled, and no script will be executed when the app terminates.

Dictionary key name: AppTermination

Key Type Explanation Is Required
QuitShortcutIsEnabled Boolean If set to true, the classic ⌘Q is enabled to let the user quit the app. Otherwise, the shortcut is ⌃⌘⌥Q ⚠️
IncompleteInstallationScriptPath String A path to a script to execute.
Note: When Ceremony terminates, the installation is complete if all the application monitors. If the installation is incomplete, the script specified at this path will be executed
⚠️
CompleteInstallationScriptPath String A path to a script to execute.
Note: When Ceremony terminates, the installation is complete if all the application monitors. If the installation is complete, the script specified at this path will be executed
⚠️


Note
The following commands in a script allow you to restart and shutdown the computer, while not requiring the root rights:

Thus, you can use these commands at the end of the scripts to be executed when the application terminates. This solution - rather than doing it in Ceremony internally - ensures that your scripts will be executed to the end, before the computer restart or shutdown. Simple scripts to restart and shutdown are included in the Ceremony download file.


General (Dictionary)

ℹ️ Optional

All the variables that can be used to populate strings. See the Variables section to know more about how to use them.

Dictionary key name: General

Key Type Explanation Is Required
Pling Boolean If set to true, a pling noise will be played when all the monitors you specified in the monitors are successfully installed. Default is false
Variables Dictionary Contains the variables to use in the rest of the configuration file

You can use other variables when defining one variable as long you respect those rules :

Examples

    <dict>
        <key>ResourcesPath</key>
        <string>Users/${USER_NAME}/Desktop/Ceremony</string>
        <key>ApplicationIconsPath</key>
        <string>${ResourcesPath}/ApplicationIcons</string>
    </dict>
    

To avoid: variables definition infinite loop


    <dict>
        <key>FIRST_VAR</key>
        <string>Hello ${SECOND_VAR}</string>
        <key>SECOND_VAR</key>
        <string>How are you ${FIRST_VAR}</string>
    </dict>
    

Window (Dictionary)

Groups all the keys associated to the window configuration

Dictionary key name: Window

Key Type Possible keys Explanation Is Required
Title String - The title of the window in the title bar. If this key is omitted, no title is displayed in the title bar
MinimumWidth Number - The minimum width at which the window can be resized
MinimumHeight Number - The minimum height at which the window can be resized
MaximumWidth Number - The maximum width at which the window can be resized
MaximumHeight Number - The maximum height at which the window can be resized
IsClosable Boolean - true: the window wan be closed by the user ⚠️
IsResizable Boolean - true: the window wan be resized by the user (accordingly to the MinimumWidth and MinimumHeight) ⚠️
OnScreen String Simple, BlurredBackground, FullScreen Specify how the Ceremony window should appear on screen.
Note: When BlurredBackground or FullScreen are specified, the other keys in the Window dictionary are ignored, except for the MaximumWidth, which is used to configure the window with BlurredBackground
⚠️

Slides (Array)

Array key name: Slides

Contains all the slides that will be displayed to the user. See the Slides section to learn how to use slides. You can also checkout the preset Plist files.


Monitoring (Dictionary)

ℹ️ Optional

You choose in this section how to monitor applications and packages installation, or file presence.

Dictionary key name: Monitoring

Key Type Explanation Is Required
JamfLogPath String Lets you override the path to the Jamf log file path. Default is /var/log/jamf.log
AirWatchInstallLogPath String Lets you override the path to the AirWatch Install log file path. Default is /Library/Application Support/AirWatch/Data/Munki/Managed Installs/Logs/Install.log
AirWatchManagedSoftwareUpdateLogPath Number Lets you override the path to the AirWatch ManagedSoftwareUpdate log file path. Default is /Library/Application Support/AirWatch/Data/Munki/Managed Installs/Logs/Install.log
Monitors Monitors Array Specify here the files, applications or packages installations you want Ceremony to monitor. See the Monitoring section for more info. You can also checkout the preset Plist files . ⚠️