diff --git a/UI/CMakeLists.txt b/UI/CMakeLists.txt
index df4d264500419c..90c5a054490a4e 100644
--- a/UI/CMakeLists.txt
+++ b/UI/CMakeLists.txt
@@ -252,7 +252,8 @@ set(obs_SOURCES
obs-proxy-style.cpp
locked-checkbox.cpp
visibility-checkbox.cpp
- media-slider.cpp)
+ media-slider.cpp
+ scene-wizard.cpp)
set(obs_HEADERS
${obs_PLATFORM_HEADERS}
@@ -322,7 +323,8 @@ set(obs_HEADERS
log-viewer.hpp
obs-proxy-style.hpp
obs-proxy-style.hpp
- media-slider.hpp)
+ media-slider.hpp
+ scene-wizard.hpp)
set(obs_importers_HEADERS
importers/importers.hpp)
@@ -362,7 +364,8 @@ set(obs_UI
forms/OBSUpdate.ui
forms/OBSRemux.ui
forms/OBSImporter.ui
- forms/OBSAbout.ui)
+ forms/OBSAbout.ui
+ forms/OBSSceneWizard.ui)
set(obs_QRC
forms/obs.qrc)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 5d3870adbe6b54..4bf75694afcd05 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -1053,3 +1053,16 @@ ContextBar.MediaControls.PlaylistNext="Next in Playlist"
ContextBar.MediaControls.PlaylistPrevious="Previous in Playlist"
ContextBar.MediaControls.MediaProperties="Media Properties"
ContextBar.MediaControls.BlindSeek="Media Seek Widget"
+
+# SceneWizard
+SceneWizard="Scene Wizard"
+RunSceneWizard="Run Scene Wizard"
+SceneWizard.OptionsQuestion="How do you want to use OBS?"
+SceneWizard.ImportButton="I want to import my existing scenes"
+SceneWizard.TemplateButton="I want to choose a scene template"
+SceneWizard.SetupOwnButton="I will setup OBS on my own"
+SceneWizard.SelectTemplate="Select template"
+SceneWizard.NoTemplates="No templates available"
+SceneWizard.SelectWebcam="Select webcam"
+SceneWizard.SelectMicrophone="Select microphone"
+SceneWizard.SelectDesktopAudio="Select desktop audio"
diff --git a/UI/data/templates/mac/.keep b/UI/data/templates/mac/.keep
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/UI/data/templates/nix/.keep b/UI/data/templates/nix/.keep
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/UI/data/templates/windows/.keep b/UI/data/templates/windows/.keep
new file mode 100644
index 00000000000000..e69de29bb2d1d6
diff --git a/UI/data/themes/Acri.qss b/UI/data/themes/Acri.qss
index 8a6fdf7bb574e0..a064c75b933b7d 100644
--- a/UI/data/themes/Acri.qss
+++ b/UI/data/themes/Acri.qss
@@ -1152,3 +1152,20 @@ QSlider::handle:horizontal[themeID="tBarSlider"] {
* [themeID="previousIcon"] {
qproperty-icon: url(./Dark/media/media_previous.svg);
}
+
+/* Scene wizard */
+
+QListWidget[themeID="templateList"] {
+ background-color: #181819;
+ border: none;
+}
+
+QListWidget::item:selected[themeID="templateList"] {
+ background-color: #162458;
+ color: rgb(225, 224, 225);
+}
+
+QListWidget::item[themeID="templateList"] {
+ border: 0px;
+ padding: 10px;
+}
diff --git a/UI/data/themes/Dark.qss b/UI/data/themes/Dark.qss
index b9ab60a5a8bc71..eb0f882ace8946 100644
--- a/UI/data/themes/Dark.qss
+++ b/UI/data/themes/Dark.qss
@@ -878,3 +878,20 @@ QSlider::handle:horizontal[themeID="tBarSlider"] {
* [themeID="previousIcon"] {
qproperty-icon: url(./Dark/media/media_previous.svg);
}
+
+/* Scene wizard */
+
+QListWidget[themeID="templateList"] {
+ background-color: rgb(58, 57, 58);
+ border: none;
+}
+
+QListWidget::item:selected[themeID="templateList"] {
+ background-color: rgb(88, 87, 88);
+ color: rgb(225, 224, 225);
+}
+
+QListWidget::item[themeID="templateList"] {
+ border: 0px;
+ padding: 10px;
+}
diff --git a/UI/data/themes/Rachni.qss b/UI/data/themes/Rachni.qss
index 5ae927c40f7d67..f6d1cea61241f3 100644
--- a/UI/data/themes/Rachni.qss
+++ b/UI/data/themes/Rachni.qss
@@ -1459,3 +1459,20 @@ QPushButton#sourceFiltersButton {
* [themeID="nextIcon"] {
qproperty-icon: url(./Dark/media/media_next.svg);
}
+
+/* Scene wizard */
+
+QListWidget[themeID="templateList"] {
+ background-color: rgb(49, 54, 59); /* Blue-gray */
+ border: none;
+}
+
+QListWidget::item:selected[themeID="templateList"] {
+ background-color: rgb(0, 188, 212);; /* Cyan (Primary) */
+ color: rgb(225, 224, 225);
+}
+
+QListWidget::item[themeID="templateList"] {
+ border: 0px;
+ padding: 10px;
+}
diff --git a/UI/data/themes/System.qss b/UI/data/themes/System.qss
index 125c5089eda30b..bb530029d8bfb5 100644
--- a/UI/data/themes/System.qss
+++ b/UI/data/themes/System.qss
@@ -296,3 +296,10 @@ QSlider::handle:horizontal[themeID="tBarSlider"] {
* [themeID="previousIcon"] {
qproperty-icon: url(./Dark/media/media_previous.svg);
}
+
+/* Scene wizard */
+
+QListWidget::item[themeID="templateList"] {
+ border: 0px;
+ padding: 10px;
+}
diff --git a/UI/forms/OBSBasic.ui b/UI/forms/OBSBasic.ui
index 8cc20521926764..00929623c6bb72 100644
--- a/UI/forms/OBSBasic.ui
+++ b/UI/forms/OBSBasic.ui
@@ -426,7 +426,7 @@
0
0
1079
- 21
+ 22