<Kotlin Multiplatform Development Roadmap for 2024...
# feed
r
Kotlin Multiplatform Development Roadmap for 2024 With the recently achieved stability of Kotlin Multiplatform, development teams worldwide can now seamlessly and confidently adopt it in production. However, this is just the beginning for KMP and its ecosystem. To equip you with the best cross-platform development experience, JetBrains aims to deliver a host of further improvements to the core Kotlin Multiplatform technology, […]
2️⃣ 1
🚀 4
m
We’re dedicated to making Compose Multiplatform a framework that allows creating beautiful and performant applications that look the same way on all supported platforms. This is more of a problem than a desired feature. I do not want a desktop application to look like a mobile application. This is neither beautiful nor a good UX. Why does this roadmap not contain any statement about a dedicated desktop theme?
💯 1
☝️ 1
👍 2
👍🏻 1
plus1 5
h
Totally agree, I'm a bit frustrated because they've already done the job in Fleet and I'm forced to spend a lot of time developing basic components for a proper desktop layout.
s
I experience that modern apps on Desktop look like their mobile counterparts anyway. The classic desktop theme may be something of the past. Do you feel for example Slack should look different on Desktop?
h
On desktop, users expect to find much more comprehensive functions in terms of creation and editing, and this is probably why they still use a computer and not a phone. Slack is just a webapp on desktop.
s
Ashampoo Photos looks the same on Desktop as on an Android Tablet - it also has the nearly same functionality (things like XMP sidecars don't work so well on Android). My first thought was indeed to design smaller buttons and a different layout, but I came to the conclusion that there might be people wanting to use the app with a touchscreen (for e.g. Microsoft Surface) and a layout that works well on a big tablet can be the same for Desktop. Your mileage may vary.
Also why should there be a big difference between a tablet that you connect a bluetooth keyboard & mouse with to a Windows Desktop?
h
Because my tablet is 8 times smaller than my computer screen.
s
Ashampoo Photos as well as Slack, Outlook and many other apps that look the same on both platforms are designed in a way that at small resolutions everything fits in (maybe with scrolling) and adapt good to a wider resolution.
I feel that apps that have cramped in so many tiny buttons that the toolbar can't be displayed below a full HD screen are not really state of the art anymore. 😅
I try to make a responsive layout that displays more buttons if the space is available, but it's still the same layout and theme for all devices.
@Michael Paus Do you have a sample screenshot/app of what you refer to if you say "desktop theme"?
m
There are a few examples here: https://github.com/alexstyl/Jetpack-Compose-Desktop-Themes . Jetbrains is well aware that something like a dedicated desktop theme is necessary. Therefore they are working on Jewel. I am just wondering what priority that has and why it was not mentioned in the road map.
s
Yes, I could imagine something like this. I'm not in favor of Aurora. It looks like a Java AWT app from 2000. I might not want that.
m
The main problem of Material for desktop is not so much how it looks (that’s more or less a matter of taste). The problem is the layout of elements which is geared to devices which are operated with a big finger and not with a pointer device. In my own app I therefore have a switch where the user can select his/her primary input device and I then try to adjust the layout accordingly. One thing I do, for example, is to modify
LocalMinimumInteractiveComponentEnforcement.
s
Ok, so you ignore Microsoft Surface users who want to use your app with a touchscreen?
m
No, I said that the user can switch the layout at runtime.
s
Oh, yes, skipped that.
Ok, it's a possibility. 🤔
in Ashampoo Photos I have a buttonSize constant (48x48pt) which could be a setting. Everything else is calculated around that.
m
This is a fragment of my top level entry point into the code.
Copy code
@OptIn(ExperimentalMaterialApi::class)
@Composable
internal fun App(topOffset: Dp = 0.dp) {
    with (object : KoinComponent {
        val aipModel: AIPModel by inject()
        val aip by aipModel.aipModelState.collectAsState()
        val isTouchDevice = remember(aip.primaryDevice) { aip.primaryDevice == PrimaryDevice.TOUCH }
    }) {
        CompositionLocalProvider(LocalMinimumInteractiveComponentEnforcement provides isTouchDevice) {
            Surface(color = MaterialTheme.colors.surface, modifier = Modifier.fillMaxSize()) {
If you don’t use the above there are certain limits which you cannot override.
s
Ok, I guess I see now what you are asking for.