MyGo · Native desktop · Light and dark

OnevraThe native desktop component library

Onevra is the MyGo component library: themed controls, window shells, Lucide icons and complex views for chat, Markdown, code, charts and graphs — one focused toolkit you can adopt piece by piece.

go get github.com/oneo-me/onevra/source

Every component already in the library

Onevra ships the controls below today, each with package documentation and tests. Import them from github.com/oneo-me/onevra/source/components.

Complex views live in their own packages, listed in the next section.

Browse the components

Complex views, in their own packages

Beyond single controls, Onevra implements the complete views an application needs. Each one is a separate package with its own documentation and tests.

components/chart
BarLineAreaStackedBarDonutBubble

Categorical charts with smooth updates, interactive legends, keyboard selection and custom empty and detail content.

components/graph
View

An interactive force-directed relationship graph with pan, zoom, hover and draggable nodes.

components/command
CommandPaletteCommandDialog

A searchable, keyboard-driven command palette, embeddable or hosted in a dialog.

components/code
ParseDocument

Read-only syntax highlighting with light and dark palettes, usable alone or inside Markdown.

components/markdown
MarkdownParseMarkdown

Selectable CommonMark and GFM documents with application-supplied images and custom code-block views.

components/chat
ConversationComposerTurnActivityRow

Conversations with turns, activity groups, folded summaries, attachments and a composer.

components/gesture
ClassifyNavigation

Wheel, pinch and touchpad pan-and-zoom handling for custom canvases.

Less ceremony, more product

Create a window, build content with Onevra controls, and keep state in your own values.

package main

import (
	"log"

	"github.com/egoist/mygo"
	"github.com/egoist/mygo/ui"
	"github.com/oneo-me/onevra/source/components"
	"github.com/oneo-me/onevra/source/shells/plain"
	"github.com/oneo-me/onevra/source/theme"
)

func main() {
	mygo.App.WhenReady(func() {
		shell := plain.NewShell(plain.ShellOptions{
			Title: "Hello Onevra",
			Theme: theme.Onevra,
			Content: func(c *ui.Context) {
				ui.Column(c).Fill().Padding(24).Children(func() {
					components.Text(c, "Hello, Onevra!")
				})
			},
		})
		shell.Window().OnClosed(func() { mygo.App.Quit() })
	})
	if err := mygo.App.Run(); err != nil {
		log.Fatal(err)
	}
}

A theme that follows the desktop

Onevra's palettes cover the controls, the shells and the window chrome. Switch appearance once and the whole application follows.

primary
secondary
muted
accent
border
foreground
  • Warm neutrals, terracotta accentLight and dark palettes share one accent family, with dark mode lifting the accent for legibility.
  • System-awareThe preset follows the desktop's light or dark appearance, text scale and higher-contrast settings.
  • One switch, two moodsChoose light, dark or system and every component and window edge changes with it.

Up and running in a minute

Onevra requires Go 1.27.1 or later. Add the module, then run the gallery.

1Add the library
go get github.com/oneo-me/onevra/source@latest
2Run the gallery
cd source && go run ./examples/gallery
3Try a starter application
cd source && go run ./examples/desktop
Each starter application includes localization, preferences and packaging configuration.pkg.go.dev

Frequently asked questions

Short answers before you open the docs.

Ready to build with Onevra?

Explore the components, run the gallery, and shape the library with us.