DesktopScope.kt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package eu.mjdev.desktop.provider
  2. import androidx.compose.runtime.Composable
  3. import eu.mjdev.desktop.data.App
  4. import eu.mjdev.desktop.provider.DesktopProvider.Companion.LocalDesktop
  5. // todo theme user support
  6. @Suppress("unused", "MemberVisibilityCanBePrivate")
  7. open class DesktopScope(
  8. val api: DesktopProvider
  9. ) {
  10. val isDebug: Boolean
  11. get() = api.isDebug
  12. val scope
  13. get() = api.scope
  14. val containerSize
  15. get() = api.containerSize
  16. val graphicsDevice
  17. get() = api.graphicsDevice
  18. val graphicsEnvironment
  19. get() = api.graphicsEnvironment
  20. val isTransparencySupported
  21. get() = api.isTransparencySupported
  22. val osDetails
  23. get() = api.osDetails
  24. val machineName
  25. get() = api.machineName
  26. val currentUser
  27. get() = api.currentUser
  28. val homeDir
  29. get() = api.homeDir
  30. val theme
  31. get() = currentUser.theme
  32. val iconSet
  33. get() = theme.iconSet
  34. val ai
  35. get() = api.ai
  36. // val adb
  37. // get() = api.adbHandler
  38. val imageLoader
  39. get() = api.imageLoader
  40. // val scriptManager
  41. // get() = api.scriptManager
  42. // val scriptEngine
  43. // get() = api.scriptEngine
  44. val connectionManager
  45. get() = api.connectionManager
  46. // val windowsManager
  47. // get() = api.windowsManager
  48. // val dbus
  49. // get() = api.dbus
  50. val gnome
  51. get() = api.gnome
  52. val appsProvider
  53. get() = api.appsProvider
  54. val appCategories
  55. get() = appsProvider.appCategories
  56. val appCategoriesAndApps
  57. get() = appsProvider.categoriesAndApps
  58. val allApps
  59. get() = appsProvider.allApps
  60. val favoriteApps
  61. get() = appsProvider.favoriteApps
  62. val palette
  63. get() = api.palette
  64. val desktopUtils
  65. get() = api.desktopUtils
  66. val controlCenterPages
  67. get() = api.controlCenterPages
  68. val backgroundColorState
  69. get() = api.palette.backgroundColorState
  70. val backgroundColor
  71. get() = api.palette.backgroundColor
  72. val iconsTintColorState
  73. get() = api.palette.iconsTintColor
  74. val iconsTintColor
  75. get() = api.palette.iconsTintColor
  76. val textColorState
  77. get() = api.palette.textColorState
  78. val textColor
  79. get() = textColorState.value
  80. val borderColor
  81. get() = api.palette.borderColor
  82. val disabledColor
  83. get() = api.palette.disabledColor
  84. val appMenuMinWidth = theme.appMenuMinWidth
  85. val appMenuMinHeight = theme.appMenuMinHeight
  86. val menuPadding = theme.appMenuOuterPadding
  87. val panelAutoHideEnabled
  88. get() = theme.panelHideDelay > 0L
  89. fun startApp(app: App) =
  90. api.appsProvider.startApp(app)
  91. companion object {
  92. @Composable
  93. fun withDesktopScope(
  94. api: DesktopProvider = LocalDesktop.current,
  95. block: @Composable DesktopScope.() -> Unit
  96. ) = DesktopScope(api).apply {
  97. block()
  98. }
  99. }
  100. }