Skip to content
Nim wrapper for BearLibTerminal
C++ Nim Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Move the whole library into one file Oct 14, 2018
LICENSE Add missing files to git Oct 14, 2018


This is a port of BearLibTerminal to Nim.


  1. Download the shared library binary from the BearLibTerminal web site.
  2. nimble install bearlibterminal
  3. Make sure the shared library is somewhere it can be found. For development, this would typically be the working directory of your program when it runs.


All functions are identical to the C versions, except:

  • int is aliased to BLInt
  • uint32 is aliased to BLColor
  • x, y, w, h is passed as a single BLRect
  • x, y is passed as a single BLPoint
  • w, h is passed as a single BLSize
  • Return values of TK_ON/TK_OFF are converted to bool
  • Functions requiring mutable pointers for multiple return values are wrapped to return appropriate types (string, BLSize)

The library also includes some bonus functions to save you some unsafe bit casts:

proc terminalGetCurrentLayer*(): BLInt = terminalState(TK_LAYER)
proc terminalGetCurrentColor*(): BLColor = cast[BLColor](terminalState(TK_COLOR))
proc terminalGetCurrentBackgroundColor*(): BLColor = cast[BLColor](terminalState(TK_BKCOLOR))
proc terminalGetIsCompositionEnabled*(): bool = terminalCheck(TK_COMPOSITION)
You can’t perform that action at this time.