diff --git a/OBSBlur/Config.cs b/OBSBlur/Config.cs index 51851a0..f948e34 100644 --- a/OBSBlur/Config.cs +++ b/OBSBlur/Config.cs @@ -14,6 +14,8 @@ public struct Config public string[] EnabledScenes = { "Desktop" }; [JsonRequired] public string[] BlurPrograms = { "Discord", "thunderbird", "Signal" }; + [JsonRequired] + public string[] BlurWindows = { "" }; public Config() { @@ -25,6 +27,7 @@ public struct Config $"Websocket-Url='{ObsWebsocketUrl}\n" + $"Websocket-Password='{new string(ObsWebsocketPassword.Substring(Math.Min(3, ObsWebsocketPassword.Length)).Concat(new string('*', Math.Max(3, ObsWebsocketPassword.Length)+6)).ToArray())}'\n" + $"Enabled Scenes={{{string.Join(',', EnabledScenes)}}}\n" + - $"Blur Programs={{{string.Join(',', BlurPrograms)}}}"; + $"Blur Programs={{{string.Join(',', BlurPrograms)}}}\n" + + $"Blur Windows={{{string.Join(',', BlurWindows)}}}"; } } \ No newline at end of file diff --git a/OBSBlur/OBS/Blur.cs b/OBSBlur/OBS/Blur.cs index f71d949..026c258 100644 --- a/OBSBlur/OBS/Blur.cs +++ b/OBSBlur/OBS/Blur.cs @@ -13,17 +13,19 @@ public class Blur private readonly WindowManager _windowManager = new (); private readonly OBSWebsocket _websocket = new (); private string _currentObsScene = ""; - private readonly List _enabledObsScenes = new(); - private readonly List _blurPrograms = new(); + public readonly List EnabledObsScenes = new(); + public readonly List BlurPrograms = new(); + public readonly List BlurWindows = new(); private readonly Dictionary _windowHandleSceneItems = new(); private readonly ILogger? _logger; private float _scaleWidth = 1, _scaleHeight = 1; - public Blur(string obsUrl, string obsPassword, string[] enabledObsScenes, string[] blurPrograms, ILogger? logger = null) + public Blur(string obsUrl, string obsPassword, string[] enabledObsScenes, string[] blurPrograms, string[] blurWindows, ILogger? logger = null) { this._logger = logger; - this._enabledObsScenes.AddRange(enabledObsScenes); - this._blurPrograms.AddRange(blurPrograms); + this.EnabledObsScenes.AddRange(enabledObsScenes); + this.BlurPrograms.AddRange(blurPrograms); + this.BlurWindows.AddRange(blurWindows); _websocket.CurrentProgramSceneChanged += WebsocketOnCurrentProgramSceneChanged; _websocket.Connected += WebsocketOnConnected; _websocket.Disconnected += WebsocketOnDisconnected; @@ -36,7 +38,7 @@ public class Blur private void UpdateBlurs() { - if (!_enabledObsScenes.Contains(_currentObsScene)) + if (!EnabledObsScenes.Contains(_currentObsScene)) return; if (!_websocket.IsConnected) return; @@ -68,9 +70,12 @@ public class Blur private bool ShouldWindowBeBlurred(WindowInfo windowInfo) { - foreach(string program in _blurPrograms) + foreach(string program in BlurPrograms) if (windowInfo.ProcessInfo.ProcessName.Contains(program, StringComparison.OrdinalIgnoreCase)) return true; + foreach(string window in BlurWindows) + if (windowInfo.WindowTitle.Contains(window, StringComparison.OrdinalIgnoreCase)) + return true; return false; } diff --git a/OBSBlur/Program.cs b/OBSBlur/Program.cs index f5335e9..ed0c778 100644 --- a/OBSBlur/Program.cs +++ b/OBSBlur/Program.cs @@ -14,7 +14,7 @@ Config config = File.Exists(configFilePath) switch }; File.WriteAllText(configFilePath, JsonConvert.SerializeObject(config)); logger.LogInformation($"Config\n{config}"); -Blur _ = new (config.ObsWebsocketUrl, config.ObsWebsocketPassword, config.EnabledScenes, config.BlurPrograms, logger); +Blur _ = new (config.ObsWebsocketUrl, config.ObsWebsocketPassword, config.EnabledScenes, config.BlurPrograms, config.BlurWindows, logger); while (true) Thread.Sleep(100); \ No newline at end of file