The head0 user-space virtual terminal

# The `head0` user-space virtual terminal

One user-space virtual terminal is supplied as a pre-packaged suite of connected service bundles in several layers:

- a suite of `terminal-emulator@vcN` service bundles running `console-terminal-emulator` to provide terminal emulation to the TUI login sessions, attached to their individual pseudo-terminals and presenting themselves as the several `/run/dev/vcN` user-space virtual terminals

- a suite of `ttylogin@vcN` service bundles providing TUI login services on those pseudo-terminals

- a `console-multiplexor@head0` service bundle running `console-multiplexor` to multiplex among the lower `vcN` virtual terminals and presenting itself as the `/run/dev/head0mux` user-space virtual terminal

- a `console-input-method@head0` service bundle running `console-input-method` to layer an input method on top of the multiplexor and presenting itself as the `/run/dev/head0` user-space virtual terminal

The `head0` virtual terminal is realized onto physical devices using several service bundles:

- Either:

  - a `console-fb-realizer@fbN` service bundle running `console-fb-realizer` to realize the overall combination at `/run/dev/head0` onto the `/dev/fbN` framebuffer device; or

  - a `console-kvt-realizer@ttyvN` service bundle running `console-kvt-realizer` to realize the overall combination at `/run/dev/head0` onto the `/dev/ttyvN` kernel virtual terminal

- a `console-ugen-hid-realizer@ugenN.M` service bundle (auto-generated and auto-started by the Plug and Play manager) running `console-ugen-hid-realizer` to realize the overall combination at `/run/dev/head0` onto some USB HID device

The realizers all use global (i.e. not private to individual realizer services) user-space virtual terminal configuration, so `kbdmaps`, `fonts`, `keyboards-aggregate`, `mice-aggregate`, and `vcs` in their service directories are all symbolic links to subdirectories of the same names under `/etc/system-control/convert/user-vt/`. In turn, the global configuration is set up so that the relevant `/etc/system-control/convert/user-vt/vcs/something` autoconfiguration symbolic links point to `/run/dev/head0`.

How keyboard maps and keyboard/mouse states are assigned is a matter of configuration policy. Similarly, fonts are third-party terminal resources not supplied in the toolkit, that have to be obtained, and configured in a manner that is determined by where on the system they are installed.