-
Notifications
You must be signed in to change notification settings - Fork 58
Frequently Asked Questions
FINAL CUT is a C++ class library and widget toolkit featuring full mouse support for creating text-based user interfaces (TUI). It is built on the Termcap library and includes its own cursor optimization and window management.
Most Unix TUIs are either difficult to use or limited in functionality. I developed FINAL CUT to solve these issues. My goal was to make it more visually impressive than its competitors.
It dates back to a text-based file manager I developed for DOS between 1991 and 1996. Built with Borland Pascal, "The Final Cut" was designed to outshine any other interface available at the time; it even included the calculator example still found in the library today.
When I started learning object-oriented programming with C++ in the late 90s, I realized that my original code had some design flaws. This inspired me to rewrite the project from scratch as an open-source application. After switching from DOS to Linux, I started developing core widgets, such as FDialog, FButton, and FString, for the Linux console. After taking a long break starting in 2000, I returned to the project in 2012 when I needed a polished terminal interface for a data structure project. FINAL CUT eventually evolved into the full widget toolkit it is today.
Supported platforms include Linux, FreeBSD, NetBSD, OpenBSD, macOS, Cygwin (on MS Windows), GNU Hurd, and Oracle Solaris.
A C++ compiler is required (e.g., GCC or Clang).
You need three things:
-
A C++ compiler (GCC or Clang)
For Debian-based distributions the following packages are required:
- g++
or - clang
- g++
-
The GNU build tools
For Debian-based distributions the following packages are required:
- autoconf
- autoconf-archive
- automake
- autotools-dev
- libtool
- make
- pkg-config
-
Development packages for the following libraries:
- C and C++ standard library
- Termcap library (usually part of the curses package)
- General Purpose Mouse (GPM) library (optional, for
mouse support on the Linux console)
For Debian-based distributions the following packages are required:
- libglib2.0-dev
- libgpm-dev
- libncurses-dev
./configure --without-gpm- Standard xterm mouse tracking (limited to 223 rows/columns)
- Xterm SGR mouse tracking
- URXVT mouse tracking
- General Purpose Mouse (gpm) on the Linux console
You require the unit testing framework CppUnit.
-
Ensure the TERM environment variable is set to the correct terminal name.
-
Run
msgcat --color=testto verify that your terminal supports colors. -
If characters appear misaligned, try disabling cursor optimization using the --no-optimized-cursor command line argument.
-
If terminal detection fails, you can bypass it with --no-terminal-detection.
-
If redefining the color palette causes issues, disable color mapping with --no-color-change.
Press Ctrl-L to clear and redraw the entire terminal screen. This is useful if a background process has corrupted the display.
How to disable mouse tracking and the non-scrollable alternate screen buffer in the GNU Debugger (GDB)
If you are using an xterm-compatible terminal, you can disable mouse tracking and re-enable the scroll buffer by resetting the terminal settings. Run the following command within the GNU Debugger:
(gdb) printf "%s\n", "\033c\033]104\007"