.. | ||
macos-stores-a-copy-of-everything-one-prints-forever.jpg | ||
README.md |
How to disable CUPS printer job history on macOS
Requirements
- Computer running macOS Monterey or Ventura
Setup guide
Step 1: clear job history
Heads-up: purges
/var/spool/cups
.
$ cancel -a -x
Step 2: create /usr/local/sbin
directory
sudo mkdir -p /usr/local/sbin
sudo chown ${USER}:admin /usr/local/sbin
Step 3: create cups.sh
script (see CUPS docs)
cat << "EOF" > /usr/local/sbin/cups.sh
#! /bin/sh
set -e
if cupsctl | grep --quiet PreserveJobHistory=no; then
exit 0
fi
cupsctl MaxJobTime=5m PreserveJobFiles=no PreserveJobHistory=no
EOF
Step 4: make cups.sh
executable
chmod +x /usr/local/sbin/cups.sh
Step 5: create local.cups.plist
launch daemon
Heads-up: used to make sure user-defined config persists macOS updates.
cat << "EOF" | sudo tee /Library/LaunchDaemons/local.cups.plist
<?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>Label</key>
<string>local.cups</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/cups.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
EOF
Step 6: reboot
👍
Want things back the way they were before following this guide? No problem!
Step 1: delete cups.sh
script
sudo rm /usr/local/sbin/cups.sh
Step 2: delete local.cups.plist
launch daemon
sudo rm /Library/LaunchDaemons/local.cups.plist
Step 3: revert user-defined config to CUPS defaults
cupsctl MaxJobTime= PreserveJobFiles= PreserveJobHistory=
Step 4: reboot
👍