Add WindowTitle blur capability
This commit is contained in:
parent
6a5f2bdc05
commit
a75f192fed
@ -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)}}}";
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
Loading…
x
Reference in New Issue
Block a user