carta
wscrl(3)

wscrl3

Scroll a curses window

Part of curs_scroll(3).

Usage

int scroll(WINDOW * win);

Overview

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

  • FreeBSD 16.0-CURRENT (2026-10-27) to FreeBSD 15.1-RELEASE: the text shown here
  • FreeBSD 15.0-RELEASE
  • FreeBSD 14.5-RELEASE
  • FreeBSD 14.4-RELEASE to FreeBSD 14.2-RELEASE
  • FreeBSD 14.1-RELEASE to FreeBSD 14.0-RELEASE
  • FreeBSD 13.5-RELEASE to FreeBSD 13.0-RELEASE
  • FreeBSD 12.4-RELEASE to FreeBSD 11.0-RELEASE
  • FreeBSD 10.4-RELEASE to FreeBSD 6.3-RELEASE
  • FreeBSD 6.2-RELEASE to FreeBSD 5.0-RELEASE
  • FreeBSD 4.11-RELEASE to FreeBSD 4.1-RELEASE
  • FreeBSD 4.0-RELEASE
  • FreeBSD 3.5.1-RELEASE to FreeBSD 2.2.2-RELEASE

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.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's man source.