pisaiah/ui

My UI Widget library for V

158

stars

367

commits

C

primary language

Jul 30, 2026

updated

discord.gg/NruVtYBf5g
cross-platform-gui
fluentui
gui
linux
mac
ui
ui-library
v
vlang
vlang-library
wasm
widget
widget-toolkit
windows

README

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 DemoInternal FramesNavigation Pane
NotepadCalculatorClockVideo Player
See: NotepadCalculatorClockVideo Player (requires libmpv)

Used in

image

License

This project is licensed under MIT OR Boost.


Veasel (v mascot) on a Swing

Contributors

pisaiah

361 commits

spytheman

4 commits

islonely

1 commits

sean-dss

1 commits

pisaiah/ui

My UI Widget library for V

158

stars

367

commits

C

primary language

Jul 30, 2026

updated

discord.gg/NruVtYBf5g
cross-platform-gui
fluentui
gui
linux
mac
ui
ui-library
v
vlang
vlang-library
wasm
widget
widget-toolkit
windows

README

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 DemoInternal FramesNavigation Pane
NotepadCalculatorClockVideo Player
See: NotepadCalculatorClockVideo Player (requires libmpv)

Used in

image

License

This project is licensed under MIT OR Boost.


Veasel (v mascot) on a Swing

Contributors

pisaiah

361 commits

spytheman

4 commits

islonely

1 commits

sean-dss

1 commits

Languages

C

75.7%

V

24.3%