tray-gtk

Build GTK tray icons in Kotlin with ease.

Usage

To use this library, add jitpack to your project’s repositories:

maven { url = URI("https://jitpack.io") }

And then add the following dependency to your build.gradle.kts file:

implementation("com.github.hristogochev:tray-gtk:0.1.0")

Notes

  • Only works with GTK-3 and will not work with GTK-2.
  • An internal reference to all created tray icons is kept at all times in order to avoid garbage collection of GTK structs.

Example

Preview

if (!loadGtk()) return

startGtkDispatcher()

trayIcon(
    imagePath = "/path/to/tray/icon/image",
    visible = true,
    title = "GTK Tray Icon",
    tooltip = "GTK Tray Icon"
) {
    menu {
        item(
            text = "GTK Tray",
            enabled = false,
            imagePath = "/path/to/tray/menu/image"
        )
        separator()
        item(text = "Click me!") {
            action {
                println("Yey!")
            }
        }
        separator()
        checkbox(text = "Enable") {
            action {
                text = if (it) "Disable" else "Enable"
                println("Currently enabled: $it")
            }
        }
        separator()
        submenu(text = "Submenu") {
            item(text = "Hello")
            separator()
            item(text = "How")
            separator()
            item(text = "Are")
            separator()
            item(text = "You")
        }
        separator()
        item(text = "Exit") {
            action {
                exitProcess(0)
            }
        }
    }
}

License

Licensed under Apache-2.0 license.

GitHub

View Github