README.md

March 13, 2026 ยท View on GitHub

iUI

0.29 GitHub vlang

Cross-platform GUI library for V. Inspired by the syntax of Java's Swing/FX & Fluent/WinUI3 Style.

Example: (examples/demo/)

Example

fn main() {
	mut window := ui.Window.new(
		title: 'My App'
		width: 640
		height: 480
	)

	// Create Button
	mut btn := ui.Button.new(
		text:     'My Button'
		on_click: on_click_event
	)

	// Add Button to Window & Run
	window.add_child(btn)
	window.gg.run()
}

fn on_click_event(e &ui.MouseEvent) {
	println('Button clicked!')
}

Install

Install via VPM:

v install https://github.com/pisaiah/ui

then

import iui as ui

Components, Containers, & Layouts

ComponentsContainersPanel Layouts
ButtonWindowFlow Layout
CheckboxPanelBorder Layout
HyperlinkTabboxBox Layout
ImageModalGrid Layout
InternalFramePageCard Layout
LabelButtonGroup
MenubarScrollView
MenuItemSplitview
NavPaneItemTitleGroup
ProgressBarPopup
SelectboxDesktopPane
SliderNavPane
Switch
Textbox
TextField
Treeview
  • Components are the elements of the UI (buttons, inputs, etc).
  • Containers are components that are designed to contain other components (known as children).
  • Layouts define how the Panel container positions it's children.

More details about Layout: A Visual Guide to Layout Managers - docs.oracle.com

Themes

Light:
- Default, Minty, Ocean, Seven.
Dark:
- Dark (with Blue/Red/Green/or RGB Accent), Seven Dark.

Included Examples

BorderLayout DemoInternal FramesNavigation Pane
Border Layout Demo Internal Frames Navigation Pane
NotepadCalculatorClockVideo Player
See: Notepad Calculator Clock Video Player (requires libmpv)
Mines(Tic Tac Toe)^2Snake
Code: 1-Minesweeper
Demo: Play online (via WASM)
2-Tic-Tac-Toe-Squared
Play online (WASM)
3-Snake

Used in

image

License

This project is licensed under MIT OR Boost.


Veasel (v mascot) on a Swing