FACE(7)
π FACE(7): face files π
Okay bestie, this one's from the Miscellaneous Information Manual, and it's all about face files β yes, the little pics of people. It's giving old-school Unix lore, and I'm obsessed. π¦
πΈ NAME πΈ
face β face files
β¨ DESCRIPTION β¨
The directories /usr/$user/lib/face and /lib/face are literally a whole hierarchy of images of people. Inside those directories are subdirectories named by the sizes of the corresponding image files, and the size vibes are extremely specific:
48x48x1β 48 by 48 pixels, one bit per pixel48x48x2β 48 by 48 pixels, two (grey) bits per pixel48x48x4β 48 by 48 pixels, four (grey) bits per pixel48x48x8β 48 by 48 pixels, eight (color-mapped) bits per pixel512x512x8β 512 by 512 pixels, eight (color-mapped) bits per pixel512x512x24β 512 by 512 pixels, twenty-four bits per pixel (3 times 8 bits per color)
The large files serve no special purpose; they are stored as images (see image(7)). The small files are the icons displayed by faces and seemail (see Plan 9's faces(1)); for depths less than 4, their format is special. Slay for historical quirks π
One- and two-bit deep icons are stored as text, one line of the file to one scan line of display. Each line is divided into 8-bit, 16-bit, or 32-bit big-endian words, stored as a list of comma-separated hexadecimal C constants, such as:
0x9200, 0x1bb0, 0x003e,
This odd format is historical and the programs that read it are somewhat forgiving about blanks and the need for commas. Not me being dramatic β it says "somewhat forgiving," so don't go feral with the commas, okay? π
The files lib/face/*/.dict hold a correspondence between users at machines and face files. The format is:
machine/user directory/file.ver
Here's the breakdown, because we love clarity:
machineβ the domain name of the machine sending the messageuserβ the name of the user sending itdirectoryβ a further subdirectory of (say)/lib/face/48x48x1, named by a single letter corresponding to the first character of the user namesfileβ the name of the file, typically but not always the user nameverβ a number to distinguish different images, for example to distinguish the image for Bill Gates from the image for Bill Joy, both of which might otherwise be calledb/bill
For example, Bill Gates might be represented by the line:
microsoft.com/bill b/bill.1
If multiple entries exist for a user in the various .dict files, faces chooses the highest pixel size less than or equal to that of the display on which it is running. Main character energy: highest pixel size that still fits π
Finally, or rather firstly, the file /lib/face/.machinelist contains a list of machine/domain pairs, one per line, to map any of a set of machines to a single domain name to be looked up in the .dict files. The machine name may be a regular expression, so for example the entry:
.*research\.bell-labs\.com astro
maps any of the machines in Bell Labs Research into the shorthand name astro, which then appears as a domain name in the .dict files. Regex-to-shorthand pipeline, iykyk π
π SEE ALSO π
That's the whole vibe, bestie. Sending you the biggest forehead kiss from the Miscellaneous Information Manual, FACE(7) β no date listed on this page, ngl π«Άπ
π¦ where this page comes from
- alpine 3.24: plan9port-doc 0_git20260208-r0 Β· LPL-1.02
- arch rolling: plan9port 20261021-2 Β· custom
- nixos 26.05: plan9port 0-unstable-2025-11-10
- nixos 26.05: plan9port-wayland 0-unstable-2025-11-26
- nixpkgs unstable: plan9port 0-unstable-2025-11-10
- nixpkgs unstable: plan9port-wayland 0-unstable-2025-11-26
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms