diff --git a/ChatTwo/Configuration.cs b/ChatTwo/Configuration.cs
index 5cbf40e..aabfaeb 100755
--- a/ChatTwo/Configuration.cs
+++ b/ChatTwo/Configuration.cs
@@ -71,6 +71,10 @@ public class Configuration : IPluginConfiguration
// can flip this off in the Privacy tab.
public bool HellionThemeEnabled = true;
+ // Window background opacity, 0.5–1.0. Lower values make the plugin
+ // panes more glass-like so the game shines through. Default ~92%.
+ public float HellionThemeWindowOpacity = 0.92f;
+
public int GetRetentionDays(ChatType type)
{
if (RetentionPerChannelDays.TryGetValue(type, out var userOverride))
@@ -250,6 +254,7 @@ public class Configuration : IPluginConfiguration
FirstRunCompleted = other.FirstRunCompleted;
HellionThemeEnabled = other.HellionThemeEnabled;
+ HellionThemeWindowOpacity = other.HellionThemeWindowOpacity;
}
}
diff --git a/ChatTwo/Plugin.cs b/ChatTwo/Plugin.cs
index 702f281..040d2b8 100755
--- a/ChatTwo/Plugin.cs
+++ b/ChatTwo/Plugin.cs
@@ -389,7 +389,9 @@ public sealed class Plugin : IDalamudPlugin
// (chat log, settings, viewers, wizard, file dialog) renders with
// the same palette. Skipping the push leaves the upstream Dalamud
// look untouched for users who flipped the toggle off.
- using IDisposable? _style = Config.HellionThemeEnabled ? HellionStyle.PushGlobal() : null;
+ using IDisposable? _style = Config.HellionThemeEnabled
+ ? HellionStyle.PushGlobal(Config.HellionThemeWindowOpacity)
+ : null;
ChatLogWindow.BeginFrame();
diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs
index 13fcd83..b073de7 100644
--- a/ChatTwo/Resources/HellionStrings.Designer.cs
+++ b/ChatTwo/Resources/HellionStrings.Designer.cs
@@ -134,4 +134,6 @@ internal class HellionStrings
internal static string Theme_Heading => Get(nameof(Theme_Heading));
internal static string Theme_Enabled_Name => Get(nameof(Theme_Enabled_Name));
internal static string Theme_Enabled_Description => Get(nameof(Theme_Enabled_Description));
+ internal static string Theme_WindowOpacity_Label => Get(nameof(Theme_WindowOpacity_Label));
+ internal static string Theme_WindowOpacity_Help => Get(nameof(Theme_WindowOpacity_Help));
}
diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx
index ffec8b9..735846d 100644
--- a/ChatTwo/Resources/HellionStrings.de.resx
+++ b/ChatTwo/Resources/HellionStrings.de.resx
@@ -273,4 +273,10 @@
Industrielle HUD-Palette mit cyan-blauen Aktionsfarben, schiefer-violetten Tabs und Bernstein-Akzenten für aktive Zustände, global angewendet auf Chat-Fenster, Einstellungen, Viewer und Wizard. Deaktivieren, um das Standard-Dalamud-Erscheinungsbild zu nutzen.
+
+ Fenster-Deckkraft
+
+
+ Wie deckend die Plugin-Fenster sind. Niedrigere Werte lassen das Spiel durchscheinen, Form-Felder und Dialoge bleiben oben drauf deckend und gut lesbar.
+
diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx
index 8fced43..1e2547a 100644
--- a/ChatTwo/Resources/HellionStrings.resx
+++ b/ChatTwo/Resources/HellionStrings.resx
@@ -273,4 +273,10 @@
Industrial HUD palette with cyan-teal action accents, slate-violet tabs and amber active highlights, applied globally to chat log, settings, viewers and the wizard. Disable to fall back to the default Dalamud look.
+
+ Window opacity
+
+
+ How opaque the plugin panes are. Lower values let the game shine through; form fields and dialogs stay opaque on top so they remain readable.
+
diff --git a/ChatTwo/Ui/HellionStyle.cs b/ChatTwo/Ui/HellionStyle.cs
index b71025c..669e34b 100644
--- a/ChatTwo/Ui/HellionStyle.cs
+++ b/ChatTwo/Ui/HellionStyle.cs
@@ -109,10 +109,18 @@ internal static class HellionStyle
/// Plugin.Draw. Covers every ImGui surface the plugin renders so the
/// Hellion look is consistent across upstream and Hellion tabs.
///
- internal static IDisposable PushGlobal()
+ /// Window background alpha (0.5–1.0). Lower
+ /// values let the game shine through the plugin panes.
+ internal static IDisposable PushGlobal(float windowOpacity = 1.0f)
{
var stack = new StackHandle();
+ // Mix the configured opacity into the window background color.
+ // Other surface layers (ChildBg, FrameBg, popups) stay opaque so
+ // form fields and dialogs remain easy to read on top.
+ var alphaByte = (uint)Math.Clamp((int)(windowOpacity * 255f), 0x55, 0xFF);
+ var windowBgWithAlpha = (WindowBgRgba & 0xFFFFFF00u) | alphaByte;
+
// Layout — geometric edges, modest rounding, single-pixel borders.
stack.PushStyleVar(ImGuiStyleVar.WindowRounding, 4f);
stack.PushStyleVar(ImGuiStyleVar.ChildRounding, 3f);
@@ -125,7 +133,7 @@ internal static class HellionStyle
stack.PushStyleVar(ImGuiStyleVar.FrameBorderSize, 1f);
// Surfaces.
- stack.PushColor(ImGuiCol.WindowBg, WindowBgRgba);
+ stack.PushColor(ImGuiCol.WindowBg, windowBgWithAlpha);
stack.PushColor(ImGuiCol.ChildBg, ChildBgRgba);
stack.PushColor(ImGuiCol.PopupBg, PopupBgRgba);
stack.PushColor(ImGuiCol.Border, BorderRgba);
diff --git a/ChatTwo/Ui/SettingsTabs/Privacy.cs b/ChatTwo/Ui/SettingsTabs/Privacy.cs
index 17242ae..8f5058a 100644
--- a/ChatTwo/Ui/SettingsTabs/Privacy.cs
+++ b/ChatTwo/Ui/SettingsTabs/Privacy.cs
@@ -77,6 +77,15 @@ internal sealed class Privacy : ISettingsTab
ref Mutable.HellionThemeEnabled,
HellionStrings.Theme_Enabled_Name,
HellionStrings.Theme_Enabled_Description);
+
+ using (ImRaii.Disabled(!Mutable.HellionThemeEnabled))
+ {
+ ImGui.Spacing();
+ var opacity = Mutable.HellionThemeWindowOpacity;
+ if (ImGui.SliderFloat($"{HellionStrings.Theme_WindowOpacity_Label}##theme-opacity", ref opacity, 0.5f, 1.0f, "%.2f"))
+ Mutable.HellionThemeWindowOpacity = Math.Clamp(opacity, 0.5f, 1.0f);
+ ImGuiUtil.HelpText(HellionStrings.Theme_WindowOpacity_Help);
+ }
}
ImGui.Spacing();