---
name: "is_term_resized"
section: "3ncurses"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/resizeterm/3ncurses"
---

# is\_term\_resized(3ncurses)

manage the terminal dimensions understood by curses

Part of [resizeterm(3ncurses)](/resizeterm/3ncurses.md).

## NAME

**is\_term\_resized**, **resize\_term**, **resizeterm** - manage the terminal dimensions understood by *curses*

## SYNOPSIS

```
#include <curses.h>
```

**bool is\_term\_resized(int** *lines***, int** *columns***);** **int resize\_term(int** *lines***, int** *columns***);** **int resizeterm(int** *lines***, int** *columns***);**

## DESCRIPTION

**This is an extension to the** *curses* **library.** **It provides callers with a hook into the** *ncurses* **data to resize** **windows,** **primarily for use by programs running in an X Window terminal (e.g., xterm)** **when the terminal's screen size is changed by the user:**

- •

  *curses* **windows cannot extend outside the screen.** **If the terminal is shrunk,** *curses* **windows must be shrunk to fit.**

- •

  **If the terminal is stretched,** **rows and/or columns can be added to existing windows.** **The added cells should match the current attributes of the windows.**

**If the calling program has not set up a handler for SIGWINCH** **when it initializes** *ncurses* **(e.g., using initscr(3NCURSES) or newterm(3NCURSES)),** **then** *ncurses* **sets a handler for SIGWINCH which notifies** **the library when a window-size event has occurred.** **The library checks for this notification**

- •

  **when reading input data,**

- •

  **when implicitly resuming program mode** **(e.g., between endwin(3NCURSES) and wrefresh(3NCURSES)),** **and**

- •

  **when explicitly resuming program mode in restartterm(3NCURSES).**

**When the library has found that the terminal's window-size has** **changed, it calls resizeterm to update its data structures.**

**An application which establishes its own SIGWINCH handler** **can call resizeterm, but in that case, the library will not** **see SIGWINCH, and proper layout will rely upon the application.**

## FUNCTIONS

### resizeterm

**The function resizeterm resizes the standard and current windows** **(i.e., stdscr and curscr)** **to the specified dimensions, and adjusts other bookkeeping data used by** **the** *ncurses* **library that record the window dimensions** **such as the LINES and COLS variables.**

### resize\_term

**Most of the work for resizeterm is** **done by the inner function resize\_term.** **The outer function resizeterm adds bookkeeping** **for the SIGWINCH handler,** **as well as repainting the soft-key area (see slk\_touch(3NCURSES)).**

**The resize\_term function attempts to resize all windows.** **This helps with simple applications.** **However:**

- •

  **It is not possible to automatically resize pads.**

- •

  **Applications which have complicated layouts should check for** **KEY\_RESIZE returned from wgetch,** **and adjust their layout, e.g., using wresize and mvwin,** **or by recreating the windows.**

**When resizing windows, resize\_term recursively adjusts subwindows,** **keeping them within the updated parent window's limits.** **If a top-level window happens to extend to the screen's limits,** **then on resizing the window, resize\_term will keep the window** **extending to the corresponding limit, regardless of whether the** **screen has shrunk or grown.**

### is\_term\_resized

**A support function is\_term\_resized is provided so that applications** **can check if the resize\_term function would modify** **the window structures.** **It returns TRUE if the windows would be modified,** **and FALSE otherwise.**

## RETURN VALUE

**Except as noted, these functions return** **the integer ERR upon failure and OK on success.** **They will fail if either of the dimensions are less than or equal to zero,** **or if an error occurs while (re)allocating memory for the windows.**

## NOTES

**While these functions are intended to be used to support a signal handler** **(i.e., for SIGWINCH), care should be taken to avoid invoking them in a** **context where malloc or realloc may have been interrupted,** **since it uses those functions.**

**If** *ncurses* **is configured to supply its own SIGWINCH** **handler,**

- •

  **on receipt of a SIGWINCH, the handler sets a flag**

- •

  **which is tested in** **wgetch(3NCURSES),** **doupdate(3NCURSES) and** **restartterm(3NCURSES),**

- •

  **in turn, calling the resizeterm function,**

- •

  **which ungetch's a KEY\_RESIZE which** **will be read on the next call to wgetch.**

-

  **The KEY\_RESIZE alerts an application that the screen size has changed,** **and that it should repaint special features such as pads that cannot** **be done automatically.**

-

  **Calling resizeterm or resize\_term** **directly from a signal handler is unsafe.** **This indirect method is used to provide a safe way to resize the** *ncurses* **data structures.**

**If the environment variables** *LINES* **or** *COLUMNS* **are set,** **this overrides the library's use of the window size obtained from** **the operating system.** **Thus, even if a SIGWINCH is received,** **no screen size change may be recorded.**

## PORTABILITY

**It is possible to resize the screen with SVr4** *curses***,** **by**

- •

  **exiting** *curses* **with endwin(3NCURSES) and**

- •

  **resuming using refresh(3NCURSES).**

**Doing that clears the screen and is visually distracting.**

*ncurses* **introduced this extension in mid-1995.** **NetBSD** *curses* **adopted it in 2001 and** *PDCurses* **in 2003.**

## AUTHORS

**Thomas Dickey (from an equivalent function written in 1988 for BSD** *curses***)**

## SEE ALSO

**getch(3NCURSES),** **curses\_variables(3NCURSES),** **wresize(3NCURSES)**
