---
name: "curs_scroll"
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/curs_scroll"
---

# curs\_scroll(3)

scroll a curses window

## NAME

**scroll**, **scrl**, **wscrl** - scroll a *curses* window

## SYNOPSIS

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

**int scroll(WINDOW \*** *win***);**

**int scrl(int** *n***);** **int wscrl(WINDOW \*** *win***, int** *n***);**

## DESCRIPTION

**scroll** **scrolls the given window up one line.** **That is,** **every visible line we might number** *i* **becomes line** *i*-1. **wscrl** **and** **scrl** **scroll the specified window or** **stdscr**, **respectively,** **up or down per the sign of** *n*.

- •

  **For positive** *n*, **line** *i*+*n* **becomes** *i* **(scrolling up);**

- •

  **for negative** *n*, **line** *i*-*n* **becomes** *i* **(scrolling down).**

**A line that scrolls beyond the window boundaries disappears;** *curses* **populates a new one emerging at the opposite boundary** **with the background character;** **see bkgd(3X)** **(wide-character API users: bkgrnd(3X)).** **As an optimization,** **if the scrolling region of the window is the entire screen,** **the physical screen may be scrolled at the same time;** **see curscr(3X).**

**The cursor does not move.** **These functions perform no operation unless scrolling is enabled for the** **window via scrollok(3X).**

## RETURN VALUE

**These functions return** **ERR** **upon failure and** **OK** **upon success.**

**In** *ncurses*, **they return** **ERR** **if**

- •

  **the** *curses* **screen has not been initialized,**

- •

  **(for functions taking a** *WINDOW* **pointer argument)** *win* **is a null pointer,** **or**

- •

  **scrolling is not enabled in the window** **(as by scrollok(3X)).**

## NOTES

**scroll** **and** **scrl** **may be implemented as macros.**

**Unusually,** **there is no** **wscroll** **function;** **scroll** **behaves as one would expect** **wscroll** **to,** **accepting a** *WINDOW* **pointer argument.**

## PORTABILITY

**X/Open Curses Issue 4 describes these functions.** **It specifies no error conditions for them.**

**SVr4 describes a successful return value only as** **“an integer value other than** *ERR*”.

**SVr4 indicates that the optimization of physically scrolling immediately** **if the scroll region is the entire screen “is” performed,** **not “may be” performed.** *ncurses* **deliberately does not guarantee that this occurs,** **to leave open the possibility of better optimization of multiple scroll** **actions on the next update.**

**Neither SVr4** *curses* **nor X/Open Curses specify whether these functions zero the attributes or** **color pair identifier of the background character.** **In** *ncurses*, **they do not.**

## HISTORY

**4BSD (1980)** **introduced** *scroll*, **defining it as a function.**

**SVr3.1 (1987)** **added** *scrl* **and** *wscrl*, **redefining** *scroll* **as a macro wrapping the latter.**

## SEE ALSO

**curses(3X),** **curs\_outopts(3X)**
