Add WindowTitle blur capability

This commit is contained in:
glax 2024-04-16 21:27:12 +02:00
parent 6a5f2bdc05
commit a75f192fed
3 changed files with 17 additions and 9 deletions

View File

@ -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)}}}";
}
}

View File

@ -13,17 +13,19 @@ public class Blur
private readonly WindowManager _windowManager = new ();
private readonly OBSWebsocket _websocket = new ();
private string _currentObsScene = "";
private readonly List<string> _enabledObsScenes = new();
private readonly List<string> _blurPrograms = new();
public readonly List<string> EnabledObsScenes = new();
public readonly List<string> BlurPrograms = new();
public readonly List<string> BlurWindows = new();
private readonly Dictionary<IntPtr, uint> _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;
}

View File

@ -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);