[TOP TIP] Text to image notifications... with fortune & cows!
So lets say that we have a script which generates some text (or a lot of text) and we need to display it somewhere as an image, for example send it as an attachment, display it on a browser or even display it on your desktop as a popup.
For fun, we are going to use an old unix tool called fortune, in most recent distros it can be installed with yum/dnf/apt. The second tool we are going to use is cowsay, which is another of those weird tools that exist and offer little real functionality but can brighten your day. Finally, we include ImageMagick, which is… pure magick!
yum install fortune-mod cowsay ImageMagick
Generate some text
Lets generate some random fortune, and to make the output extra weird we pipe it to cowsay:
$ fortune | cowsay _________________________________________ / Cats are smarter than dogs. You can't \ | make eight cats pull a sled through the | \ snow. / ----------------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
In a real life scenario, our script would probably generate real information (like server status data, server security warnings, that sort of thing). But for our purposes, lets look at these two commands.
The fortune command reads quotes from a ton of files under /usr/share/games/fortune and chooses one at random. You may see all the available categories of quotes by running "fortune -f", then limit the generated quotes to a specific category with "fortune bofh-excuses" or even choose from the "short" or "long" quotes with "fortune -s" and "fortune -l" respectively.
The cowsay command takes any input and redisplays it again but as a ascii quote from a cow, or a kitty, or a koala, or a tux, and many other ascii art designs. You may see all the available ascii art designs with "cowsay -l" and select one with "cowsay -f tux" or even change the word-wrap length based on your terminal size with "cowsay -W 80".
Text to image
As I mentioned above, ImageMagick is magick! We may use the convert command to pipe text and generate images, for example:
fortune -s | cowsay | convert -background lightblue -fill blue -font Liberation-Mono-Bold -size '800x600' -trim label:@- cowsay.png
The above convert command is explained as:
-background lightblue -fill blue = Light blue background with normal blue writing.
-font Liberation-Mono-Bold = Choose a monospaced font, so that the ascii art draws up properly. If you don't have this particular font, choose another one by looking at the output of this command: convert -list font.
-size '800x600' -trim = Starting size of the image but trim to the size of the generated text.
label:@- = Read piped input.
cowsay.png = Export to image file.
We may then proceed to use the generated image for our needs.
Enjoy fortune & cows!~~