---
name: "is_term_resized"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/is_term_resized"
---

# is\_term\_resized(3)

manage the terminal dimensions understood by curses

## 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 application has not set up a handler for** *SIGWINCH* **when it initializes** *ncurses* **(by calling initscr(3X) or newterm(3X)),** **then** *ncurses* **establishes a** *SIGWINCH* **handler that notifies the library** **when a window-resizing event has occurred.** **The library checks for this notification**

- •

  **when reading input data,**

- •

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

- •

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

**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.**

### 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(3X)).**

**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(3X),** **doupdate(3X) and** **restartterm(3X),**

- •

  **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(3X) and**

- •

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

**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

**curs\_getch(3X),** **curs\_variables(3X),** **wresize(3X)**
