git: 55d43c8efb29 - main - obs-studio: add BROWSER option to enable CEF framework
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 16 Oct 2026 02:08:21 UTC
The branch main has been updated by yuri:
URL: https://cgit.FreeBSD.org/ports/commit/?id=55d43c8efb2911c674a76ed5e3a7816f142f701a
commit 55d43c8efb2911c674a76ed5e3a7816f142f701a
Author: Martin Filla <freebsd@sysctl.cz>
AuthorDate: 2026-10-12 18:29:35 +0000
Commit: Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-10-16 02:08:19 +0000
obs-studio: add BROWSER option to enable CEF framework
OBS studio can now display a web browser in it's streaming setup..
- The BROWSER option works now: it depends on www/cef and points the
build at it (CEF_ROOT_DIR=${LOCALBASE}/lib/cef). It is on by default
on amd64 and not offered where www/cef does not build.
- Use the CMake switch obs-browser actually reads (ENABLE_BROWSER) and
turn off the What's New dialog, which has no FreeBSD code path.
- obs-browser: FreeBSD support in its CMake files and __linux__ code
paths; load libcef.so from the CEF directory (RPATH) instead of
copying CEF into lib/obs-plugins, and let CEF find its own locales;
build with C++20 as the CEF 152 headers require; include
<netinet/in.h> for sockaddr_in.
PR: 299341
---
multimedia/obs-studio/Makefile | 19 ++++--
.../files/patch-cmake_finders_FindCEF.cmake | 11 ++++
.../files/patch-cmake_linux_helpers.cmake | 11 ++++
.../obs-studio/files/patch-plugins_CMakeLists.txt | 15 ++++-
.../files/patch-plugins_obs-browser_CMakeLists.txt | 19 ++++++
.../patch-plugins_obs-browser_cmake_os-linux.cmake | 22 +++++++
...ch-plugins_obs-browser_deps_ip-string-posix.cpp | 11 ++++
...atch-plugins_obs-browser_obs-browser-plugin.cpp | 20 ++++++
...atch-plugins_obs-browser_obs-browser-source.cpp | 29 +++++++++
...gins_obs-browser_panel_browser-panel-client.cpp | 11 ++++
...ns_obs-browser_panel_browser-panel-internal.hpp | 11 ++++
...tch-plugins_obs-browser_panel_browser-panel.cpp | 20 ++++++
multimedia/obs-studio/pkg-plist | 71 ++++++++++++++++++++++
13 files changed, 262 insertions(+), 8 deletions(-)
diff --git a/multimedia/obs-studio/Makefile b/multimedia/obs-studio/Makefile
index fe7c9579b297..5748d144497a 100644
--- a/multimedia/obs-studio/Makefile
+++ b/multimedia/obs-studio/Makefile
@@ -1,5 +1,6 @@
PORTNAME= obs-studio
DISTVERSION= 32.2.2
+PORTREVISION= 1
CATEGORIES= multimedia
MASTER_SITES= https://github.com/obsproject/obs-studio/releases/download/${DISTVERSION}/
DISTFILES= OBS-Studio-${DISTVERSION}-Sources${EXTRACT_SUFX}
@@ -52,7 +53,7 @@ LIB_DEPENDS= libasound.so:audio/alsa-lib \
libuuid.so:misc/libuuid \
libva.so:multimedia/libva
-USES= cmake compiler:c++17-lang desktop-file-utils gl gnome kde:6 lua luajit \
+USES= cmake compiler:c++17-lang desktop-file-utils localbase gl gnome kde:6 lua luajit \
pkgconfig python qt:6 xorg
USE_QT= base svg tools:build
USE_KDE= ecm:build
@@ -77,16 +78,24 @@ WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}-sources
OPTIONS_DEFINE= BROWSER NVENC PIPEWIRE VLC VST WAYLAND
OPTIONS_DEFAULT= PIPEWIRE VLC VST WAYLAND
-OPTIONS_DEFAULT_amd64= NVENC
+OPTIONS_DEFAULT_amd64= BROWSER NVENC
+# www/cef (Chromium) is only available on amd64 and aarch64
+.for _arch in armv7 i386 powerpc powerpc64 powerpc64le riscv64
+OPTIONS_EXCLUDE_${_arch}= BROWSER
+.endfor
OPTIONS_MULTI= AUDIO
OPTIONS_MULTI_AUDIO= JACK PULSEAUDIO SNDIO
OPTIONS_DEFAULT+= ${OPTIONS_MULTI_AUDIO}
OPTIONS_SUB= yes
AUDIO_DESC= Audio backends
-BROWSER_DESC= Build OSB browser
-BROWSER_CMAKE_BOOL= BUILD_BROWSER # this also requires an additional git submodule
-BROWSER_BROKEN= Needs CEF (Chromium Embedded Framework) which isn't yet ported
+BROWSER_DESC= Browser source and docks (Chromium Embedded Framework)
+BROWSER_LIB_DEPENDS= libcef.so:www/cef
+BROWSER_CMAKE_BOOL= ENABLE_BROWSER
+# The What's New dialog has no FreeBSD code path (see
+# frontend/cmake/feature-whatsnew.cmake).
+BROWSER_CMAKE_ON= -DCEF_ROOT_DIR:PATH=${LOCALBASE}/lib/cef \
+ -DENABLE_WHATSNEW:BOOL=OFF
JACK_LIB_DEPENDS= libjack.so:audio/jack
JACK_CMAKE_ON= -DENABLE_JACK=TRUE
diff --git a/multimedia/obs-studio/files/patch-cmake_finders_FindCEF.cmake b/multimedia/obs-studio/files/patch-cmake_finders_FindCEF.cmake
new file mode 100644
index 000000000000..96b7fe378472
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-cmake_finders_FindCEF.cmake
@@ -0,0 +1,11 @@
+--- cmake/finders/FindCEF.cmake.orig 2026-08-14 22:07:04 UTC
++++ cmake/finders/FindCEF.cmake
+@@ -154,7 +154,7 @@ elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL D
+ PATHS "${CEF_ROOT_DIR}/build/libcef_dll/Debug" "${CEF_ROOT_DIR}/build/libcef_dll_wrapper/Debug"
+ DOC "Chromium Embedded Framework static library wrapper (debug)."
+ )
+-elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
++elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux|FreeBSD")
+ find_library(
+ CEF_LIBRARY_RELEASE
+ NAMES libcef.so
diff --git a/multimedia/obs-studio/files/patch-cmake_linux_helpers.cmake b/multimedia/obs-studio/files/patch-cmake_linux_helpers.cmake
new file mode 100644
index 000000000000..0e4d6f1556f2
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-cmake_linux_helpers.cmake
@@ -0,0 +1,11 @@
+--- cmake/linux/helpers.cmake.orig 2026-08-14 22:07:04 UTC
++++ cmake/linux/helpers.cmake
+@@ -161,7 +161,7 @@ function(set_target_properties_obs targe
+ )
+ elseif(${target} STREQUAL obs-browser)
+ message(DEBUG "Add Chromium Embedded Framework to project for obs-browser plugin...")
+- if(TARGET CEF::Library)
++ if(TARGET CEF::Library AND NOT OS_FREEBSD)
+ get_target_property(imported_location CEF::Library IMPORTED_LOCATION_RELEASE)
+
+ if(imported_location)
diff --git a/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt b/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
index 3abe06b98b69..72158b190ce8 100644
--- a/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
+++ b/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
@@ -1,6 +1,15 @@
---- plugins/CMakeLists.txt.orig 2025-09-26 21:04:14 UTC
+--- plugins/CMakeLists.txt.orig 2026-08-14 22:07:04 UTC
+++ plugins/CMakeLists.txt
-@@ -61,7 +61,7 @@ add_obs_plugin(obs-libfdk)
+@@ -10,7 +10,7 @@ endif()
+ set_property(GLOBAL APPEND PROPERTY OBS_FEATURES_ENABLED "Plugin Support")
+
+ macro(check_obs_browser)
+- if((OS_WINDOWS AND CMAKE_VS_PLATFORM_NAME MATCHES "(ARM64|x64)") OR OS_MACOS OR OS_LINUX)
++ if((OS_WINDOWS AND CMAKE_VS_PLATFORM_NAME MATCHES "(ARM64|x64)") OR OS_MACOS OR OS_LINUX OR OS_FREEBSD)
+ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
+ message(FATAL_ERROR "Required submodule 'obs-browser' not available.")
+ else()
+@@ -77,7 +77,7 @@ check_obs_browser()
add_obs_plugin(obs-ffmpeg)
add_obs_plugin(obs-filters)
add_obs_plugin(obs-libfdk)
@@ -9,7 +18,7 @@
add_obs_plugin(obs-outputs)
add_obs_plugin(
obs-qsv11
-@@ -72,7 +72,7 @@ add_obs_plugin(
+@@ -88,7 +88,7 @@ add_obs_plugin(obs-text PLATFORMS WINDOW
add_obs_plugin(obs-transitions)
add_obs_plugin(
obs-vst
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_CMakeLists.txt b/multimedia/obs-studio/files/patch-plugins_obs-browser_CMakeLists.txt
new file mode 100644
index 000000000000..e75d44479e0e
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_CMakeLists.txt
@@ -0,0 +1,19 @@
+--- plugins/obs-browser/CMakeLists.txt.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/CMakeLists.txt
+@@ -42,14 +42,14 @@ target_sources(
+
+ target_include_directories(obs-browser PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps")
+
+-target_compile_features(obs-browser PRIVATE cxx_std_17)
++target_compile_features(obs-browser PRIVATE cxx_std_20)
+ target_link_libraries(obs-browser PRIVATE OBS::libobs OBS::frontend-api OBS::websocket-api nlohmann_json::nlohmann_json)
+
+ if(OS_WINDOWS)
+ include(cmake/os-windows.cmake)
+ elseif(OS_MACOS)
+ include(cmake/os-macos.cmake)
+-elseif(OS_LINUX)
++elseif(OS_LINUX OR OS_FREEBSD)
+ include(cmake/os-linux.cmake)
+ endif()
+
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_cmake_os-linux.cmake b/multimedia/obs-studio/files/patch-plugins_obs-browser_cmake_os-linux.cmake
new file mode 100644
index 000000000000..4e96f3e8838e
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_cmake_os-linux.cmake
@@ -0,0 +1,22 @@
+--- plugins/obs-browser/cmake/os-linux.cmake.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/cmake/os-linux.cmake
+@@ -20,6 +20,7 @@ target_include_directories(browser-helpe
+ "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser-page")
+
+ target_link_libraries(browser-helper PRIVATE CEF::Wrapper CEF::Library)
++target_compile_features(browser-helper PRIVATE cxx_std_20)
+
+ target_sources(obs-browser PRIVATE deps/ip-string-posix.cpp)
+
+@@ -34,3 +35,11 @@ set_target_properties_obs(
+ PREFIX ""
+ OUTPUT_NAME obs-browser-page)
+ # cmake-format: on
++
++if(OS_FREEBSD)
++ cmake_path(GET CEF_LIBRARY_RELEASE PARENT_PATH cef_library_dir)
++ set_target_properties(obs-browser PROPERTIES BUILD_RPATH "$ORIGIN/;${cef_library_dir}"
++ INSTALL_RPATH "$ORIGIN/;${cef_library_dir}")
++ set_target_properties(browser-helper PROPERTIES BUILD_RPATH "$ORIGIN/;${cef_library_dir}"
++ INSTALL_RPATH "$ORIGIN/;${cef_library_dir}")
++endif()
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_deps_ip-string-posix.cpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_deps_ip-string-posix.cpp
new file mode 100644
index 000000000000..8c9b077a82a3
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_deps_ip-string-posix.cpp
@@ -0,0 +1,11 @@
+--- plugins/obs-browser/deps/ip-string-posix.cpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/deps/ip-string-posix.cpp
+@@ -17,6 +17,8 @@
+
+ #include "ip-string.hpp"
+
++#include <sys/socket.h>
++#include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <stdio.h>
+
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-plugin.cpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-plugin.cpp
new file mode 100644
index 000000000000..8bef0718f035
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-plugin.cpp
@@ -0,0 +1,20 @@
+--- plugins/obs-browser/obs-browser-plugin.cpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/obs-browser-plugin.cpp
+@@ -315,7 +315,7 @@ static void BrowserInit(void)
+ settings.multi_threaded_message_loop = false;
+ #endif
+
+-#if !defined(_WIN32) && !defined(__APPLE__)
++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__)
+ // Override locale path from OBS binary path to plugin binary path
+ string locales = obs_get_module_binary_path(obs_current_module());
+ locales = locales.substr(0, locales.find_last_of('/') + 1);
+@@ -686,7 +686,7 @@ static void check_hwaccel_support(void)
+ }
+ }
+ }
+-#elif __linux__
++#elif defined(__linux__) || defined(__FreeBSD__)
+ static void check_hwaccel_support(void)
+ {
+ /* NOTE: GL_VERSION returns a string that contains the driver vendor */
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-source.cpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-source.cpp
new file mode 100644
index 000000000000..bacc2af12533
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_obs-browser-source.cpp
@@ -0,0 +1,29 @@
+--- plugins/obs-browser/obs-browser-source.cpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/obs-browser-source.cpp
+@@ -28,7 +28,7 @@
+ #include <thread>
+ #include <mutex>
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ #include "linux-keyboard-helpers.hpp"
+ #endif
+
+@@ -314,7 +314,7 @@ void BrowserSource::SendKeyClick(const s
+ return;
+
+ std::string text = event->text;
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ uint32_t native_vkey = KeyboardCodeFromXKeysym(event->native_vkey);
+ uint32_t modifiers = event->native_modifiers;
+ #elif defined(_WIN32) || defined(__APPLE__)
+@@ -348,7 +348,7 @@ void BrowserSource::SendKeyClick(const s
+ cefBrowser->GetHost()->SendKeyEvent(e);
+ if (!text.empty() && !key_up) {
+ e.type = KEYEVENT_CHAR;
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ e.windows_key_code = KeyboardCodeFromXKeysym(e.character);
+ #elif defined(_WIN32)
+ e.windows_key_code = e.character;
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-client.cpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-client.cpp
new file mode 100644
index 000000000000..3044bdd198eb
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-client.cpp
@@ -0,0 +1,11 @@
+--- plugins/obs-browser/panel/browser-panel-client.cpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/panel/browser-panel-client.cpp
+@@ -87,7 +87,7 @@ void QCefBrowserClient::OnTitleChange(Ce
+ CefWindowHandle handl = browser->GetHost()->GetWindowHandle();
+ std::wstring str_title = newTitle;
+ SetWindowTextW((HWND)handl, str_title.c_str());
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ CefWindowHandle handl = browser->GetHost()->GetWindowHandle();
+ XStoreName(cef_get_xdisplay(), handl, newTitle.ToString().c_str());
+ #endif
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-internal.hpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-internal.hpp
new file mode 100644
index 000000000000..42bd8779437d
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel-internal.hpp
@@ -0,0 +1,11 @@
+--- plugins/obs-browser/panel/browser-panel-internal.hpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/panel/browser-panel-internal.hpp
+@@ -54,7 +54,7 @@ public:
+ void finishCloseBrowser();
+ void Resize();
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ private:
+ bool needsDeleteXdndProxy = true;
+ void unsetToplevelXdndProxy();
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel.cpp b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel.cpp
new file mode 100644
index 000000000000..e90bf9a7861b
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-browser_panel_browser-panel.cpp
@@ -0,0 +1,20 @@
+--- plugins/obs-browser/panel/browser-panel.cpp.orig 2026-08-14 22:07:07 UTC
++++ plugins/obs-browser/panel/browser-panel.cpp
+@@ -233,7 +233,7 @@ void QCefWidgetInternal::closeBrowser()
+ cefBrowser = nullptr;
+ }
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ static bool XWindowHasAtom(Display *display, Window w, Atom a)
+ {
+ Atom type;
+@@ -341,7 +341,7 @@ void QCefWidgetInternal::Init()
+ cefBrowserSettings,
+ CefRefPtr<CefDictionaryValue>(), rqc);
+
+-#ifdef __linux__
++#if defined(__linux__) || defined(__FreeBSD__)
+ QueueCEFTask([this]() { unsetToplevelXdndProxy(); });
+ #endif
+ });
diff --git a/multimedia/obs-studio/pkg-plist b/multimedia/obs-studio/pkg-plist
index 08759deb3658..0f48c0a03dec 100644
--- a/multimedia/obs-studio/pkg-plist
+++ b/multimedia/obs-studio/pkg-plist
@@ -113,6 +113,8 @@ lib/obs-plugins/linux-capture.so
%%PIPEWIRE%%lib/obs-plugins/linux-pipewire.so
%%PULSEAUDIO%%lib/obs-plugins/linux-pulseaudio.so
lib/obs-plugins/linux-v4l2.so
+%%BROWSER%%lib/obs-plugins/obs-browser-page
+%%BROWSER%%lib/obs-plugins/obs-browser.so
lib/obs-plugins/obs-ffmpeg.so
lib/obs-plugins/obs-filters.so
%%NVENC%%lib/obs-plugins/obs-nvenc.so
@@ -609,6 +611,75 @@ share/obs/obs-plugins/linux-v4l2/locale/ur-PK.ini
share/obs/obs-plugins/linux-v4l2/locale/vi-VN.ini
share/obs/obs-plugins/linux-v4l2/locale/zh-CN.ini
share/obs/obs-plugins/linux-v4l2/locale/zh-TW.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/error.html
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/af-ZA.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ar-SA.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/az-AZ.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ba-RU.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/be-BY.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/bg-BG.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/bn-BD.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ca-ES.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/cs-CZ.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/da-DK.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/de-DE.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/el-GR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/en-GB.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/en-US.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/eo-UY.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/es-ES.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/et-EE.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/eu-ES.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/fa-IR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/fi-FI.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/fil-PH.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/fr-FR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/gd-GB.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/gl-ES.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/he-IL.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/hi-IN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/hr-HR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/hu-HU.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/hy-AM.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/id-ID.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/it-IT.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ja-JP.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ka-GE.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/kaa.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/kab-KAB.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/kmr-TR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ko-KR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/lo-LA.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/lt-LT.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/mn-MN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ms-MY.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/nb-NO.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/nl-NL.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/nn-NO.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/oc-FR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/pl-PL.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/pt-BR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/pt-PT.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ro-RO.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ru-RU.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/si-LK.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sk-SK.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sl-SI.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sq-AL.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sr-CS.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sr-SP.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/sv-SE.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/szl-PL.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ta-IN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/th-TH.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/tr-TR.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/tt-RU.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ug-CN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/uk-UA.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/ur-PK.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/vi-VN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/zh-CN.ini
+%%BROWSER%%share/obs/obs-plugins/obs-browser/locale/zh-TW.ini
share/obs/obs-plugins/obs-ffmpeg/locale/af-ZA.ini
share/obs/obs-plugins/obs-ffmpeg/locale/ar-SA.ini
share/obs/obs-plugins/obs-ffmpeg/locale/az-AZ.ini