Macos – Is is possible to use an image as the background in Terminal in Mac OS X

macosterminal

I know how to change the background color in Terminal in Mac OS X by using the Preferences window. I would like to be able to use an image as my Terminal background instead, but I don't see an option to set an image as the background.

Is it possible to set an image as my Terminal background? If so, how would I do this?
I am using Mac OS 10.5.8.

Best Answer

In Tiger you could select background images in Preferences, but that went away in Leopard. The .terminal files can be exported and imported as a xml property list. The plist "key" node value for the background image is BackgroundImagePath followed by a "data" node that contains a base64 encoded binary property list that has a "string" node pointing to an image file.

<key>BackgroundImagePath</key>
<data>
...base64 encoded binary plist here....
</data>

You can use openssl to decode the data content.

openssl enc -d -base64 

Then convert the binary plist to xml using plutil.

plutil -convert xml1

You will see something like this...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>$archiver</key>
 <string>NSKeyedArchiver</string>
 <key>$objects</key>
 <array>
  <string>$null</string>
  <string>/Users/user/Pictures/myimage.png</string>
 </array>
 <key>$top</key>
 <dict>
  <key>root</key>
  <dict>
   <key>CF$UID</key>
   <integer>1</integer>
  </dict>
 </dict>
 <key>$version</key>
 <integer>100000</integer>
</dict>
</plist>

Change the image path and convert the xml plist back to binary and base64 encode it.

plutil -convert binary1
openssl enc -base64

Then set the value of the "data" node to the base64 string.

Related Question