Skip to content

core.ui.application

This module provides the main application container for the terminal UI system. You can inherit from application to implement your own terminal UI applications.

TIP

To use this module, you need to import it first: import("core.ui.application")

NOTE

The UI module is primarily used for xmake's internal xmake f --menu menu-based visual configuration. It provides basic UI components that can also be used by users to implement their own terminal UIs.

The application module uses inheritance. You create your own application instance and customize its behavior:

lua
import("core.ui.application")

local app = application()

function app:init()
    -- Your initialization code
end

application:new

  • Create a new application instance

Function Prototype

API

lua
local app = application()

Parameter Description

No parameters for constructor

Return Value

TypeDescription
applicationReturns a new application instance

Usage

Create an application instance that you can customize:

lua
import("core.ui.application")

local demo = application()

application:init

  • Initialize the application

Function Prototype

API

lua
application:init(name: <string>, argv?: <table>)

Parameter Description

ParameterDescription
nameRequired. Application name string
argvOptional. Command line arguments table

Return Value

No return value

Usage

Initialize your custom application. This is called automatically by run():

lua
function demo:init()
    application.init(self, "myapp")
    self:background_set("blue")
    
    -- Add your UI components here
    self:insert(self:main_dialog())
end

application:run

  • Run the application and start the event loop

Function Prototype

API

lua
application:run(...)

Parameter Description

ParameterDescription
...Optional. Additional arguments

Return Value

No return value

Usage

Start your application. This initializes the UI, calls init(), and starts the event loop:

lua
local demo = application()

function demo:init()
    application.init(self, "demo")
    self:background_set("blue")
    self:insert(self:main_dialog())
end

-- Start the application
demo:run()

application:background_set

  • Set the application background color

Function Prototype

API

lua
application:background_set(color: <string>)

Parameter Description

ParameterDescription
colorRequired. Color name (e.g., "blue", "red")

Return Value

No return value

Usage

Set the background color for your application:

lua
self:background_set("blue")

application:insert

  • Insert a view into the application

Function Prototype

API

lua
application:insert(view: <view>, opt?: <table>)

Parameter Description

ParameterDescription
viewRequired. View to insert
optOptional. Options table, supports: {centerx = true, centery = true}

Return Value

No return value

Usage

Add views to your application with optional positioning:

lua
-- Add a dialog
self:insert(self:main_dialog())

-- Add a centered dialog
self:insert(self:input_dialog(), {centerx = true, centery = true})

application:on_resize

  • Handle window resize events

Function Prototype

API

lua
application:on_resize()

Parameter Description

No parameters

Return Value

No return value

Usage

Override this method to handle resize events and update your UI layout:

lua
function demo:on_resize()
    self:main_dialog():bounds_set(rect{1, 1, self:width() - 1, self:height() - 1})
    self:center(self:input_dialog(), {centerx = true, centery = true})
    application.on_resize(self)
end

application:menubar

  • Get the application's menu bar

Function Prototype

API

lua
application:menubar()

Parameter Description

No parameters

Return Value

TypeDescription
menubarReturns the menu bar instance

Usage

Access the menu bar component:

lua
local menubar = app:menubar()

application:desktop

  • Get the application's desktop area

Function Prototype

API

lua
application:desktop()

Parameter Description

No parameters

Return Value

TypeDescription
desktopReturns the desktop instance

Usage

Access the desktop area for placing views:

lua
local desktop = app:desktop()

application:statusbar

  • Get the application's status bar

Function Prototype

API

lua
application:statusbar()

Parameter Description

No parameters

Return Value

TypeDescription
statusbarReturns the status bar instance

Usage

Access the status bar component:

lua
local statusbar = app:statusbar()
statusbar:text_set("Ready")