Compose desktop navigation library


Now navipose supports basic screen navigation between few screens


At first you should create something like simple graph

//Each screen inside graph should implement IScreen interface
sealed class Screens: IScreen {
    object Main : Screens()
    object SubScreen : Screens()

Than create navigator inside your composable function

//Specify start screen
Navigator(Screens.Main) {
  //Add screens to navigation graph
  addScreen(Screens.Main) { MainScreen(this) }
  addScreen(Screens.SubScreen) { SubScreen(this)}

And your composable functions should be like that

fun MainScreen(navigator: INavigator) {
  //On Navigate to second screen on click
  Button(onClick = { navigator.navigate(Screens.SubScreen) }) {
    Text("Hello, go to subScreen")

fun SubScreen(navigator: INavigator) {
  //Navigate back
  Button(onClick = { navigator.goBack() }) {
    Text("Go back")


Future features

  • Maven central or jitpack repository
  • Stub screen on wrong navigation
  • Navigation arguments
  • Complete basic navigation flow
  • Back results
  • Controller support
  • Utilities functions for lifecycle/navigation
  • Nested/Parallel navigation support (now it’s possible, but was not planned)


View Github