FACE(7)

πŸ“¦ version 0_git20260208, in alpine 3.24, arch rolling, nixos 26.05, nixpkgs unstable

πŸ’– 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 pixel
  • 48x48x2 β€” 48 by 48 pixels, two (grey) bits per pixel
  • 48x48x4 β€” 48 by 48 pixels, four (grey) bits per pixel
  • 48x48x8 β€” 48 by 48 pixels, eight (color-mapped) bits per pixel
  • 512x512x8 β€” 512 by 512 pixels, eight (color-mapped) bits per pixel
  • 512x512x24 β€” 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 message
  • user β€” the name of the user sending it
  • directory β€” a further subdirectory of (say) /lib/face/48x48x1, named by a single letter corresponding to the first character of the user names
  • file β€” the name of the file, typically but not always the user name
  • ver β€” 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 called b/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 πŸ«ΆπŸ’–