# Installation

## Step 1: Installing the Script

### Option 1: Install using the Manager App

To install the script, you can use the [aescripts + aeplugins manager app](https://aescripts.com/learn/aescripts-aeplugins-manager-app/). Make sure to use at least version *1.5.344.0* of the app, otherwise, the script won't be installed correctly.

When you're installing the trial, click on *Account > Add Trial* in the app and search for *Workflower 2*. After you added the trial, you can simply click on *Install.*

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2FfPwvASVPdAYpdamobxMq%2FScreenshot%202024-08-26%20at%2014.57.45.png?alt=media&#x26;token=7297065c-094c-4751-ba15-6b659f018dcf" alt="" width="344"><figcaption><p>Adding the Trial to install it</p></figcaption></figure>

When you've already licensed *Workflower 2*, you can install it from the *Licenses* tab.

{% hint style="danger" %}
If you receive an error upon opening AE because the *WQ* plugin cannot load (seems to be mostly an issue on Mac), please read the [following section](#possible-issues-with-the-wq-plug-in).
{% endhint %}

### Option 2: Manual Install

If you're not using the manager app, please follow these instructions:

Download the script from [aescripts.com/workflower/](https://aescripts.com/workflower/). (You can simply download the trial by clicking on *'TRY'*. This also works for people with a license as trial and licensed product are the same file. If you have a license, you may also go to your account, then click on *My Downloads & Licenses* to download *Workflower*.)

Unzip the downloaded file. In the unzipped files, you'll find a folder called *"00 Files":*

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2FCI9mmJuuyzE2YKwLX4Ka%2FScreenshot%202024-12-22%20at%2000.46.24.png?alt=media&#x26;token=9968c003-8691-4cff-a00b-70f1a5abf06c" alt="" width="375"><figcaption></figcaption></figure>

Within this folder, you'll find all relevant files to copy-paste:

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2F43rUYV8PIuF0bK4VE1sI%2FScreenshot%202024-12-22%20at%2000.46.12.png?alt=media&#x26;token=101527fc-73fd-4924-b25b-c809fcd4f8b2" alt="" width="227"><figcaption></figcaption></figure>

#### 01 Script

In the folder *"01 Script"*, you'll find the file *"--- Workflower ---.jsxbin".* Copy and paste this file into *After Effects'* **Scripts folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts**
* Mac: **/Applications/Adobe After Effects XX/Scripts**

#### 02 ScriptUI Panel

In the folder *"02 ScriptUI Panel"*, you'll find the file *"Workflower ScriptUI Panel.jsxbin".* Copy and paste this file into *After Effects'* **ScriptUI Panels folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts\ScriptUI Panels**
* Mac: **/Applications/Adobe After Effects XX/Scripts/ScriptUI Panels**

#### **03 Startup**

In the folder *"03 Startup"*, you'll find the file *"Workflower Startup.jsxbin".* Copy and paste this file into *After Effects'* **Startup folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Scripts\Startup**
* Mac: **/Applications/Adobe After Effects XX/Scripts/Startup**

#### 04 Plug-in

In the folder *"04 Plug-in Windows"* or *"04 Plug-in Mac"* (choose depending on your OS), you'll find the folder *"TerribleJunkShow"*. Copy and paste the entire folder *"TerribleJunkShow"* (**not only** *"WQ.aex"* or *"WQ.plugin"*) into *After Effects'* **Plug-ins folder**:

* Windows: **C:\Program Files\Adobe\Adobe After Effects XX\Support Files\Plug-ins**
* Mac: **/Applications/Adobe After Effects XX/Plug-ins**

{% hint style="warning" %}
In case you experience issues with the *WQ* plug-in upon opening *After Effects* (seems to be only an issue on Mac), please check out [this section](#possible-issues-with-the-wq-plug-in).
{% endhint %}

#### 05 App Data

In the folder *"05 App Data Windows"* or *"05 App Data Mac"* (choose depending on your OS), you'll find the folder *"Workflower for After Effects"*. Copy and paste the entire folder *"Workflower for After Effects"* (**not only** the content) into your system's **App Data folder**:

* Windows: *Path of* **%PROGRAMDATA%**, *by default this is* **C:\ProgramData**
  * (*To find it, simply type C:\ProgramData into the search bar of the file browser as it might visibly not appear at the highest level of C:)*
* Mac: **/Library/Application Support**
  * *(To find it, simply go to the highest level of your main drive, then click on Library > Application Support)*

### Taking Precautions with Workflower's Script Files

{% hint style="warning" %}
You need to put the script files into the system scripts folder, as specified above, **not** the user scripts folder. Otherwise, the script won't work. That's why you also **can't** install the script via the *File > Scripts > Install Script File...* which would put the script into the user scripts folder.
{% endhint %}

{% hint style="danger" %}
If accidentally put *--- Workflower ---.jsxbin* into the *ScriptUI Panels* folder or into the user scripts folder and you then copied the file to the correct location, you need to make sure the file at the wrong location is deleted because the script otherwise won't work.
{% endhint %}

Make sure that the main script *"--- Workflower ---.jsxbin"* is the first or one of the first entries in the folder. (However, because of its name, starting with "---", it should appear at the top or near the top most of the time anyway.) This is important because *After Effects* can apply shortcuts only to the first 20 scripts within the scripts folder. So *"--- Workflower ---.jsxbin"* should be at least script 20 when you're on Windows, or pretty much script 1 when you're on Mac. (On Mac, *Workflower* will have to install more scripts in the scripts folder to apply shortcuts. For more on this, read the [chapter on Shortcut Modes](https://workflower.constantin-maier.com/main-functions/shortcuts#shortcut-modes).)

![Workflower Script at the Top of the Folder](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQrCmGZz5honeHZINyR%2F-MVIXere37eVOoEY9CNt%2F-MVIZfpEwiy2F-RqwPjs%2FWF-File-in-Folder-2-Scale.jpg?alt=media\&token=5118ad18-eb77-400a-9ce2-e488067c7e9f)

{% hint style="danger" %}
Also, be aware that you should **NEVER** rename the script files. If they don't have exactly that name, the script won't work.
{% endhint %}

### After Installing the Script Files

After copying the script files or installing them via the manager app, (re-)start *After Effects*, go to *File / Scripts* and click on *"--- Workflower ---.jsxbin"*.

If you didn't install the ScriptUI Panel yourself, *Workflower* will now inform you about how to install it yourself.

Afterwards, you will be directed to install the shortcuts.

### Possible Issues with the *WQ* Plug-In

On Mac, the OS might refuse to load the plug-in upon launching *After Effects* since Apple cannot scan for malicious software:

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2Fda9zZQ8T8JYTUiRTT0zY%2Fwq_cant_open_dialog_small.jpg?alt=media&#x26;token=4d9ab24d-19ae-4c13-92c8-37e6c3ac0c89" alt=""><figcaption><p>WQ.plugin Error</p></figcaption></figure>

If that's the case, please do the following:

1. Make sure the problem just occurred. If it didn't, start *After Effects* so the error will be triggered.
2. Open up your *System Preferences*
3. Go to *Privacy & Security*:
   * ![](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2FfTVKGoulJDl9OlNvvvoF%2Fallow-plugin_01.jpg?alt=media\&token=430f5fd5-e47c-4f42-9390-faae56ef8b40)
4. *On MacOS Ventura/Sonoma* and later, scroll down the *Privacy & Security* settings page. On *MacOS Monterey* and earlier, make sure you're at the *General* tab of the *Privacy & Security* settings page.
5. Allow *WQ.plugin* to load:
   * ![](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2Fj9qsj8DIENMZsk6WDePF%2Fallow-plugin.jpg?alt=media\&token=303e8162-6d03-465c-847a-f01aed332a94)
6. Restart *After Effects*
7. You will get the same error message but this time you can click on *Open*:
   * ![](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2Fyf2HoCe93K9zHjvCjDzq%2Fallow-plugin_02.jpg?alt=media\&token=6ca54bad-a14a-4601-8044-da6465000c2d)

You may also take a look at [this quick video tutorial](https://drive.google.com/file/d/124Gt95VeD2RBMpXQLdf-RgGtfUiTck_M/view?usp=sharing) on how to fix the issue.

If you experience something similar on Windows, please make sure to exempt the plug-in from a security check as well.

## Step 2: Installing the Shortcuts

During the installation process of *Workflower*, eventually the *Keyboard Shortcuts* panel will come up.

![Workflower Keyboard Shortcuts Panel](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQrCmGZz5honeHZINyR%2F-Md9JQI4D_uCSwQbc9fx%2F-Md9JXAMYdmKSqbJ4Qh5%2FShortcuts---Panel-New.jpg?alt=media\&token=ad3d8c64-8c84-4dc5-a81f-8d229362f734)

In the *Keyboard Shortcuts* panel, the default shortcuts will have been set (if chosen before). You can customize your shortcuts by clicking on *Edit* next to the shortcut. When you're done, make sure to click on *Save* to apply the shortcuts. (Otherwise, no shortcuts will be applied.)

From now on, you can access any *Workflower* function via a shortcut. Either by hitting the shortcut of the main panel (from where you can access every function) or the shortcut of the desired function itself.

{% hint style="info" %}
For more information on shortcuts and the different shortcut modes (the default mode is a different one on Windows than on Mac), read the chapter on [Shortcuts](https://workflower.constantin-maier.com/main-functions/shortcuts).
{% endhint %}

#### Keyboard Layout Presets

*Workflower* will always set shortcuts on the current *Keyboard Layout* in *After Effects*. It is not possible, however, to set shortcuts on the default layout (*After Effects Default.txt*). Go to the *After Effects Keyboard Shortcuts* panel to change it. Click on *Save As...* to create a copy of it and define a new preset.

![Saving a Copy of the Default Shortcut File](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQrCmGZz5honeHZINyR%2F-MVGpZjwQFaR9P-QKHJl%2F-MVGqCLucVSI186uePSx%2FShortcuts-Preset.jpg?alt=media\&token=28c1eebc-47ab-41b0-834b-59cbec6b9011)

If *After Effects* is running in another language than English, it **will** be possible to set *Workflower* shortcuts on the default file (since it will not be the *After Effects Default.txt* file); it is recommended, however, to create a copy of that, too, in order to have a backup copy the original shortcuts.

After creating the new preset, click on *OK* and open up the *Workflower Keyboard Shortcuts* panel to set the shortcuts.

{% hint style="warning" %}
When, at some point, you switched the *Keyboard Layout* within *After Effects*, hitting a *Workflower* shortcut might not have an effect since no shortcuts have been associated with the new keyboard layout. In that case, go to *File / Scripts* and click on *"--- Workflower ---.jsxbin"* agai&#x6E;*. Workflower's* main panel will come up. Now go to the *Workflower Keyboard Shortcuts* panel and set shortcuts for this layout.
{% endhint %}

## (Step 3:) Updating the Script

### Option 1: Update using the Manager App

To update the script, you can use the [aescripts + aeplugins manager app](https://aescripts.com/learn/aescripts-aeplugins-manager-app/). Make sure to use at least version *1.5.344.0* of the app, otherwise, the script won't be installed correctly.

After updating make sure to restart *After Effects* in case you have it open already.

### Option 2: Manual Update

If you're not using the manager app, download the new version of *Workflower* from [aescripts.com](http://www.aescripts.com) and you will receive all installation files. Repeat the steps as outlined in the [Manual Installation](#option-2-manual-install) instructions. Choose to replace all prior installed files.

Now you have successfully updated to the newest version. Afterwards, make sure to restart *After Effects* in case you have it open already.

When you're on Mac, or you're using [Individual Scripts Mode](https://workflower.constantin-maier.com/main-functions/shortcuts#individual-scripts-mode-windows-mac) on Windows, after updating the main script file, all other shortcut slots will have to be updated to the newest version as well. Just execute any *Workflower* function and all shortcut slots will be automatically updated.

## (Step 4:) Setting up KBar Buttons <a href="#kbar" id="kbar"></a>

**(Added in** [**version 1.0.4**](https://workflower.constantin-maier.com/releases#1-0-4)**)**

*Workflower* supports [KBar](https://aescripts.com/kbar/) buttons. As of Workflower 2.5, there are two ways of setting up the buttons:

#### 1.) Set up via Linking Script File (since Workflower 1.0.4)

![Setting up a KBar Button via Script File Linking for 'Create Group'](https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQrCmGZz5honeHZINyR%2F-MjEHmXB6M0vd8e2gBkX%2F-MjEMDaHc82JUGMOBIH5%2FKBar---Set-Up.jpg?alt=media\&token=7828a485-999a-467d-ad44-9570588c5d6d)

To set up a KBar button via linking, go to *KBar's* settings, click on *Add Button* and select *Run JSX/JSXBIN File*. Now link it to the script file *"--- Workflower ---.jsxbin".*

This also applies when you're on Mac or you're using [Individual Scripts Mode](https://workflower.constantin-maier.com/main-functions/shortcuts#individual-scripts-mode-windows-mac) on Windows - do **not** link it to another shortcut slot file in that case (like *"--- Workflower II Function 03 ---.jsxbin"*). Afterwards, put in your desired function name.

#### 2.) Set up via Workflower API (since Workflower 2.5)

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2FVH4hLSB8p5bXNgq0bVCL%2FScreenshot%202024-09-11%20at%2016.16.59.png?alt=media&#x26;token=ad42e387-48e1-4067-9322-948344e07070" alt="" width="375"><figcaption></figcaption></figure>

To set up via the [Workflower API](https://workflower.constantin-maier.com/main-functions/scripting-api), go to *KBar's* settings, click on *Add Button* and select *Run Scriptlet*. Now put in this code (please note that the API variable *wfAPI* is outdated and has been replaced by *workflowerScriptAPI*):

```javascript
workflowerScriptAPI.kbarExecute("functionName")
```

So, when you want to add [Create Group](https://workflower.constantin-maier.com/group-functions/create-and-duplicate-groups#create-group), you would write:

```javascript
workflowerScriptAPI.kbarExecute("createGroup")
```

The advantage of using the API over [linking the script file](#id-1.-set-up-via-linking-script-file-since-workflower-1.0.4) is that the button will always call the *Workflower* file within the AE version that's currently running. When you're using *Script File Linking* on the other hand and you've linked the script file in another AE version, however, the wrong Workflower file will be called (e.g. you originally set up the buttons in AE 2023, then upgrade to AE 2024), meaning you will have to redirect each of the buttons to the current AE version.

{% hint style="warning" %}
To call a function via the API, *Workflower* needs to have been started once in your session. Opening and closing the ScriptUI Panel will suffice for example.

You may even check within your KBar command for this, so you don't have to manually open and close the ScriptUI Panel after every After Effects launch (you'll only need to change the *functionName* variable):

```javascript
var functionName = "createGroup";
if (typeof workflowerScriptAPI === "undefined"){
   var cmdID = app.findMenuCommandId("Workflower ScriptUI Panel.jsxbin");
   if (cmdID){
      app.executeCommand(cmdID);
      app.executeCommand(cmdID);
   }
}
workflowerScriptAPI.kbarExecute(functionName);
```

{% endhint %}

### Function Names

To link a *KBar* button to a specific function, use these script function names:

#### Main Functions

| Workflower Function                                                                                                                    | Function Name in KBar    |
| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| [Main Menu](https://workflower.constantin-maier.com/main-functions/main-menu)                                                          | menu                     |
| Settings                                                                                                                               | settings                 |
| [Keyboard Shortcuts](https://workflower.constantin-maier.com/main-functions/shortcuts)                                                 | keyboardShortcuts        |
| [Refresh Layout](https://workflower.constantin-maier.com/main-functions/layout#refresh-layout)                                         | refreshLayout            |
| [Toggle Non-Indented Layout](https://workflower.constantin-maier.com/main-functions/layout#toggle-non-indented-layout)                 | nonIndentLayout          |
| [Toggle Expression Mode](https://workflower.constantin-maier.com/main-functions/layout#toggle-expression-mode)                         | expressionModeLayout     |
| [Show / Hide Layer Relationships](https://workflower.constantin-maier.com/main-functions/layout#show-hide-layer-relationships)         | showLayerRelationships   |
| [Refresh Connections](https://workflower.constantin-maier.com/main-functions/connections#refresh-connections)                          | refreshConnections       |
| [Quick Refresh Connections](https://workflower.constantin-maier.com/main-functions/connections#quick-refresh-connections-experimental) | quickRefreshConnections  |
| [Add / Remove Layer / Mask References](https://workflower.constantin-maier.com/main-functions/connections#add-remove-layer-references) | addRemoveLayerReferences |
| [Link / Unlink Properties](https://workflower.constantin-maier.com/main-functions/connections#link-unlink-properties)                  | linkUnlinkProperties     |
| [Sort Project Items](https://workflower.constantin-maier.com/main-functions/layout#sort-project-items)                                 | sortProjectItems         |
| [Reveal Project File](https://workflower.constantin-maier.com/main-functions/main-menu#reveal-project-file)                            | revealProjectFile        |

#### Group Functions

| Workflower Function                                                                                                                                   | Function Name in KBar                            |
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [Create Group](https://workflower.constantin-maier.com/group-functions/create-and-duplicate-groups#create-group)                                      | createGroup                                      |
| [Duplicate Group](https://workflower.constantin-maier.com/group-functions/create-and-duplicate-groups#duplicate-group)                                | duplicateGroup                                   |
| [Expand / Collapse Group](https://workflower.constantin-maier.com/group-functions/collapse-and-select-groups#expand-collapse-group)                   | expandGroup                                      |
| [Expand / Collapse All Sub-Groups](https://workflower.constantin-maier.com/group-functions/collapse-and-select-groups#expand-collapse-all-sub-groups) | expandAllSubGroups                               |
| [Select Group](https://workflower.constantin-maier.com/group-functions/collapse-and-select-groups#select-group)                                       | selectGroup                                      |
| [Delete Layer / Clone / Group](https://workflower.constantin-maier.com/group-functions/ungroup-dissolve-and-delete-groups#delete-layer-clone-group)   | deleteLayerCloneGroup                            |
| [Ungroup Layer/s](https://workflower.constantin-maier.com/group-functions/ungroup-dissolve-and-delete-groups#ungroup-layers)                          | ungroup                                          |
| [Dissolve Group](https://workflower.constantin-maier.com/group-functions/ungroup-dissolve-and-delete-groups#dissolve-group)                           | dissolveGroup                                    |
| [Parent Layers to Group](https://workflower.constantin-maier.com/group-functions/parent-group-layers#parent-layers-to-group)                          | parentGroup                                      |
| [Set Parent Exception Layer](https://workflower.constantin-maier.com/group-functions/parent-group-layers#set-parent-exception-layer)                  | parentExceptionLayer                             |
| [Center Group Header](https://workflower.constantin-maier.com/group-functions/miscellaneous-group-functions#center-group-header)                      | centerHeader                                     |
| [Enable / Disable Group](https://workflower.constantin-maier.com/group-functions/disable-solo-and-lock-groups#enable-disable-group)                   | enableGroup                                      |
| [Solo Group](https://workflower.constantin-maier.com/group-functions/disable-solo-and-lock-groups#solo-group)                                         | soloGroup                                        |
| [Lock Group](https://workflower.constantin-maier.com/group-functions/disable-solo-and-lock-groups#lock-group)                                         | lockGroup                                        |
| [Relabel Layer / Group / Keyframe](https://workflower.constantin-maier.com/layer-functions/relabeling#relabel-layer-s)                                | relabelLayers                                    |
| [Relabel Layer/s](https://workflower.constantin-maier.com/layer-functions/relabeling#relabel-layer-s) with a specific label color                     | relabelLayers(*label-ID*), e.g. relabelLayers(3) |

#### Layer Functions

| Workflower Function                                                                                                                           | Function Name in KBar     |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- |
| [Create Matte](https://workflower.constantin-maier.com/layer-functions/matting#create-matte)                                                  | createMatte               |
| [Merge Mattes](https://workflower.constantin-maier.com/layer-functions/matting#merge-mattes)                                                  | mergeMattes               |
| [Clone and Precomp](https://workflower.constantin-maier.com/layer-functions/cloning#clone-and-precomp)                                        | cloneAndPrecomp           |
| [Clone in Comp](https://workflower.constantin-maier.com/layer-functions/cloning#clone-in-comp)                                                | cloneInComp               |
| [Show Clone Layers](https://workflower.constantin-maier.com/layer-functions/cloning#show-clone-layers)                                        | showCloneLayers           |
| [Show and Solo Clone Layers](https://workflower.constantin-maier.com/layer-functions/cloning#show-clone-layers)                               | showAndSoloCloneLayers    |
| [Preview Custom Clone Size](https://workflower.constantin-maier.com/layer-functions/cloning#preview-custom-clone-size)                        | previewCustomCloneSize    |
| [Create Linked Adjustment Layer](https://workflower.constantin-maier.com/layer-functions/adjustment-layers#create-linked-adjustment-layer)    | linkedAdjustmentLayer     |
| [Create Matted Adjustment Layer](https://workflower.constantin-maier.com/layer-functions/adjustment-layers#create-matted-adjustment-layer)    | mattedAdjustmentLayer     |
| [Convert Property to Comp Size](https://workflower.constantin-maier.com/layer-functions/adjustment-layers#convert-property-to-comp-size)      | convertPropertyToCompSize |
| [Rename Layer/s](https://workflower.constantin-maier.com/layer-functions/renaming#rename-layer-s)                                             | renameLayers              |
| [Rename Layers by Number](https://workflower.constantin-maier.com/layer-functions/renaming#rename-layers-by-number)                           | renameLayersByNumber      |
| [Store Layers 1](https://workflower.constantin-maier.com/layer-functions/storing-layers#store-layers)                                         | storeLayers1              |
| [Store Layers 2](https://workflower.constantin-maier.com/layer-functions/storing-layers#store-layers)                                         | storeLayers2              |
| [Store Layers 3](https://workflower.constantin-maier.com/layer-functions/storing-layers#store-layers)                                         | storeLayers3              |
| [Store Layers 4](https://workflower.constantin-maier.com/layer-functions/storing-layers#store-layers)                                         | storeLayers4              |
| [Paste Stored Layers 1](https://workflower.constantin-maier.com/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers1              |
| [Paste Stored Layers 2](https://workflower.constantin-maier.com/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers2              |
| [Paste Stored Layers 3](https://workflower.constantin-maier.com/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers3              |
| [Paste Stored Layers 4](https://workflower.constantin-maier.com/layer-functions/storing-layers#paste-stored-layers)                           | pasteLayers4              |
| [Store Layers by ID](https://workflower.constantin-maier.com/layer-functions/storing-layers#store-layers)                                     | storeLayersByID           |
| [Paste Stored Layers by ID](https://workflower.constantin-maier.com/layer-functions/storing-layers#paste-stored-layers)                       | pasteLayersByID           |
| [Save Global Store Comp](https://workflower.constantin-maier.com/layer-functions/storing-layers#saving-global-store-comps)                    | saveGlobalStoreComp       |
| [Load Global Store Comp](https://workflower.constantin-maier.com/layer-functions/storing-layers#loading-global-store-comps)                   | loadGlobalStoreComp       |
| [Tag / Untag Layer/s](https://workflower.constantin-maier.com/layer-functions/tagging-layers#tag-untag-layer-s)                               | tagUntagLayers            |
| [Perform Action on Tagged Layer/s](https://workflower.constantin-maier.com/layer-functions/tagging-layers#perform-action-on-tagged-layer-s)   | performOnTaggedLayers     |
| [Activate / Deactivate Tag Group 1](https://workflower.constantin-maier.com/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag1              |
| [Activate / Deactivate Tag Group 2](https://workflower.constantin-maier.com/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag2              |
| [Activate / Deactivate Tag Group 3](https://workflower.constantin-maier.com/layer-functions/tagging-layers#activate-deactivate-tag-group-1-2) | activateTag3              |
| [Reveal Layer Opacity](https://workflower.constantin-maier.com/layer-functions/miscellaneous-layer-functions#reveal-layer-opacity)            | revealLayerOpacity        |
| [Show / Hide Move Indicator](https://workflower.constantin-maier.com/main-functions/layout#show-hide-move-indicator)                          | showMoveIndicator         |
| [Precompose](https://workflower.constantin-maier.com/layer-functions/precomposing#precompose)                                                 | precompose                |
| [Pre-Render](https://workflower.constantin-maier.com/layer-functions/pre-rendering#pre-render)                                                | preRender                 |
| [Show / Hide Pre-Render](https://workflower.constantin-maier.com/layer-functions/pre-rendering#show-hide-pre-render)                          | showHidePreRender         |
| [Show / Hide Pre-Render WF Proxy](https://workflower.constantin-maier.com/layer-functions/pre-rendering#show-hide-pre-render-wf-proxy)        | showHidePreRenderWFProxy  |
| [Push Frame to Photoshop](https://workflower.constantin-maier.com/layer-functions/pre-rendering#push-frame-to-photoshop)                      | pushFrameToPhotoshop      |
| [Mark Pre-Render State](https://workflower.constantin-maier.com/layer-functions/pre-rendering#mark-pre-render-state)                          | markPreRenderState        |
| [Exempt Layer Name from Alteration](https://workflower.constantin-maier.com/main-functions/layout#exempt-layer-name-from-alteration)          | nameExceptionLayer        |
| [Exempt Layer from Trimming](https://workflower.constantin-maier.com/main-functions/layout#exempt-layer-from-trimming)                        | trimExceptionLayer        |
| [Trim Layer to Keyframes](https://workflower.constantin-maier.com/main-functions/layout#trim-layer-to-keyframes)                              | trimLayerToKeyframes      |
| [Trim Layer to Layer](https://workflower.constantin-maier.com/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-1)        | trimLayerToLayer          |
| [Create Control](https://workflower.constantin-maier.com/layer-functions/miscellaneous-layer-functions#trim-layer-to-keyframes-2)             | createControl             |
| [Unshy Layers](https://workflower.constantin-maier.com/layer-functions/miscellaneous-layer-functions#unshy-layers)                            | unshy                     |

### Icons

If you want to use *Workflower* icons in *KBar*, you can download them as PNGs below.

*(Note: Icons have been updated for* [*version 2.5*](https://workflower.constantin-maier.com/releases#id-2-5)*.)*

{% file src="<https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2FYn39xoP0irs9jDRM5L7I%2Fkbar_workflower_icons_v2.5.zip?alt=media&token=8b307018-3247-4421-9746-5aeda1cbb8a2>" %}

### Batch-create all Buttons (Legacy) <a href="#batch-create-all-buttons" id="batch-create-all-buttons"></a>

<figure><img src="https://3790197535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQrCmGZz5honeHZINyR%2Fuploads%2Fh06xeYM0PzGWzCPx1Vjo%2Fv2_kbar_icons.jpg?alt=media&#x26;token=f7563a8c-167b-478b-b31e-bf7f2fcb5e73" alt=""><figcaption><p>All Workflower Buttons added to KBar</p></figcaption></figure>

{% hint style="warning" %}
This is a legacy function. Since Workflower now features its own ScriptUI Panel, buttons for functions added after v2.0 won't be created.
{% endhint %}

As of [version 1.1.3](https://workflower.constantin-maier.com/releases#1-1-3), you can create all of *Workflower's* buttons at once as a KBar toolbar.

Simply go to the *Layout Settings* and click on *Install WF KBar Toolbar*. *Workflower* will then create a new toolbar in *KBar* and replicate the entire [Main Menu](https://workflower.constantin-maier.com/main-functions/main-menu).

After installing, (re-)start KBar and click on its hamburger menu to select the *Workflower* toolbar.

For safety, *Workflower* will create a backup of your old *KBar* settings file and save it next to the current one. So if you want to go back, you can always go back to your old *KBar* settings. To do that, simply go to *KBar's Settings*, click on *Restore* and select the backup file.

As of [version 2.0](https://workflower.constantin-maier.com/releases#2-0), buttons will be added **without** modifier keys. That way, you may want to use KBar over *Workflower's* ScriptUI Panel if you prefer to have all buttons visible at the same time.

## Third-Party Licenses used in Workflower

### FFmpeg (Multimedia Processing Suite)

#### FFmpeg Versions and Licensing

* Default Installation (Bundled Version)
  * Windows Version:
    * LGPL v3 compliant FFmpeg build from BtbN
    * Distributed under MIT license (build) and LGPL v3 (FFmpeg)
    * Code-signed for Windows security
    * Original build available at: <https://github.com/BtbN/FFmpeg-Builds>
    * Source code available at: <https://ffmpeg.org/download>
  * Mac Version:
    * LGPL v3 compliant FFmpeg custom-build
    * Compiled specifically for Workflower
    * Unmodified FFmpeg source code
    * Source code available at: <https://ffmpeg.org/download>
  * Automatically installed with the script
* Fallback Option 1: Terminal Installation (Package Managers)
  * License: Subject to the package managers' choice
  * Installed independently via system package managers:
    * Windows: Winget (`winget install ffmpeg`)
    * Mac: Homebrew (`brew install ffmpeg`)
  * Workflower only references the FFmpeg installation path and does not modify or redistribute the externally installed FFmpeg code.
* Fallback Option 2: Manual Installation
  * License: Varies based on chosen version
  * User is responsible for:
    * Choosing appropriate version
    * License compliance
    * Proper installation
    * Maintaining installation path
  * Workflower only references the FFmpeg manual installation path and does not modify or redistribute any externally installed FFmpeg code.

#### Why Different Licenses?

The bundled version is specifically compiled to be LGPL v3 compliant, allowing for more flexible integration with commercial software. Manual and package manager installations may vary in their licensing depending on the source and version chosen.

#### Compliance Information

* Our bundled version uses unmodified FFmpeg source code compiled with LGPL v3 compliant options
* Original FFmpeg source code is available at: [ffmpeg.org/download](https://ffmpeg.org/download.html#get-sources)
* Users can choose which version to use based on their needs
* Package manager and manual installations are handled independently of our script

#### Technical Implementation

The script interfaces with FFmpeg through standard CLI commands, regardless of which version is installed. The script only references the FFmpeg installation path and does not modify or redistribute any externally installed FFmpeg code.

### Name that Color JavaScript (JavaScript Library)

* By Chirag Mehta
* Licensed under Creative Commons Attribution 2.5 License (CC BY 2.5)
* <http://chir.ag/projects/name-that-color/>

### WQ (After Effects Plug-in)

* By Terrible Junk Show
* [https://www.terriblejunkshow.com](https://www.terriblejunkshow.com/)

### Full License Texts

Full license texts are available here:

* FFmpeg: [LGPL v3 License](https://www.gnu.org/licenses/lgpl-3.0.html)
* BtbN: [MIT License](https://github.com/BtbN/FFmpeg-Builds?tab=MIT-1-ov-file)
* Name that Color: [CC BY 2.5 License](https://creativecommons.org/licenses/by/2.5/legalcode.en)
