--- CMakeLists.txt.orig	2023-05-09 03:35:10 UTC
+++ CMakeLists.txt
@@ -74,10 +74,14 @@ find_package(PlasmaWaylandProtocols REQUIRED)
 if (QT_MAJOR_VERSION EQUAL "5")
     find_package(QtWaylandScanner REQUIRED)
 endif()
-find_package(KPipeWire)
+option(DISABLE_PIPEWIRE "Disable PipeWire support." OFF)
+if(NOT DISABLE_PIPEWIRE)
+    find_package(KPipeWire REQUIRED)
+    set(PIPEWIRE_FOUND 1)
+endif()
 set_package_properties(KPipeWire PROPERTIES DESCRIPTION
     "Used to record pipewire streams into a file"
-    TYPE REQUIRED
+    TYPE OPTIONAL
 )
 
 # optional components
--- src/CMakeLists.txt.orig	2023-05-09 03:35:10 UTC
+++ src/CMakeLists.txt
@@ -9,6 +9,10 @@ kconfig_add_kcfg_files(SPECTACLE_SRCS GENERATE_MOC Gui
 ecm_qt_declare_logging_category(SPECTACLE_SRCS HEADER spectacle_core_debug.h IDENTIFIER SPECTACLE_CORE_LOG CATEGORY_NAME org.kde.spectacle.core DESCRIPTION "spectacle (core)" EXPORT SPECTACLE)
 ecm_qt_declare_logging_category(SPECTACLE_SRCS HEADER spectacle_gui_debug.h IDENTIFIER SPECTACLE_GUI_LOG CATEGORY_NAME org.kde.spectacle.gui DESCRIPTION "spectacle (gui)" EXPORT SPECTACLE)
 
+if(PIPEWIRE_FOUND)
+    list(APPEND SPECTACLE_SRCS Platforms/VideoPlatformWayland.cpp)
+endif()
+
 add_executable(spectacle
     ${SPECTACLE_SRCS}
     Main.cpp
@@ -45,7 +49,6 @@ add_executable(spectacle
     Platforms/PlatformKWinWayland.cpp
     Platforms/PlatformKWinWayland2.cpp
     Platforms/VideoPlatform.cpp
-    Platforms/VideoPlatformWayland.cpp
     Platforms/screencasting.cpp
 
     ../resources.qrc
@@ -84,6 +87,10 @@ endif()
 
 ki18n_wrap_ui(spectacle Gui/SettingsDialog/GeneralOptions.ui Gui/SettingsDialog/SaveOptions.ui)
 
+if(PIPEWIRE_FOUND)
+    target_link_libraries(spectacle K::KPipeWireRecord)
+endif()
+
 target_link_libraries(
     spectacle
         Qt::Concurrent
@@ -107,7 +114,6 @@ target_link_libraries(
         KF${QT_MAJOR_VERSION}::XmlGui
         KF${QT_MAJOR_VERSION}::GuiAddons
         KF${QT_MAJOR_VERSION}::Kirigami2
-        K::KPipeWireRecord
         Wayland::Client
 )
 
--- src/Config.h.in.orig	2023-05-16 10:09:13 UTC
+++ src/Config.h.in
@@ -7,6 +7,9 @@
 /* Define to 1 if we have Purpose */
 #cmakedefine PURPOSE_FOUND 1
 
+/* Define to 1 if we are building with PIPEWIRE */
+#cmakedefine PIPEWIRE_FOUND 1
+
 /* Set the Spectacle version from CMake */
 #cmakedefine SPECTACLE_VERSION "@SPECTACLE_VERSION@"
 
--- src/Platforms/PlatformLoader.cpp.orig	2023-05-09 03:35:10 UTC
+++ src/Platforms/PlatformLoader.cpp
@@ -10,7 +10,9 @@
 #include "PlatformKWinWayland.h"
 #include "PlatformKWinWayland2.h"
 #include "PlatformNull.h"
+#ifdef PIPEWIRE_FOUND
 #include "VideoPlatformWayland.h"
+#endif
 
 #ifdef XCB_FOUND
 #include "PlatformXcb.h"
@@ -44,8 +46,10 @@ PlatformPtr loadPlatform()
 
 VideoPlatformPtr loadVideoPlatform()
 {
+#ifdef PIPEWIRE_FOUND
     if (KWindowSystem::isPlatformWayland()) {
         return std::make_unique<VideoPlatformWayland>();
     }
+#endif
     return std::make_unique<VideoPlatformNull>();
 }
