Add Catppuccin theme (#2117)

Mocha for dark and Latte for light, mauve accent
This commit is contained in:
claymorwan
2025-05-28 19:39:42 +00:00
committed by GitHub
parent e1f6d14393
commit 77eb558742
9 changed files with 250 additions and 0 deletions

View File

@ -22,6 +22,7 @@ The format is a modified version of [Keep a Changelog](https://keepachangelog.co
- Option to keep read manga when clearing database ([@AwkwardPeak7](https://github.com/AwkwardPeak7)) ([#1979](https://github.com/mihonapp/mihon/pull/1979))
- Add advanced option to always update manga title from source ([@FlaminSarge](https://github.com/FlaminSarge)) ([#1182](https://github.com/mihonapp/mihon/pull/1182))
- Full predictive back support ([@AntsyLich](https://github.com/AntsyLich)) ([#2085](https://github.com/mihonapp/mihon/pull/2085))
- Add Catppuccin theme (mocha for dark and latte for light, mauve accent) ([@claymorwan](https://github.com/claymorwan/)) ([#2117](https://github.com/mihonapp/mihon/pull/2117))
### Improved
- Significantly improve browsing speed (near instantaneous) ([@AntsyLich](https://github.com/AntsyLich)) ([#1946](https://github.com/mihonapp/mihon/pull/1946))

View File

@ -6,6 +6,7 @@ import tachiyomi.i18n.MR
enum class AppTheme(val titleRes: StringResource?) {
DEFAULT(MR.strings.label_default),
MONET(MR.strings.theme_monet),
CATPPUCCIN(MR.strings.theme_catppuccin),
GREEN_APPLE(MR.strings.theme_greenapple),
LAVENDER(MR.strings.theme_lavender),
MIDNIGHT_DUSK(MR.strings.theme_midnightdusk),

View File

@ -9,6 +9,7 @@ import androidx.compose.ui.platform.LocalContext
import eu.kanade.domain.ui.UiPreferences
import eu.kanade.domain.ui.model.AppTheme
import eu.kanade.presentation.theme.colorscheme.BaseColorScheme
import eu.kanade.presentation.theme.colorscheme.CatppuccinColorScheme
import eu.kanade.presentation.theme.colorscheme.GreenAppleColorScheme
import eu.kanade.presentation.theme.colorscheme.LavenderColorScheme
import eu.kanade.presentation.theme.colorscheme.MidnightDuskColorScheme
@ -77,6 +78,7 @@ private fun getThemeColorScheme(
private val colorSchemes: Map<AppTheme, BaseColorScheme> = mapOf(
AppTheme.DEFAULT to TachiyomiColorScheme,
AppTheme.CATPPUCCIN to CatppuccinColorScheme,
AppTheme.GREEN_APPLE to GreenAppleColorScheme,
AppTheme.LAVENDER to LavenderColorScheme,
AppTheme.MIDNIGHT_DUSK to MidnightDuskColorScheme,

View File

@ -0,0 +1,103 @@
package eu.kanade.presentation.theme.colorscheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.ui.graphics.Color
/**
* Colors for Catppuccin theme
* MIT License
* Copyright (c) 2021 Catppuccin
* https://catppuccin.com
* M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
*
* Key colors (dark):
* Primary #CBA6F4
* Secondary #CBA6F4
* Tertiary #CBA6F4
* Neutral #181825
* Key colors (light):
* Primary #8839EF
* Secondary #8839EF
* Tertiary #8839EF
* Neutral #E6E9EF
*/
internal object CatppuccinColorScheme : BaseColorScheme() {
override val darkScheme = darkColorScheme(
primary = Color(0xFFCBA6F7),
onPrimary = Color(0xFF11111B),
primaryContainer = Color(0xFFCBA6F7),
onPrimaryContainer = Color(0xFF11111B),
secondary = Color(0xFFCBA6F7), // Unread badge
onSecondary = Color(0xFF11111B), // Unread badge text
secondaryContainer = Color(0xFF313244), // Navigation bar selector pill & progress indicator (remaining)
onSecondaryContainer = Color(0xFFCBA6F7), // Navigation bar selector icon
tertiary = Color(0xFFCBA6F7), // Volume and brightness bars, Downloaded badge
onTertiary = Color(0xFF11111B), // Downloaded badge text
tertiaryContainer = Color(0xFF1E1E2E),
onTertiaryContainer = Color(0xFFCDD6F4),
error = Color(0xFFF38BA8),
onError = Color(0xFF11111B),
errorContainer = Color(0xFFFF0558),
onErrorContainer = Color(0xFFEF9FB4),
background = Color(0xFF181825),
onBackground = Color(0xFFCDD6F4),
surface = Color(0xFF181825),
onSurface = Color(0xFFCDD6F4),
surfaceVariant = Color(0xFF1E1E2E), // Navigation bar background (ThemePrefWidget)
onSurfaceVariant = Color(0xFFCDD6F4), // Button (unselected)
outline = Color(0xFFCBA6F7),
outlineVariant = Color(0xFF585B70), // Outlines for buttons
scrim = Color(0xFF11111B),
inverseSurface = Color(0xFFEFF1F5), // Snackbar or whatever they called
inverseOnSurface = Color(0xFF4C4F69), // Snackbar text
inversePrimary = Color(0xFF8839EF), // Snackbar accent
surfaceDim = Color(0xFF181825),
surfaceBright = Color(0xFF313244),
surfaceContainerLowest = Color(0xFF181825),
surfaceContainerLow = Color(0xFF1E1E2E), // Repo cards
surfaceContainer = Color(0xFF1E1E2E),
surfaceContainerHigh = Color(0xFF1E1E2E), // Filter menu
surfaceContainerHighest = Color(0xFF313244), // Untoggleg button bg
)
override val lightScheme = lightColorScheme(
primary = Color(0xFF8839EF),
onPrimary = Color(0xFFDCE0E8),
primaryContainer = Color(0xFF8839EF),
onPrimaryContainer = Color(0xFFDCE0E8),
secondary = Color(0xFF8839EF), // Unread badge
onSecondary = Color(0xFFDCE0E8), // Unread badge text
secondaryContainer = Color(0xFFCDD0DA), // Navigation bar selector pill & progress indicator (remaining)
onSecondaryContainer = Color(0xFF8839EF), // Navigation bar selector icon
tertiary = Color(0xFF8839EF), // Volume and brightness bars, Downloaded badge
onTertiary = Color(0xFFDCE0E8), // Downloaded badge text
tertiaryContainer = Color(0xFFEFF1F5),
onTertiaryContainer = Color(0xFF4C4F69),
error = Color(0xFFD20F39),
onError = Color(0xFFDCE0E8),
errorContainer = Color(0xFF68001C),
onErrorContainer = Color(0xFFD61C41),
background = Color(0xFFE6E9EF),
onBackground = Color(0xFF4C4F69),
surface = Color(0xFFE6E9EF),
onSurface = Color(0xFF4C4F69),
surfaceVariant = Color(0xFFEFF1F5), // Navigation bar background (ThemePrefWidget)
onSurfaceVariant = Color(0xFF4C4F69), // Button (unselected)
outline = Color(0xFF8839EF),
outlineVariant = Color(0xFFACB0BE), // Outlines for buttons
scrim = Color(0xFFDCE0E8),
inverseSurface = Color(0xFF1E1E2E), // Snackbar
inverseOnSurface = Color(0xFFCDD6F4), // Snackbar text
inversePrimary = Color(0xFFCBA6F7), // Snackbar accent
surfaceDim = Color(0xFFE6E9EF),
surfaceBright = Color(0xFFCDD0DA),
surfaceContainerLowest = Color(0xFFE6E9EF),
surfaceContainerLow = Color(0xFFEFF1F5), // Repo cards
surfaceContainer = Color(0xFFEFF1F5), // Navigation bar background
surfaceContainerHigh = Color(0xFFEFF1F5), // Filter menu
surfaceContainerHighest = Color(0xFFCDD0DA), // Untoggleg bg
)
}

View File

@ -30,6 +30,7 @@ class ThemingDelegateImpl : ThemingDelegate {
private val themeResources: Map<AppTheme, Int> = mapOf(
AppTheme.MONET to R.style.Theme_Tachiyomi_Monet,
AppTheme.CATPPUCCIN to R.style.Theme_Tachiyomi_Catppuccin,
AppTheme.GREEN_APPLE to R.style.Theme_Tachiyomi_GreenApple,
AppTheme.LAVENDER to R.style.Theme_Tachiyomi_Lavender,
AppTheme.MIDNIGHT_DUSK to R.style.Theme_Tachiyomi_MidnightDusk,

View File

@ -91,6 +91,45 @@
<!-- Monet theme only support S+ -->
<style name="Theme.Tachiyomi.Monet" />
<!--== Catppuccin Theme ==-->
<style name="Theme.Tachiyomi.Catppuccin">
<!-- Theme Colors -->
<item name="colorPrimary">@color/catppuccin_primary</item>
<item name="colorOnPrimary">@color/catppuccin_onPrimary</item>
<item name="colorPrimaryContainer">@color/catppuccin_primaryContainer</item>
<item name="colorOnPrimaryContainer">@color/catppuccin_onPrimaryContainer</item>
<item name="colorPrimaryInverse">@color/catppuccin_inversePrimary</item>
<item name="colorSecondary">@color/catppuccin_secondary</item>
<item name="colorOnSecondary">@color/catppuccin_onSecondary</item>
<item name="colorSecondaryContainer">@color/catppuccin_secondaryContainer</item>
<item name="colorOnSecondaryContainer">@color/catppuccin_onSecondaryContainer</item>
<item name="colorTertiary">@color/catppuccin_tertiary</item>
<item name="colorOnTertiary">@color/catppuccin_onTertiary</item>
<item name="colorTertiaryContainer">@color/catppuccin_tertiaryContainer</item>
<item name="colorOnTertiaryContainer">@color/catppuccin_onTertiaryContainer</item>
<item name="android:colorBackground">@color/catppuccin_background</item>
<item name="colorOnBackground">@color/catppuccin_onBackground</item>
<item name="colorSurface">@color/catppuccin_surface</item>
<item name="colorOnSurface">@color/catppuccin_onSurface</item>
<item name="colorSurfaceVariant">@color/catppuccin_surfaceVariant</item>
<item name="colorOnSurfaceVariant">@color/catppuccin_onSurfaceVariant</item>
<item name="colorSurfaceInverse">@color/catppuccin_inverseSurface</item>
<item name="colorOnSurfaceInverse">@color/catppuccin_inverseOnSurface</item>
<item name="colorError">@color/catppuccin_error</item>
<item name="colorOnError">@color/catppuccin_onError</item>
<item name="colorErrorContainer">@color/catppuccin_errorContainer</item>
<item name="colorOnErrorContainer">@color/catppuccin_onErrorContainer</item>
<item name="colorOutline">@color/catppuccin_outline</item>
<item name="colorOutlineVariant">@color/catppuccin_outlineVariant</item>
<item name="scrimBackground">@color/catppuccin_scrim</item>
<item name="colorSurfaceBright">@color/catppuccin_surfaceBright</item>
<item name="colorSurfaceDim">@color/catppuccin_surfaceDim</item>
<item name="colorSurfaceContainer">@color/catppuccin_surfaceContainer</item>
<item name="colorSurfaceContainerHigh">@color/catppuccin_surfaceContainerHigh</item>
<item name="colorSurfaceContainerHighest">@color/catppuccin_surfaceContainerHighest</item>
<item name="colorSurfaceContainerLow">@color/catppuccin_surfaceContainerLow</item>
<item name="colorSurfaceContainerLowest">@color/catppuccin_surfaceContainerLowest</item>
</style>
<!--== Green Apple Theme ==-->
<style name="Theme.Tachiyomi.GreenApple">
<!-- Theme Colors -->

View File

@ -228,6 +228,7 @@
<string name="theme_light">Light</string>
<string name="theme_dark">Dark</string>
<string name="theme_monet">Dynamic</string>
<string name="theme_catppuccin">Catppuccin</string>
<string name="theme_greenapple">Green Apple</string>
<string name="theme_lavender">Lavender</string>
<string name="theme_midnightdusk">Midnight Dusk</string>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Colors for Catppuccin theme
~ MIT License
~ Copyright (c) 2021 Catppuccin
~ https://catppuccin.com
~ M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
~
~ Key colors:
~ Primary #CBA6F7
~ Secondary #CBA6F4
~ Tertiary #CBA6F4
~ Neutral #181825
-->
<resources>
<color name="catppuccin_primary">#CBA6F7</color>
<color name="catppuccin_onPrimary">#11111B</color>
<color name="catppuccin_primaryContainer">#CBA6F7</color>
<color name="catppuccin_onPrimaryContainer">#11111B</color>
<color name="catppuccin_secondary">#CBA6F7</color>
<color name="catppuccin_onSecondary">#11111B</color>
<color name="catppuccin_secondaryContainer">#313244</color>
<color name="catppuccin_onSecondaryContainer">#CBA6F7</color>
<color name="catppuccin_tertiary">#CBA6F7</color>
<color name="catppuccin_onTertiary">#11111B</color>
<color name="catppuccin_tertiaryContainer">#1E1E2E</color>
<color name="catppuccin_onTertiaryContainer">#CDD6F4</color>
<color name="catppuccin_error">#F38BA8</color>
<color name="catppuccin_onError">#11111B</color>
<color name="catppuccin_errorContainer">#FFFF0558</color>
<color name="catppuccin_onErrorContainer">#EF9FB4</color>
<color name="catppuccin_background">#181825</color>
<color name="catppuccin_onBackground">#CDD6F4</color>
<color name="catppuccin_surface">#181825</color>
<color name="catppuccin_onSurface">#CDD6F4</color>
<color name="catppuccin_surfaceVariant">#1E1E2E</color>
<color name="catppuccin_onSurfaceVariant">#CDD6F4</color>
<color name="catppuccin_outline">#CBA6F7</color>
<color name="catppuccin_outlineVariant">#585B70</color>
<color name="catppuccin_scrim">#FF11111B</color>
<color name="catppuccin_inverseSurface">#EFF1F5</color>
<color name="catppuccin_inverseOnSurface">#4C4F69</color>
<color name="catppuccin_inversePrimary">#8839EF</color>
<color name="catppuccin_surfaceDim">#181825</color>
<color name="catppuccin_surfaceBright">#313244</color>
<color name="catppuccin_surfaceContainerLowest">#FF181825</color>
<color name="catppuccin_surfaceContainerLow">#1E1E2E</color>
<color name="catppuccin_surfaceContainer">#1E1E2E</color>
<color name="catppuccin_surfaceContainerHigh">#1E1E2E</color>
<color name="catppuccin_surfaceContainerHighest">#313244</color>
</resources>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Colors for Catppuccin theme
~ MIT License
~ Copyright (c) 2021 Catppuccin
~ https://catppuccin.com
~ M3 colors generated by Material Theme Builder (https://goo.gle/material-theme-builder-web)
~
~ Key colors:
~ Primary #8839EF
~ Secondary #8839EF
~ Tertiary #8839EF
~ Neutral #E6E9EF
-->
<resources>
<color name="catppuccin_primary">#8839EF</color>
<color name="catppuccin_onPrimary">#DCE0E8</color>
<color name="catppuccin_primaryContainer">#8839EF</color>
<color name="catppuccin_onPrimaryContainer">#DCE0E8</color>
<color name="catppuccin_secondary">#8839EF</color>
<color name="catppuccin_onSecondary">#DCE0E8</color>
<color name="catppuccin_secondaryContainer">#CDD0DA</color>
<color name="catppuccin_onSecondaryContainer">#8839EF</color>
<color name="catppuccin_tertiary">#8839EF</color>
<color name="catppuccin_onTertiary">#DCE0E8</color>
<color name="catppuccin_tertiaryContainer">#EFF1F5</color>
<color name="catppuccin_onTertiaryContainer">#CDD6F4</color>
<color name="catppuccin_error">#D20F39</color>
<color name="catppuccin_onError">#DCE0E8</color>
<color name="catppuccin_errorContainer">#FF68001C</color>
<color name="catppuccin_onErrorContainer">#D61C41</color>
<color name="catppuccin_background">#E6E9EF</color>
<color name="catppuccin_onBackground">#4C4F69</color>
<color name="catppuccin_surface">#E6E9EF</color>
<color name="catppuccin_onSurface">#4C4F69</color>
<color name="catppuccin_surfaceVariant">#EFF1F5</color>
<color name="catppuccin_onSurfaceVariant">#4C4F69</color>
<color name="catppuccin_outline">#8839EF</color>
<color name="catppuccin_outlineVariant">#ACB0BE</color>
<color name="catppuccin_scrim">#FFDCE0E8</color>
<color name="catppuccin_inverseSurface">#1E1E2E</color>
<color name="catppuccin_inverseOnSurface">#CDD6F4</color>
<color name="catppuccin_inversePrimary">#CBA6F7</color>
<color name="catppuccin_surfaceDim">#E6E9EF</color>
<color name="catppuccin_surfaceBright">#CDD0DA</color>
<color name="catppuccin_surfaceContainerLowest">#FFE6E9EF</color>
<color name="catppuccin_surfaceContainerLow">#EFF1F5</color>
<color name="catppuccin_surfaceContainer">#EFF1F5</color>
<color name="catppuccin_surfaceContainerHigh">#EFF1F5</color>
<color name="catppuccin_surfaceContainerHighest">#CDD0DA</color>
</resources>