diff --git a/CHANGELOG.md b/CHANGELOG.md index c71505055..824c93548 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - Minor: Fixed tag parsing for consecutive escaped characters. (#3711) - Minor: Prevent user from entering incorrect characters in Live Notifications channels list. (#3715, #3730) - Minor: Fixed automod caught message notice appearing twice for mods. (#3717) +- Minor: Streamer mode now automatically detects if XSplit, PRISM Live Studio, Twitch Studio, or vMix are running. (#3740) - Minor: Add scrollbar to `Select filters` dialog. (#3737) - Minor: Added `/requests` command. Usage: `/requests [channel]`. Opens the channel points requests queue for the provided channel or the current channel if no input is provided. (#3746) - Minor: Added ability to execute commands on chat messages using the message context menu. (#3738) diff --git a/src/singletons/Settings.hpp b/src/singletons/Settings.hpp index 14ade6c93..53b076a09 100644 --- a/src/singletons/Settings.hpp +++ b/src/singletons/Settings.hpp @@ -208,7 +208,7 @@ public: /// Streamer Mode EnumSetting enableStreamerMode = { - "/streamerMode/enabled", StreamerModeSetting::DetectObs}; + "/streamerMode/enabled", StreamerModeSetting::DetectStreamingSoftware}; BoolSetting streamerModeHideUsercardAvatars = { "/streamerMode/hideUsercardAvatars", true}; BoolSetting streamerModeHideLinkThumbnails = { diff --git a/src/util/StreamerMode.cpp b/src/util/StreamerMode.cpp index dfe8d85b6..2724ed73f 100644 --- a/src/util/StreamerMode.cpp +++ b/src/util/StreamerMode.cpp @@ -30,9 +30,11 @@ bool shouldShowWarning = true; const QStringList &broadcastingBinaries() { #ifdef USEWINSDK - static QStringList bins = {"obs.exe", "obs64.exe"}; + static QStringList bins = { + "obs.exe", "obs64.exe", "PRISMLiveStudio.exe", + "XSplit.Core.exe", "TwitchStudio.exe", "vMix64.exe"}; #else - static QStringList bins = {"obs"}; + static QStringList bins = {"obs", "Twitch Studio", "Streamlabs Desktop"}; #endif return bins; } @@ -45,7 +47,7 @@ bool isInStreamerMode() return true; case StreamerModeSetting::Disabled: return false; - case StreamerModeSetting::DetectObs: + case StreamerModeSetting::DetectStreamingSoftware: #if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) diff --git a/src/util/StreamerMode.hpp b/src/util/StreamerMode.hpp index 0c8daaf6a..d161b9067 100644 --- a/src/util/StreamerMode.hpp +++ b/src/util/StreamerMode.hpp @@ -4,7 +4,11 @@ namespace chatterino { -enum StreamerModeSetting { Disabled = 0, Enabled = 1, DetectObs = 2 }; +enum StreamerModeSetting { + Disabled = 0, + Enabled = 1, + DetectStreamingSoftware = 2, +}; const QStringList &broadcastingBinaries(); bool isInStreamerMode(); diff --git a/src/widgets/Window.cpp b/src/widgets/Window.cpp index ee4f2c9f0..bc271103c 100644 --- a/src/widgets/Window.cpp +++ b/src/widgets/Window.cpp @@ -620,7 +620,7 @@ void Window::addShortcuts() else if (mode == 3) { getSettings()->enableStreamerMode.setValue( - StreamerModeSetting::DetectObs); + StreamerModeSetting::DetectStreamingSoftware); } return ""; }}, diff --git a/src/widgets/settingspages/GeneralPage.cpp b/src/widgets/settingspages/GeneralPage.cpp index 8895ccd24..85b13a179 100644 --- a/src/widgets/settingspages/GeneralPage.cpp +++ b/src/widgets/settingspages/GeneralPage.cpp @@ -336,14 +336,14 @@ void GeneralPage::initLayout(GeneralPageView &layout) layout.addTitle("Streamer Mode"); layout.addDescription( - "Chatterino can automatically change behavior if it detects that \"OBS " - "Studio\" is running.\nSelect which things you want to change while " - "streaming"); + "Chatterino can automatically change behavior if it detects that any " + "streaming software is running.\nSelect which things you want to " + "change while streaming"); ComboBox *dankDropdown = layout.addDropdown::type>( "Enable Streamer Mode", - {"Disabled", "Enabled", "Automatic (Detect OBS)"}, + {"Disabled", "Enabled", "Automatic (Detect streaming software)"}, s.enableStreamerMode, [](int value) { return value; @@ -352,7 +352,7 @@ void GeneralPage::initLayout(GeneralPageView &layout) return static_cast(args.index); }, false); - dankDropdown->setMinimumWidth(dankDropdown->minimumSizeHint().width() + 10); + dankDropdown->setMinimumWidth(dankDropdown->minimumSizeHint().width() + 30); layout.addCheckbox("Hide usercard avatars", s.streamerModeHideUsercardAvatars);