Tui Widgets¶
Tui Widgets is high-level widget based toolkit for terminal applications.
Tui Widgets is designed to be flexible and similar to use to Qt graphical widgets. Its look and feel is similar to graphical applications or classic full screen terminal applications from the PC world of the 90s.
Features¶
works with the Qt event loop and object model
ready to use user interface elements (text entry, checkboxes, buttons, layout managers, menu etc)
overlapping window support
robust input handling
24-bit color, soft line breaks, explicit control of trailing whitespace
does not depend on correctly set $TERM or terminfo database
tagged paste
mostly utf-8 based, string width routines also handle utf-16 and utf-32
offscreen surfaces/layers
does not use global variables/singletons whenever possible and can handle multiple terminals in one process
permissively licensed: Boost Software License 1.0 (but Qt licensing is stricter)
Curent Status¶
Planned:
ABI stability is planned (but breaking changes are still happening)
Does not contain:
support for non utf-8 capable terminals
Minimal example¶
A “hello world”, with fixed widget positions and size:
See Getting started for full source.
Tui::ZWindow *win = new Tui::ZWindow("Hello World", this);
win->setGeometry({5, 3, 20, 10});
QObject::connect(new Tui::ZShortcut(Tui::ZKeySequence::forKey(Qt::Key_Escape),
this,
Qt::ApplicationShortcut),
&Tui::ZShortcut::activated,
this, &Root::quit);
Tui::ZButton *button = new Tui::ZButton(Tui::withMarkup, "<m>Q</m>uit", win);
QObject::connect(button, &Tui::ZButton::clicked, this, &Root::quit);
button->setGeometry({6, 7, 10, 1});
button->setFocus();
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
Tui::ZTerminal terminal;
Root root;
terminal.setMainWidget(&root);
return app.exec();
}
Support¶
- It’s known to work on
xterm
vte
rxvt-unicode
mintty
iTerm2
microsoft terminal
putty
konsole
linux
freebsd
and more.
Contents:
- Getting started
- Concepts
- Building Tui Widgets
- ZTerminal
- Startup
- Options
- Terminal connection options
- Shutdown
- Main Widget
- Viewport
- Terminal information
- Configuration
- Capabilities
- Behavior
- Introspection
- Observing application state
- Standalone usage
- Pause / Unpause operation
- Layout infrastructure
- ZTerminal
- Members
ZTerminal()
ZTerminal()
ZTerminal()
ZTerminal()
ZTerminal()
afterRendering()
setAutoDetectTimeoutMessage()
autoDetectTimeoutMessage()
beforeRendering()
isDefaultTerminalAvailable()
hasCapability()
terminalDetectionResultText()
terminalSelfReportedNameAndVersion()
currentLayoutGeneration()
setCursorColor()
setCursorPosition()
setCursorStyle()
dispatchKeyboardEvent()
dispatchPasteEvent()
doLayout()
focusChanged()
focusWidget()
forceRepaint()
grabCurrentImage()
grabCursorColor()
grabCursorPosition()
grabCursorStyle()
grabCursorVisibility()
height()
setTitle()
title()
setIconTitle()
iconTitle()
incompatibleTerminalDetected()
keyboardGrabber()
setMainWidget()
mainWidget()
painter()
isPaused()
pauseOperation()
unpauseOperation()
registerPendingKeySequenceCallbacks()
isLayoutPending()
requestLayout()
maybeRequestLayout()
resize()
terminalConnectionLost()
textMetrics()
update()
updateOutput()
updateOutputForceFullRepaint()
width()
translateKeyEvent()
- Nested Types
- ZWidget
- Size, Position and Visibility
- Layout and Margins
- Focus
- Terminal
- Usage of widgets
- Defining custom widgets
- ZWidget
- Members
ZWidget()
parentWidget()
setParent()
geometry()
setGeometry()
rect()
contentsRect()
isEnabled()
isLocallyEnabled()
setEnabled()
isVisible()
isLocallyVisible()
setVisible()
setStackingLayer()
stackingLayer()
raise()
lower()
stackUnder()
minimumSize()
setMinimumSize()
setMinimumSize()
maximumSize()
setMaximumSize()
setMaximumSize()
setFixedSize()
setFixedSize()
sizePolicyH()
setSizePolicyH()
sizePolicyV()
setSizePolicyV()
sizeHint()
minimumSizeHint()
effectiveSizeHint()
effectiveMinimumSize()
layoutArea()
layout()
setLayout()
showCursor()
cursorStyle()
setCursorStyle()
resetCursorColor()
setCursorColor()
terminal()
update()
updateGeometry()
setFocus()
setFocusPolicy()
focusPolicy()
setFocusMode()
focusMode()
setFocusOrder()
focusOrder()
contentsMargins()
setContentsMargins()
palette()
setPalette()
getColor()
paletteClass()
setPaletteClass()
addPaletteClass()
removePaletteClass()
grabKeyboard()
grabKeyboard()
releaseKeyboard()
isAncestorOf()
isEnabledTo()
isVisibleTo()
focus()
isInFocusPath()
mapFromTerminal()
mapToTerminal()
prevFocusable()
prevFocusable()
nextFocusable()
nextFocusable()
placeFocus()
placeFocus()
resolveSizeHintChain()
setCommandManager()
commandManager()
ensureCommandManager()
facet()
findFacet()
paintEvent()
keyEvent()
pasteEvent()
focusInEvent()
focusOutEvent()
resizeEvent()
moveEvent()
- Related Types
- Events
- ZPainter
ZPainter
- Members
translateAndClip()
translateAndClip()
writeWithColors()
writeWithColors()
writeWithColors()
writeWithColors()
writeWithColors()
writeWithColors()
writeWithColors()
writeWithAttributes()
writeWithAttributes()
writeWithAttributes()
writeWithAttributes()
writeWithAttributes()
writeWithAttributes()
writeWithAttributes()
clear()
clearWithChar()
clearRect()
clearRectWithChar()
setSoftwrapMarker()
clearSoftwrapMarker()
drawImage()
drawImageWithTiling()
setForeground()
setBackground()
setCursor()
setWidget()
textMetrics()
- ZCommon
Tui
- Aliases from Qt
CheckState
Unchecked
PartiallyChecked
Checked
KeyboardModifier
KeyboardModifiers
NoModifier
ShiftModifier
AltModifier
ControlModifier
KeypadModifier
Key
Key_0
Key_1
Key_2
Key_3
Key_4
Key_5
Key_6
Key_7
Key_8
Key_9
Key_Backspace
Key_Delete
Key_Down
Key_End
Key_Enter
Key_Escape
Key_F1
Key_F2
Key_F3
Key_F4
Key_F5
Key_F6
Key_F7
Key_F8
Key_F9
Key_F10
Key_F11
Key_F12
Key_Home
Key_Insert
Key_Left
Key_Menu
Key_Minus
Key_PageDown
Key_PageUp
Key_Period
Key_Plus
Key_Right
Key_Space
Key_Tab
Key_Up
Key_division
Key_multiply
Key_unknown
FocusReason
TabFocusReason
BacktabFocusReason
ActiveWindowFocusReason
ShortcutFocusReason
OtherFocusReason
FocusPolicy
NoFocus
StrongFocus
TabFocus
Alignment
AlignHorizontal_Mask
AlignLeft
AlignRight
AlignVertical_Mask
AlignTop
AlignBottom
AlignVCenter
AlignHCenter
ShortcutContext
WidgetShortcut
WindowShortcut
ApplicationShortcut
WidgetWithChildrenShortcut
Edges
TopEdge
LeftEdge
RightEdge
BottomEdge
- Private Types
- ZColor
TerminalColor
TerminalColor::black
TerminalColor::darkGray
TerminalColor::lightGray
TerminalColor::brightWhite
TerminalColor::blue
TerminalColor::green
TerminalColor::cyan
TerminalColor::red
TerminalColor::magenta
TerminalColor::yellow
TerminalColor::brightBlue
TerminalColor::brightGreen
TerminalColor::brightCyan
TerminalColor::brightRed
TerminalColor::brightMagenta
TerminalColor::brightYellow
ZColor
ZColor::ColorType
ZColor()
colorType()
red()
setRed()
green()
setGreen()
blue()
setBlue()
terminalColorIndexed()
terminalColor()
redOrGuess()
greenOrGuess()
blueOrGuess()
toHsv()
nativeValue()
defaultColor()
fromRgb()
fromTerminalColor()
fromTerminalColor()
fromTerminalColorIndexed()
fromHsv()
fromHsv()
fromHsvStrict()
fromHsvStrict()
- HSV
- Commands
- ZShortcut
- ZImage
- ZLayout
- ZPalette
- ZSymbol
- ZTextMetrics
ZTextMetrics
ZTextMetrics::ClusterSize
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::nextCluster()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::splitByColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInColumns()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTextMetrics::sizeInClusters()
ZTest
- ZTest
- Box Layouts
- ZTextLayout
ZTextLayout
ZTextLayout::ZTextLayout()
ZTextLayout::ZTextLayout()
ZTextLayout::CursorMode
ZTextLayout::Edge
ZTextLayout::text()
ZTextLayout::setText()
ZTextLayout::textOption()
ZTextLayout::setTextOption()
ZTextLayout::doLayout()
ZTextLayout::beginLayout()
ZTextLayout::endLayout()
ZTextLayout::createLine()
ZTextLayout::draw()
ZTextLayout::showCursor()
ZTextLayout::boundingRect()
ZTextLayout::lineCount()
ZTextLayout::maximumWidth()
ZTextLayout::lineAt()
ZTextLayout::lineForTextPosition()
ZTextLayout::previousCursorPosition()
ZTextLayout::nextCursorPosition()
ZTextLayout::isValidCursorPosition()
ZTextLineRef
ZTextLineRef::isValid()
ZTextLineRef::draw()
ZTextLineRef::cursorToX()
ZTextLineRef::cursorToX()
ZTextLineRef::xToCursor()
ZTextLineRef::setPosition()
ZTextLineRef::position()
ZTextLineRef::x()
ZTextLineRef::y()
ZTextLineRef::width()
ZTextLineRef::height()
ZTextLineRef::rect()
ZTextLineRef::lineNumber()
ZTextLineRef::textStart()
ZTextLineRef::textLength()
ZTextLineRef::setLineWidth()
- Widgets
- Misc
- Qt Logging