You can have lots of fun directly interacting with the framebuffer too. The framebuffer is a file, like everything in linux, a few examples:
For shits and giggles, switch to a virtual console and try this:
(fb0 is the usual framebuffer device, might be different on your system if you have several graphics cards or something)
cat /dev/urandom > /dev/fb0
Should fill your framebuffer with colored snow.
cat /dev/zero > /dev/fb0
clears it
cat /dev/fb0 > /tmp/screenshot
gives you a raw screenshot of the framebuffer and
cat /tmp/screenshot > /dev/fb0
puts it back.
ffmpeg -i [path to some picture format ffmpeg understands, or video, or gif] -pix_fmt bgra -f fbdev /dev/fb0 -loglevel quiet
(loglevel quiet because ffmpeg is quite chatty and will overwrite what it's putting out)
will put a picture/video on your framebuffer. The video will be "played back" as fast as ffmpeg can transcode it, so mplayer is actually more useful for watching videos.
Framebuffer format on modern hardware is usually 32 bit RGBA, but there are kernel interfaces for querying it. With this it's trivial to write a small program that puts a small widget like a clock on it, for example. Or write your own screensaver in bash. Be aware though that it's not hardware accelerated and quite costly, pushing a lot of pixels will be slow. Ideally you want to write to an offscreen buffer and just push changed screen regions. This shit used to be trivial knowledge. Not anymore, that's why I mention it.
As we can see, as the linux console is actually supportive of truecolor you can easily change the 16 colors you get, as simply as
echo -e "\e]P{number of color, hexadecimal 0-F} {hexcode of color, RGB, NO #}"
set your favorite ricing scheme that way.
You can also change the font, now this part is a bit arcane but the information is out there, so I won't describe it fully. Look into the psftools. A lot of distros actually come with a lot of fonts for the console already, you can usually find them in /usr/share/consolefonts/ you can also download fonts from 10inth.org and easily convert their .fon file into psf fonts with psftools, they're very readable and were made to be stared at for a long time, some are quite comfy and easy on the eyes. Setting a font is as easy as setfont {path to .psf}, showconsolefont prints it's characters.
For completeness sake, the proper way to interact with that shit lowlevel now is the DRM interface, but it's a lot more complicated and poorly documented, like everything new in linux.