A4 is a dynamic terminal manager and multiplexer. All the layouts are tiling and are dynamic, so a4 automatically adjusts when windows are created and exited. Layout styles can be changed on the fly to suit the changing needs of your work. Terminal color schemes can also dynamically change to help you identify and keep track of the different machines and accounts you're connected to.

A4 has many features that make it ideal for people who keep many terminal windows open, login to several different machines, possibly using several different accounts. It is designed to get out of your way, to manage the display of your terminal windows for you, and to make you more efficient at performing system support, software development, and any other work in terminals.

A4 is a partial rewrite of dvtm, which in turn is a text-based implementation of dwm. It is written in C and is currently about 2800 lines of code.

Parts of the screen

parts of the screen
       tag   layout  key
      names  symbol combo           status text
        ╱      ╱    ╱                   ╱         status bar
    ┌─┬─┬─┬─┬───────────────────────────────────┐╱
    │1│2│3│4│ ├─ ^Gv             YYYY-MM-DD | a4│
    ├─┴─┴─┴─┴─────────────┬─────────────────────┤
    ├─────────────────────┼─────────────────────┤╲
    │                     │                     │ title bars
    │                     │      terminal       │
    │                     │       window        │
    │      terminal       │                     │
    │       window        ├─────────────────────┤
    │                     ├─────────────────────┤╲
    │                     │                     │ title bar
    │                    ╱│      terminal       │
    │          frame line │       window        │
    │                     │                     │
    ├──────────────┬──────┴──────┬──────────────┤
    └──────────────┴─────────────┴──────────────┘╲title bars of
                                                  minimized windows

Layouts

        zoom_left         zoom_right          zoom_top         zoom_bottom
    ┌───────┬───────┐  ┌───────┬───────┐  ┌───────────────┐  ┌────┬────┬─────┐
    │ a4    │       │  │       │ a4    │  │ a4            │  │    │    │     │
    │       ├───────┤  ├───────┤       │  │               │  │    │    │     │
    │       │       │  │       │       │  ├────┬────┬─────┤  ├────┴────┴─────┤
    │       ├───────┤  ├───────┤       │  │    │    │     │  │ a4            │
    │       │       │  │       │       │  │    │    │     │  │               │
    └───────┴───────┘  └───────┴───────┘  └────┴────┴─────┘  └───────────────┘
    ┌───────────────┐  ┌───────┬───────┐  ┌───────────────┐  ┌────┬────┬─────┐
    │ a4            │  │ a4    │       │  │ a4            │  │ a4 │    │     │
    │               │  │       │       │  ├───────────────┤  │    │    │     │
    │               │  ├───────┼───────┤  │               │  │    │    │     │
    │               │  │       │       │  ├───────────────┤  │    │    │     │
    │               │  │       │       │  │               │  │    │    │     │
    └───────────────┘  └───────┴───────┘  └───────────────┘  └────┴────┴─────┘
       fullscreen            grid               rows             columns

All window layouts are dynamic; a4 is a terminal window manager as well as a terminal window multiplexer. There are four layouts that have a zoom area. Each of these layouts divides the screen into two sections, one for the zoomed window(s) and the other for a stack of the rest of the terminals. The default is to have just one window in the zoom area ( zoomnum) and for that area to take up 50% of the screen ( zoomsize). These defaults can be changed in the configuration file, and can also be changed on the fly while the program is running. The name of each of these layouts indicates the location of the zoomed window area: zoom_left, zoom_right, zoom_top, and zoom_bottom.

The fullscreen layout does just what it says and takes the full screen to display a single window at a time. The grid layout displays all windows in a grid of rows and columns, while rows layout displays them all as full-width rows, and columns layout displays them all as full-height columns.

    ┌─────────┬─────┐
    │ a4      │     │
    │         ├─────┤ zoom_left layout
    ├─────────┤     │ zoomnum  = 2
    │         ├─────┤ zoomsize = 60%
    │         │     │
    └─────────┴─────┘

Some Technical Details

While a4 is similar to dvtm, it has some important differences. One of the notable differences is that a4 has a configuration text file that may be edited to your liking, so you don't need to recompile the software to customize the settings. This is implemented using the inih package.

Another notable difference is providing support for 24-bit truecolor. Depending on the underlying terminal emulator that you're running a4 on, you may need to set the environment variable COLORTERM. Setting it to either truecolor or 24bit will force a4 to enable this support. A4 replaced the ncurses back end with libtickit for text drawing and keyboard and mouse input processing. In addition, terminal processing is performed using the libvterm library.

To do

Resources

A size illustration2

https://waxandwane.org