---
name: "notcurses_core"
section: "3"
platform: "linux"
package: "notcurses"
version: "3.0.17-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/notcurses_core"
---

# notcurses\_core(3)

minimal Notcurses linkage

## NAME

notcurses\_core - minimal Notcurses linkage

## SYNOPSIS

**#include \<notcurses/notcurses.h\>**

**-lnotcurses-core**

**struct notcurses\* notcurses\_core\_init(const notcurses\_options\*** *opts***, FILE\*** *fp***);**

**struct ncdirect\* ncdirect\_core\_init(const char\*** *termtype***, FILE\*** *fp***, uint64\_t** *flags***);**

## DESCRIPTION

If your binary has no use for the multimedia capabilities of Notcurses, consider linking directly to **libnotcurses-core** rather than **libnotcurses**. This ought greatly reduce the dependency burden of Notcurses.

If using **libnotcurses-core**, **notcurses\_core\_init** must be used in the place of **notcurses\_init**, and **ncdirect\_core\_init** must be used in the place of **ncdirect\_init**. Failure to do will usually result in an error during linking. At worst, you'll end up with the unnecessary dependencies in your binary after all.

## BUGS

This all ought be handled by the toolchain. It's stupid for users to have to think about this.

## NOTES

If Notcurses was built with **USE\_MULTIMEDIA=none**, **libnotcurses** will have no multimedia dependencies, and thus this won't save anything. It's still best to explicitly use **libnotcurses-core** when appropriate, to avoid picking up the dependency chain on systems where it *is* being used.

## RETURN VALUES

The same as **notcurses\_init** and **ncdirect\_init**.

## SEE ALSO

**[notcurses(3)](/notcurses/3.md)**, **[notcurses\_direct(3)](/notcurses_direct/3.md)**, **[notcurses\_init(3)](/notcurses_init/3.md)**, **[utf8(7)](/utf8/7.md)**

## AUTHORS

nick black ⟨nickblack@linux.com⟩\\c.
