Selaa lähdekoodia

code improvement

milan jurkulák 2 vuotta sitten
vanhempi
sitoutus
5169bfb31b

+ 1 - 4
src/main/kotlin/eu/mjdev/desktop/data/App.kt

@@ -3,13 +3,10 @@ package eu.mjdev.desktop.data
 import androidx.compose.runtime.MutableState
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.ui.graphics.Color
+import eu.mjdev.desktop.extensions.Custom.command
 import eu.mjdev.desktop.helpers.exception.EmptyException.Companion.EmptyException
 import eu.mjdev.desktop.provider.DesktopProvider
 import java.io.File
-import kotlin.jvm.optionals.getOrNull
-
-val Process.command: String?
-    get() = info().command().getOrNull()
 
 @Suppress("unused", "MemberVisibilityCanBePrivate", "HasPlatformType")
 class App(

+ 1 - 0
src/main/kotlin/eu/mjdev/desktop/extensions/BitmapUtils.kt

@@ -43,4 +43,5 @@ object BitmapUtils {
 
     fun ImageBitmap.cut(x: Int, y: Int, w: Int, h: Int): ImageBitmap =
         toBitmap().cut(x, y, w, h).image.toComposeImageBitmap()
+
 }

+ 0 - 2
src/main/kotlin/eu/mjdev/desktop/extensions/Compose.kt

@@ -136,6 +136,4 @@ object Compose {
 //        }
 //    }, AWTEvent.WINDOW_EVENT_MASK)
 
-    operator fun DpSize.plus(dp: Dp) = copy(width = width + dp, height = height + dp)
-
 }

+ 18 - 0
src/main/kotlin/eu/mjdev/desktop/extensions/Custom.kt

@@ -4,12 +4,15 @@ import androidx.compose.runtime.Composable
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.snapshots.SnapshotStateList
 import androidx.compose.ui.graphics.NativePaint
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.DpSize
 import eu.mjdev.desktop.helpers.streams.ResourceStream
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.channelFlow
 import kotlinx.coroutines.launch
 import java.text.DateFormat
 import java.util.*
+import kotlin.jvm.optionals.getOrNull
 
 object Custom {
 
@@ -64,4 +67,19 @@ object Custom {
         ResourceStream("keys/$key.key").string
     }.getOrNull().orEmpty()
 
+    val Process.command: String?
+        get() = info().command().getOrNull()
+
+    operator fun DpSize.plus(dp: Dp) =
+        copy(width = width + dp, height = height + dp)
+
+    operator fun DpSize.minus(dp: Dp) =
+        copy(width = width - dp, height = height - dp)
+
+//    operator fun PaddingValues.plus(dp: Dp) =
+//        copy(left = width + dp, height = height + dp)
+
+//    operator fun PaddingValues.minus(dp: Dp) =
+//        copy(width = width - dp, height = height - dp)
+
 }

+ 60 - 0
src/main/kotlin/eu/mjdev/desktop/helpers/managers/GnomeManager.kt

@@ -0,0 +1,60 @@
+package eu.mjdev.desktop.helpers.managers
+
+import eu.mjdev.desktop.helpers.system.Command
+
+@Suppress("unused", "MemberVisibilityCanBePrivate")
+class GnomeManager {
+
+    fun setColorScheme(
+        schemeName: String
+    ) = Command(
+        "gsettings",
+        "set",
+        "org.gnome.desktop.interface",
+        "color-scheme",
+        schemeName
+    ).execute()
+
+    fun setGTKTheme(
+        themeName: String = THEME_YARU
+    ) = Command(
+        "gsettings",
+        "set",
+        "org.gnome.desktop.interface",
+        "gtk-theme",
+        themeName
+    ).execute()
+
+    fun setIconTheme(
+        themeName: String = THEME_YARU
+    ) = Command(
+        "gsettings",
+        "set",
+        "org.gnome.desktop.interface",
+        "icon-theme",
+        themeName
+    ).execute()
+
+    fun setSoundTheme(
+        themeName: String = THEME_YARU
+    ) = Command(
+        "gsettings",
+        "set",
+        "org.gnome.desktop.sound",
+        "gtk-theme",
+        themeName
+    ).execute()
+
+    fun setDarkColorScheme() =
+        setColorScheme(COLOR_SCHEME_PREFER_DARK)
+
+    companion object {
+        const val COLOR_SCHEME_PREFER_DARK = "prefer-dark"
+        const val COLOR_SCHEME_MJDEV = "mjdev"
+
+        const val THEME_YARU = "Yaru"
+        const val THEME_MJDEV = "mjdev"
+
+    }
+
+}

+ 1 - 0
src/main/kotlin/eu/mjdev/desktop/provider/AppsProvider.kt

@@ -143,6 +143,7 @@ class AppsProvider(
 
     fun startApp(app: App) {
         scope.launch(Dispatchers.IO) {
+            api.gnome.setDarkColorScheme()
             if (app.isRunning) {
                 // todo menu to switch
                 if (app.isWindowFocus(api)) {

+ 2 - 4
src/main/kotlin/eu/mjdev/desktop/provider/DesktopProvider.kt

@@ -10,10 +10,7 @@ import eu.mjdev.desktop.data.User
 import eu.mjdev.desktop.extensions.Compose.asyncImageLoader
 import eu.mjdev.desktop.helpers.adb.AdbDiscover.Companion.adbDevicesHandler
 import eu.mjdev.desktop.helpers.internal.Palette
-import eu.mjdev.desktop.helpers.managers.ConnectivityManager
-import eu.mjdev.desktop.helpers.managers.FileSystemWatcher
-import eu.mjdev.desktop.helpers.managers.KCEFHelper
-import eu.mjdev.desktop.helpers.managers.WindowsManager
+import eu.mjdev.desktop.helpers.managers.*
 import eu.mjdev.desktop.helpers.system.Command
 import eu.mjdev.desktop.provider.AIProvider.AiPluginGemini
 import kotlinx.coroutines.CoroutineScope
@@ -33,6 +30,7 @@ class DesktopProvider(
     val kcefHelper: KCEFHelper = KCEFHelper(scope),
     val ai: AIProvider = AIProvider(scope, AiPluginGemini(scope)),
     val windows: WindowsManager = WindowsManager(),
+    val gnome: GnomeManager = GnomeManager(),
 ) {
     private val __currentUser: User by lazy { User.load() }
     private val _currentUser: MutableState<User> = mutableStateOf(__currentUser)