From cfb841db005b0a2764f6c9f4ceaf766a70dc4684 Mon Sep 17 00:00:00 2001 From: hstyi Date: Thu, 9 Jan 2025 17:57:08 +0800 Subject: [PATCH] feat: support Dracula --- src/main/kotlin/app/termora/Laf.kt | 47 ++++++++++++++++++++- src/main/kotlin/app/termora/ThemeManager.kt | 1 + 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/termora/Laf.kt b/src/main/kotlin/app/termora/Laf.kt index 64e2e2d..c534571 100644 --- a/src/main/kotlin/app/termora/Laf.kt +++ b/src/main/kotlin/app/termora/Laf.kt @@ -8,6 +8,51 @@ import com.formdev.flatlaf.FlatPropertiesLaf import com.formdev.flatlaf.util.SystemInfo import java.util.* +class DraculaLaf : FlatPropertiesLaf("Dracula", Properties().apply { + putAll( + mapOf( + "@baseTheme" to "dark", + "@background" to "#282935", + "@windowText" to "#eaeaea", + ) + ) +}), ColorTheme { + override fun getColor(color: TerminalColor): Int { + return when (color) { + TerminalColor.Basic.BACKGROUND -> 0x282935 + TerminalColor.Basic.FOREGROUND -> 0xeaeaea + TerminalColor.Basic.SELECTION_BACKGROUND -> 0x56596b + TerminalColor.Basic.SELECTION_FOREGROUND -> 0xfeffff + TerminalColor.Basic.HYPERLINK -> 0x255ab4 + + TerminalColor.Cursor.BACKGROUND -> 0xc7c7c7 + + TerminalColor.Find.BACKGROUND -> 0xffff00 + TerminalColor.Find.FOREGROUND -> 0x282935 + + TerminalColor.Normal.BLACK -> 0 + TerminalColor.Normal.RED -> 0xef766d + TerminalColor.Normal.GREEN -> 0x88f397 + TerminalColor.Normal.YELLOW -> 0xf4f8a7 + TerminalColor.Normal.BLUE -> 0xc4a9f4 + TerminalColor.Normal.MAGENTA -> 0xf297cd + TerminalColor.Normal.CYAN -> 0xaceafb + TerminalColor.Normal.WHITE -> 0xc7c7c7 + + TerminalColor.Bright.BLACK -> 0x676767 + TerminalColor.Bright.RED -> 0xef766d + TerminalColor.Bright.GREEN -> 0x88f397 + TerminalColor.Bright.YELLOW -> 0xf4f8a7 + TerminalColor.Bright.BLUE -> 0xc4a9f4 + TerminalColor.Bright.MAGENTA -> 0xf297cd + TerminalColor.Bright.CYAN -> 0xaceafb + TerminalColor.Bright.WHITE -> 0xfeffff + + else -> Int.MAX_VALUE + } + } + +} class LightLaf : FlatLightLaf(), ColorTheme { override fun getColor(color: TerminalColor): Int { @@ -163,7 +208,7 @@ class TermiusDarkLaf : FlatPropertiesLaf("Termius Dark", Properties().apply { TerminalColor.Basic.SELECTION_BACKGROUND, TerminalColor.Cursor.BACKGROUND -> 0x21b568 - TerminalColor.Basic.SELECTION_FOREGROUND ->0 + TerminalColor.Basic.SELECTION_FOREGROUND -> 0 TerminalColor.Basic.FOREGROUND -> 0x21b568 diff --git a/src/main/kotlin/app/termora/ThemeManager.kt b/src/main/kotlin/app/termora/ThemeManager.kt index 600cbeb..28cf372 100644 --- a/src/main/kotlin/app/termora/ThemeManager.kt +++ b/src/main/kotlin/app/termora/ThemeManager.kt @@ -30,6 +30,7 @@ class ThemeManager private constructor() { val themes = mapOf( "Light" to LightLaf::class.java.name, "Dark" to DarkLaf::class.java.name, + "Dracula" to DraculaLaf::class.java.name, "iTerm2 Dark" to iTerm2DarkLaf::class.java.name, "Termius Dark" to TermiusDarkLaf::class.java.name, "Termius Light" to TermiusLightLaf::class.java.name,