An automation tool for OBS Studio
Go to file
WarmUpTill 82568b23e8
Some checks failed
debian-build / build (push) Has been cancelled
Push to master / Check Formatting 🔍 (push) Has been cancelled
Push to master / Build Project 🧱 (push) Has been cancelled
Push to master / Create Release 🛫 (push) Has been cancelled
Fix crash when initially setting up tab ordering
The tabOrder vector was initialized with the size of tabNames.
Then new tabs were registered with AddSetupTabCallback() causing
tabNames to grow but tabOrder to remain the same.

Usually this is not a problem as LoadTabOrder() will be called which
ensures that their sizes are in sync.

However, when using a fresh OBS install or one with a corrupted scene
configuration file, the on_save() callbacks are called before any
loading callbacks.
With the sizes of tabNames and tabOrder not being in sync this would
lead to a crash.

Fixed by adding a tabWidgetOrderValid() check within SaveTabOrder()
before iterating over both vectors.
The tabWidgetOrderValid() was expanded to check the sizes of both
vectors.
Additionally the tabOrder initialization was moved from global static
initialization to function local static initialization to ensure that
potential preceeding calls to AddSetupTabCallback() will be taken into
account when setting up the tabOrder vector.
2025-07-06 10:19:20 +02:00
.github CI: Add libremidi dependencies 2025-06-25 13:56:40 +02:00
build-aux CI: Switch to and adapt to Ubuntu 24 runner 2025-01-15 21:36:54 +01:00
cmake Add icon for windows installer 2025-06-20 22:29:35 +02:00
data Add icon for windows installer 2025-06-20 22:29:35 +02:00
deps Add paho.mqtt.cpp dependency 2025-05-27 20:23:07 +02:00
forms Add option to disable widget caching 2025-05-27 22:37:46 +02:00
lib Fix crash when initially setting up tab ordering 2025-07-06 10:19:20 +02:00
module Rename function 2024-02-17 13:54:00 +01:00
plugins Setup MIDI device observers in parallel to avoid blocking OBS startup 2025-06-25 13:56:40 +02:00
scripting Add more scripting signals / procedures 2025-03-22 18:09:51 +01:00
tests Add option to set and check list source settings by name 2025-06-20 22:29:35 +02:00
.clang-format Update clang format 2024-02-17 10:03:04 +01:00
.cmake-format.json cmake: Replace find_qt with find_package 2025-03-10 19:48:01 +01:00
.gitattributes Force LF for formatter script for WSL 2024-02-29 20:31:50 +01:00
.gitignore Add API to register new macro condition and action types 2024-08-14 21:51:42 +02:00
.gitmodules Add paho.mqtt.cpp dependency 2025-05-27 20:23:07 +02:00
.pre-commit-config.yaml Add pre-commit hooks 2024-03-15 21:27:08 +01:00
BUILDING.md Update BUILDING.md 2024-03-02 15:27:02 +01:00
buildspec.json buildspec: Update OBS Studio dependency to 30.1.2 2024-09-24 23:00:47 +02:00
CMakeLists.txt Add support for kwin (wayland) (#1393) 2025-06-21 19:51:25 +02:00
CMakePresets.json Update cmake 2024-02-17 10:03:04 +01:00
LICENSE Added GPL2 2017-06-02 15:23:52 +02:00
README.md Add link to installation wiki page 2025-04-23 11:48:17 +02:00

An automation plugin for OBS Studio.
More information can be found in the OBS forums or the plugin's wiki.

Downloads

Binaries for Windows, MacOS, and Linux are available in the Releases section.

Installing the plugin

For the Windows and MacOS platforms, it is recommended to run the provided installers.

On Linux the plugin is available via the Flatpak package manager for users who installed OBS via Flatpak:

flatpak install com.obsproject.Studio.Plugin.SceneSwitcher

The Snap package manager offers an OBS Studio installation which is bundled with the plugin:

sudo snap install obs-studio

More information can be found here.

Contributing

  • If you wish to contribute code to the project, have a look at this section describing how to compile the plugin.
  • You can add custom conditions and actions at runtime using the API described here.
  • You can optionally use pre-commit to automatically handle formatting.
  • If you wish to contribute translations, feel free to submit pull requests for the corresponding files under data/locale.