Description
FINAL CUT is a C++ class library and widget toolkit with full mouse support for creating a text-based user interface. The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple text windows on the screen.
The structure of the Qt framework was originally the inspiration for the C++ class design of FINAL CUT. It provides common controls like dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.
FINAL CUT alternatives and similar libraries
Based on the "GUI" category.
Alternatively, view FINAL CUT alternatives based on common mentions on social networks and blogs.
-
webview
Tiny cross-platform webview library for C/C++. Uses WebKit (GTK/Cocoa) and Edge WebView2 (Windows). -
libui
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. -
FTXUI
Features: - Functional style. Inspired by [1] and React - Simple and elegant syntax (in my opinion). - Support for UTF8 and fullwidth chars (โ ๆต่ฏ). - No dependencies. - Cross platform. Linux/mac (main target), Windows (experimental thanks to contributors), - WebAssembly. - Keyboard & mouse navigation. Operating systems: - linux emscripten - linux gcc - linux clang - windows msvc - mac clang -
SixtyFPS
DISCONTINUED. Slint is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript. [Moved to: https://github.com/slint-ui/slint] -
GacUI
GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. -
Turbo Vision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. -
SOUI
SOUIๆฏ็ฎๅไธบๆฐไธๅค็่ฝป้็บงๅฏๅฟซ้ๅผๅwindowๆก้ข็จๅบๅผๆบDirectUIๅบ.ๅ ถๅ่บซไธบDuiengine,ๆดๆฉๆๅๆฏๆบ่ชไบ้ๅฑฑๅซๅฃซๅผๆบ็ๆฌUIๅบBkwin.็ป่ฟๅคๅนดๆ็ปญๆดๆฐๆนๅพๆญคๅบ -
cuda-api-wrappers
Thin C++-flavored header-only wrappers for core CUDA APIs: Runtime, Driver, NVRTC, NVTX. -
xtd
Free open-source modern C++17 / C++20 framework to create console, GUI (forms like WinForms) and unit test applications and libraries on Microsoft Windows, Apple macOS and Linux. -
CTPG
Compile Time Parser Generator is a C++ single header library which takes a language description as a C++ code and turns it into a LR1 table parser with a deterministic finite automaton lexical analyzer, all in compile time. -
Brisk
Cross-platform C++20 GUI framework featuring MVVM architecture, reactive capabilities, and scalable, accelerated GPU rendering. -
ncurses
snapshots of ncurses - see https://invisible-island.net/personal/git-exports.html (no pull requests are accepted) -
fox-toolkit
Unofficial Zenotech specific mirror of fox-toolkit; please refer to upstream site for latest version -
NotificationManager
A thread-safe, easy-to-use, utility for sending and receiving notifications. It allows you to decouple different modules of your application.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of FINAL CUT or a related project?
README
[FINAL CUT](misc/logo/svg/finalcut-logo.svg)
Library for creating terminal applications with text-based widgets
FINAL CUT is a C++ class library and widget toolkit with full [mouse](doc/mouse-control.md#title-bar-actions-on-mouse-clicks) support for creating a text-based user interface. The library supports the programmer to develop an application for the text console. It allows the simultaneous handling of multiple text windows on the screen.
The structure of the Qt framework was originally the inspiration for the C++ class design of FINAL CUT. It provides common controls like dialog boxes, push buttons, check boxes, radio buttons, input lines, list boxes, status bars and so on.
Building and code analysis
Installation
> git clone https://github.com/gansm/finalcut.git
> cd finalcut
> autoreconf --install --force
> ./configure --prefix=/usr
> make
> su -c "make install"
Supported platforms
- Linux
- FreeBSD
- NetBSD
- OpenBSD
- macOS
- Cygwin
- GNU Hurd
- Solaris
Documentation
See the [first steps documentation](doc/first-steps.md#first-steps-with-the-final-cut-widget-toolkit) for information on how to use the library.
Frequently Asked Questions
For general questions about FINAL CUT, likely the answer is already included in the [FAQ](doc/faq.md#frequently-asked-questions).
Screenshots
The FFileDialog widget with incremental file name search:
[FFileDialog](doc/fileopen-dialog.png)
The FINAL CUT FProgressbar widget:
[FProgressbar](doc/progress-bar.png)
Scrollable text in the FTextView widget:
[FTextView](doc/textview.png)
The Mandelbrot set example:
[Mandelbrot set](doc/Mandelbrot.png)
FINAL CUT newfont
A [graphical text font](final/font/) for X11 and the Linux console.
[ui example in newfont mode](doc/newfont1.png)
Newfont drive symbols:
[drive symbols](doc/newfont2.png)
The calculator example in newfont mode:
[calculator](doc/calculator.png)
Benchmark
Here you can find a test for [measuring the character speed](doc/benchmark.md#benchmark) in the terminal.
Virtual terminal
FINAL CUT uses a virtual terminal to print character via an update method on the screen. It provides (as an overlying layer) virtual windows for the realization of window movements. The update methods only transfer differences to the virtual terminal or physical screen.
print(...) printf(...) โ โ โโโโโโโโโโโโโโโโโโโโโโโโโ[ vterm ]โโโโโโโโโโโโโโโโโโโโโโโโโ โ โcreateVTerm() โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ restoreVTerm(x,y,w,h) โ โ โ โโโโโโโโโจโโโโ[ vwin ]โโโโโโโโโโโโโ โ โ โcreateArea(area) โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โโโโผโโโโโโโโโบ putArea(area) โโโโโบ โ โ โ โ โ putArea(x,y,area) โโโโโบ โ โ โ โ โ โโโโโ getArea(x,y,area) โ โ โ โ โ โ โ โ โ โ โ resizeArea(area)โ โ โโโโโโโโโฅโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ โ โ โ resizeVTerm()โ โโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ putVTerm() โโโโโโโโโโโโโโโโโโโโบ updateTerminalLine(y) updateTerminal() โ โผ โโโโโโโโโโโโโโโโโ โ output_buffer โ โโโโโโโโโโโโโโโโโ โ โ flushOutputBuffer() โ and putchar(char) โผ โโโโโโโโโโโโโโโโโ โ โ โ screen โ โ โโโโโโโโโโโโโ โ โ real terminal โ โ โ โโโโโโโโโโโโโโโโโ โโโ โโโโโโโโโ
Class digramm
โโโโโโโโโโโโโโ1 โ FTermLinux โ------โ โโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโ1 : โ FTermFreeBSD โ------โ โโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโ1 : โ FTermOpenBSD โ------โ โโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโโโ1 : โ FTermDetection โ------โ โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโโโโโโ1 : โ FTermcapQuirks โ------โ โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ1 : โโโโโโค FKeyEvent โ โ FTermXTerminal โ------โ โ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ1 : โโโโโโค FMouseEvent โ โ FTermcap โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ1 : โโโโโโค FWheelEvent โ โ FTermios โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ1 : โโโโโโค FFocusEvent โ โ FColorPalette โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FAccelEvent โ โ FOptiMove โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FResizeEvent โ โ FOptiAttr โ------โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ1 : โโโโโโค FShowEvent โ โ FKeyboard โ------โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ1 : โโโโโโค FHideEvent โ โ FMouseControl โ------โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ1 : โโโโโโค FCloseEvent โ โ FSystem โ------โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ* : โโโโโโค FTimerEvent โ โ FString โ---โ : โ โโโโโโโโโโโโโโโ โโโโโโโโโโโ : : โ โโโโโโโโโโโโโโ1 1โโโโโโโโโ โโโโโโโโโโโโโโโโโ* : : โโโโโโค FUserEvent โ------โค FData โ โ FStringStream โ---โ : โ โโโโโโโโโโโโโโ โโโโโโโโโ โโโโโโโโโโโโโโโโโ : : โ โโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโ* : : โ โ FLog โโโโโค FLogger โ โ FPoint โ---โ : โ โโโโฌโโโโ โโโโโโโโโโโ โโโโโโโโโโ : : โ :1 โโโโโโโโโ* : : โ โโโโดโโโโโโโโโโโโ โ FRect โ---โ : โ โโโโโโค FApplication โ โโโโโโโโโ : : โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโ* : : โ โ โโโโโโโโโโ โ FSize โ---โ : โ โโโโโโค FLabel โ โโโโโโโโโ : : โ โ โโโโโโโโโโ :1 :1 โ โ โโโโโโโโโโโโโ โโโโโดโโโดโ โ โโโโโโค FLineEdit โ โ FTerm โ โ โ โโโโโโโโโโโโโ โโโโโฌโโโโ โ โ โโโโโโโโโโโโ :1 โ โโโโโโค FSpinBox โ โโโโโโโโโโโ โโโโโโโโดโโโโโโโ โ โ โโโโโโโโโโโโ โ FOutput โโโโโค FTermOutput โ โ โ โโโโโโโโโโโ โโโโโโฌโโโโโ โโโโโโโโโโโโโโโ โ โโโโโโค FButton โ : โโโโโโโโโโ โ โ โโโโโโโโโโโ :1 โ FEvent โโโโโ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโดโโโโโ โโโโโโฌโโโโ โโโโโโค FButtonGroup โ โโโโค FRadioButton โ โ FVTerm โโโโโ :1 โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโ โ โโโโโโดโโโโโ โ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โโโโโโค FWidget โโโโโโโโผโโโโโค FToggleButton โโโโผโโโค FCheckBox โ โโโโโโโโโโโ โ โโโโโโฌโโโโโ โ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โ FObject โโโโโ :1 โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโ โโโโโโฌโโโโโ โโโโโโโโดโโโโโโโโโ โโโโโโค FProgressbar โ โโโโค FSwitch โ โผ โ FWidgetColors โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโโโดโโโโโ โโโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโโโ โ FTimer โ โโโโโโค FScrollbar โ โโโโโโโโโโ โ โโโโโโโโโโโโโโ โ โโโโโโโโโโโโโ โโโโโโค FTextView โ โ โโโโโโโโโโโโโ โ โโโโโโโโโโโโโ1 1โโโโโโโโโโโโโโโโโโโโ โโโโโโค FComboBox โ------โค FDropDownListBox โ โ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ1 โ โโโโโโโโโโโโ1 โโโโโโโโโโโโโโโโ1 โ FVTermBuffer โ-------------------โโโโโโค FListBox โ-------โค FListBoxItem โ--โ โโโโโโโโโโโโโโโโ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโ : โ 1โโโโโโโโโโโโโ1 *โโโโโโโโโโโโโโโโโ : โโโโโโค FListView โ------โค FListViewItem โ : โ โโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโ : โ โโโโโโโโโโโโโโโ :1 : โโโโโโค FScrollView โ โโโโโดโโโโ1 : โ โโโโโโโโโโโโโโโ โ FData โ----โ โ โโโโโโโโโ โ โโโโโโโโโโโโโโ1 *โโโโโโโโโโโโโโ โ โโโโค FStatusBar โ-----โค FStatusKey โ โ โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ โ โ โผ โโโโโโโโโโโโโโโ โโโโโดโโดโโโโ โโโโโโโโโโโ โโโโค FFileDialog โ โ FWindow โโโโค FDialog โโโโโค โโโโโโโโโโโโโโโ โโโโฌโโโฌโโโโ โโโโโโโโโโโ โ โโโโโโโโโโโโโโโ โฒ โฒ โโโโค FMessageBox โ โ โ โโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ โโโโโโโโค FToolTip โโโโค FBusyIndicator โ โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โ โโโโโค FMenuBar โ โโโโโโโโโโโโโ โโโโโโโโค โโโโโโโโโโโโ โ FMenuList โโโโโโโโโโโโโค โโโโโโโโโ โโโโโโฌโโโโโโโ โโโโโค FMenu โโโโโ :1 โโโโโโโโโ โ : โโโโโโโโโโโโโโโโโโโ โ : โ FDialogListMenu โโโโโ : โโโโโโโโโโโโโโโโโโโ โ--------------------------------โ : โโโโโโโโโโโโโโโโโโ* : โโโโโโดโโโโโโ โโโโค FCheckMenuItem โ---โ โFMenuItem โโโโค โโโโโโโโโโโโโโโโโโ : โโโโโโโโโโโโ โ โโโโโโโโโโโโโโโโโโ* : โโโโค FRadioMenuItem โ---โ โโโโโโโโโโโโโโโโโโ
Please send bug reports to
https://github.com/gansm/finalcut/issues
License
Licensed under the [GNU Lesser General Public License, Version 3.0](LICENSE)
*Note that all licence references and agreements mentioned in the FINAL CUT README section above
are relevant to that project's source code only.