---
name: "notcurses_stdplane"
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_stdplane"
---

# notcurses\_stdplane(3)

acquire the standard ncplane

## NAME

notcurses\_stdplane - acquire the standard ncplane

### SYNOPSIS

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

**struct ncplane\* notcurses\_stdplane(struct notcurses\*** *nc***);**

**const struct ncplane\* notcurses\_stdplane\_const(const struct** **notcurses\*** *nc***);**

**static inline struct ncplane\* notcurses\_stddim\_yx(struct notcurses\*** *nc***, unsigned\* restrict** *y***,** **unsigned\* restrict** *x***);**

**static inline const struct ncplane\* notcurses\_stddim\_yx\_const(const** **struct notcurses\*** *nc***, unsigned\* restrict** *y***, unsigned\* restrict** *x***);**

**int notcurses\_enter\_alternate\_screen(struct notcurses\*** *nc***);**

**int notcurses\_leave\_alternate\_screen(struct notcurses\*** *nc***);**

## DESCRIPTION

**notcurses\_stdplane** returns a handle to the standard ncplane for the context **nc**. The standard plane always exists, and is always the same size as the screen. It is an error to call **ncplane\_destroy(3)**, **ncplane\_resize(3)**, or **ncplane\_move(3)** on the standard plane, but it can be freely moved along the z-axis.

The standard plane's virtual cursor is initialized to its uppermost, leftmost cell unless **NCOPTION\_PRESERVE\_CURSOR** is provided (see **[notcurses\_init(3)](/notcurses_init/3.md)**), in which case it is placed wherever the terminal's real cursor was at startup.

**notcurses\_stddim\_yx** provides the same function, but also writes the dimensions of the standard plane (and thus the real drawable area) into any non-**NULL** parameters among **y** and **x**.

**notcurses\_stdplane\_const** allows a **const notcurses** to be safely used.

A resize event does not invalidate these references. They can be used until **[notcurses\_stop(3)](/notcurses_stop/3.md)** is called on the associated **nc**.

**notcurses\_enter\_alternate\_screen** and **notcurses\_leave\_alternate\_screen** only have meaning if the terminal implements the "alternate screen" via the **smcup** and **rmcup** **[terminfo(5)](/terminfo/5.md)** capabilities (see the discussion of **NCOPTION\_NO\_ALTERNATE\_SCREEN** in **[notcurses\_init(3)](/notcurses_init/3.md)**). If not currently using the alternate screen, and assuming it is supported, **notcurses\_enter\_alternate\_screen** will switch to the alternate screen. This redraws the contents, repositions the cursor, and usually makes scrollback unavailable. The standard plane will have scrolling disabled upon a move to the alternate plane.

## RETURN VALUES

**notcurses\_enter\_alternate\_screen** will return -1 if the alternate screen is unavailable. Both it and **notcurses\_leave\_alternate\_screen** will return -1 on an I/O failure.

Other functions cannot fail when provided a valid **struct** **notcurses**. They will always return a valid pointer to the standard plane.

## SEE ALSO

**[notcurses(3)](/notcurses/3.md)**, **[notcurses\_init(3)](/notcurses_init/3.md)**, **[notcurses\_plane(3)](/notcurses_plane/3.md)**, **[notcurses\_stop(3)](/notcurses_stop/3.md)**, **[terminfo(5)](/terminfo/5.md)**

## AUTHORS

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