I'm aware there exists stty
, which allows to set number of rows in a virtual console, such as tty1. However, this does not seem to work with gnome-terminal or xterm. The question therefore is, how would I limit number of rows in a terminal emulator regardless of the window size? In other words, if with stty rows 20
in tty1 I can see output starting to roll up to 20th row (instead of default 34 on my machine), how would I achieve same thing with a terminal emulator?

- 76,765

- 16,527
-
relevant: http://askubuntu.com/questions/4371/change-default-width-of-gnome-terminal-and-terminator-windows and https://help.gnome.org/users/gnome-terminal/stable/app-terminal-sizes.html.en – Sebastian Sep 25 '14 at 07:41
1 Answers
@sebastian pointed to these as relevant, but they address only part of the problem:
Some of the discussion here is more relevant, but still not helpful:
- Change the number of rows and columns in the TTY [duplicate]
- How to change font-size, number of rows / columns on a terminal
When you use stty
like this
stty rows 20
you are telling the operating system that your terminal has 20 rows. That may be correct, but if it is not you will see unexpected behavior. With most terminals, if you have something with 25 real lines and tell the system that you have only 20 lines, applications will continue to use the remaining 5 lines.
Linux is unusual here: you can reduce the number of lines shown in the virtual console with that stty
command (which makes an interesting effect with a virtual machine). Linux initializes the console to a mode which supports a given number of lines and columns. The stty
command tells the console I/O driver to use less of it. A similar command to (attempt to) increase the size beyond the initialized mode limits fails.
The common feature with the first set of links is that there is a preferences dialog in some terminals which lets you select an initial window size. That is (almost) the same as the Linux initialization of the mode for the terminal. But:
- there is no mention of a method for changing the usual window size (within the initial limits), and
- there is no mention of a method to ensure that the window size limits remain the same.
The other links are even less relevant, since they are mainly a discussion (some details wrong...) of how to initialize the Linux console mode.
Back to the missing pieces:
xterm has a utility
resize
which (for many terminals) can change the window size. If you typeresize -s 20 80
then xterm (and gnome-terminal) will change their window to 20 lines (and 80 columns). Depending on how xterm is compiled, you may have to select the Allow Window Ops menu entry (since the feature is considered a vulnerability by some).
- preventing your window from being manually resized is harder. If you do not do this, your 20-line resizing is lost by the first time someone (accidentally) resizes the window.
Many window managers allow you to customize individual windows, removing the resize handles. Here are a few links discussing that topic:
- Disable the 'Resize Window Grippers' in Ubuntu 11.04 Natty Narwhal
- Getting rid of self-resizing windows in Ubuntu Linux 12.04
- Prevent GNOME from expanding windows
For setting the initial size of an xterm window, you would use either the -geometry
option or the related geometry
resource. That uses the X Toolkit, whose settings are described in the X(7) manual page. The section for geometry specification is a good place to continue reading.

- 76,765
-
I'm trying to find documentation on XTerm, and it's not easy. For example, I prefer 25 rows by 80 columns as the default. It's easy enough to Allow Window Ops and run the resize. But how can I configure .Xresources or /etc/X11/app-defaults/Xterm to make this happen from the get-go? – Adrian Keister Sep 29 '18 at 15:08