The Robservatory

Robservations on everything…


Remove the macOS Catalina guilt trip from macOS Mojave

I have no plans to move my main iMac to macOS Catalina, at least for the forseeable future. There are two key apps I use—Fujitsu’s ScanSnap scanner software and the Many Tricks’ accounting app—that are both 32-bit. In addition, there are changes in Catalina relative to permissions that make it somewhat Vista like and slow down my interaction with the system. (My MacBook Air is my “production” Catalina Mac, and I have an older retina MacBook Pro that I use for Catalina betas.)

But Apple really wants people to update to Catalina, so they let you know about Catalina…constantly, it seems. In System Preferences > Software Update, you’ll see this…

And while that’s annoying, it’s not nearly as annoying as the red “1” dot they stick on System Preferences, which will stare at you forever. I complained about this on Twitter, and as is often the case, some very bright people had solutions to the problem.

There are two things that I wanted to get rid of on my iMac: The notice about Catalina, and the infuriating red dot. At its simplest level, this appears to require just two Terminal commands, plus one more to restart the Dock (ignore the $; that’s just the Terminal prompt):

$ sudo softwareupdate --ignore "macOS Catalina"
$ defaults write AttentionPrefBundleIDs 0
$ killall Dock

The first command gets rid of the notification about Catalina, and the second removes the red dot. The first command does what it should; after running it, Catalina no longer shows up as an available update.

Note: To undo this, so you see all updates—including Catalina—paste this command in Terminal: sudo softwareupdate --reset-ignored

The second command also appears to work, but it’s a bit deceiving: The next time the OS checks for updates, it will see the Catalina update available—even though you’ve told Software Update to ignore it—and the dreaded red “1” will return.

The final command restarts the Dock, which forces the removal of the notification icon on System Preferences.

I decided to tackle this by creating a launchd agent—which is just the technical name for scheduled tasks in macOS’ Unix core. I wrote about launchd a while ago, so I won’t go through all the details of how it works again here.

The first step was to create a very simple shell script, which I saved as noreddot:

defaults write AttentionPrefBundleIDs 0
killall Dock

This is just the command that zeros the counter on the System Preferences’ icon, saved in a script, plus a Dock restart to make sure the update notification vanishes. I then made it executable (chmod 755 noreddot). Next, I fired up LaunchControl, and created a very simple two-step launchd agent:

Step one tells the system to run my script, and step two tells it how often: Every day at 6am, noon, and 6pm. That should make the presence of any update notification no more than a six hour hassle…and if that bugs me, I can add more run times to my agent—it’s not like this is a complex CPU-consuming task.

For those who don’t want to use LaunchControl to make the agent, here’s the source code—note that you’ll need to edit the two lines marked with *** to make it work for you. (Remove the asterisks after editing, and if you haven’t created a launchd script before, my full writeup explains things in more detail and has links to additional helpful sources.)

I’ve only been running this for a day or so, but so far, it’s worked like a charm—no updates listed within System Preferences, and no annoying red dot on System Preferences.


Add a Comment
      1. It doesn’t matter that you removed the update automatically feature; the next time the system checks for an update, you’ll see Catalina listed again, and the red dot will return—at least, that was my experience.


    1. I used Lingon 3 to make the LaunchAgent. Both interval and time of day execution (3 hours – 3600 seconds/hour):

    1. I just added a blurb: You probably have to do a killall Dock to have the change take effect.


  1. There is a new ScanSnap Home app which I believe is 64bit although you may have checked it out and found it didn’t work with your scanner.

    1. The new software is feature-limited compared to the current one, and I have a huge complex macro that helps me auto-sort things…and I’m sure I’d have to rebuild it from scratch, which is a project I’m not looking forward to :).


      1. If you haven’t tried it in a while would recommend you check out the newer versions of ScanSnap Home as Fujitsu has been adding back features. UI is bizarre in a different way and it spawns even MORE background processes, but it works about as well as the old version and is reliable. I had to rebuild my own sorting script too…

      2. I’d like to hear more about the “huge complex macro that helps me auto-sort things”! I was sceptical about the ScanSnap Home app but it eventually worked fine enough and I ended up removing PDFpen from my various Hazel auto-sorting + filing scripts and relying on the included ABBYY OCR feature instead. I’m always interested in hearing about how people automate their workflow.

    1. That’s just the Terminal prompt; it shouldn’t be typed at all. I modified the article with a note to that effect—sorry for any confusion!


  2. What happens if an update you actually want (Mojave security update for example) and want to be informed about comes in?

    1. I’ll have to manually open the Software Update System Prefs panel every so often—it shouldn’t be hard to remember, because updates always get a fair bit of press attention.


  3. Dual partitions…DONE. Runni g all my Mojave shit and also having a blast with my 64-bit apps on Catalina, as well as Bootcamp Win 10. Done.

  4. Should be able to use cron to schedule the icon removal as well.

    $ crontab -e

    Then use this line:

    0 */6 * * * defaults write AttentionPrefBundleIDs 0 && killall Dock

    That should schedule it for every 6 hours at minute 0 of the hour.

    1. Yes, and it annoys and distracts some of us. If it doesn’t bother you, great, just ignore the blog post.


  5. After running ( sudo softwareupdate –ignore “macOS Catalina” ), Software Update in System Preferences says I’m up-to-date with the latest Mojave…good. But, how do I get this back if I want to someday update to Catalina? Would it be ( sudo software update defaults ) or something similar?

    1. Good catch — I’ve added a “how to undo” bit to the blog post, but here it is again: Just paste this in Terminal:

      sudo softwareupdate --reset-ignored


      1. “sudo: /sbin/softwareupdate: command not found”
        That’s what I get. How can I fix this?
        Thank you.:)

        1. Sorry, my mistake—the path part doesn’t need to be there. I edited my comment (and the blog post). See above for the proper form.


  6. Rob, I appreciate your efforts, but after reading your article I have no idea how to eliminate both the update notification and the red dot. Any chance I could get you to explain it to me like I’m a six-year-old, with Step 1: Step 2: etc.? Thanks!

    1. To make it fully automatic, you need to both create a Terminal shell script, and then tell that shell script to run on a schedule. That’s what the post does, but it definitely assumes (requires) some knowledge and comfort in Terminal.

      Probably the easiest way to do this, given limited Terminal knowledge, is the following:

      1) In Terminal, paste this line and hit Enter:

      sudo softwareupdate –ignore “macOS Catalina”

      2) In Terminal, paste this line and hit Enter:

      defaults write AttentionPrefBundleIDs 0

      3) In Terminal, paste this line and hit Enter:

      killall Dock

      That will remove Catalina from the list of displayed updates, and remove the red dot (restarting the Dock, via the killall command, is needed to make the red dot removal take effect).

      To automate the above, because otherwise the red dot returns, follow the instructions in the comment by Ryan about using cron to schedule the task:

      Should be able to use cron to schedule the icon removal as well.

      [In Terminal, type this and hit enter:]

      crontab -e

      [That will open an editor window. In the editor…]

      Then use this line:

      0 */6 * * * defaults write AttentionPrefBundleIDs 0 && killall Dock

      [To enter that line, you’ll need to press i to get into Insert mode, then copy and paste the above, then press Escape, followed by colon (:) and w (for write), to save the file. Then Escape, colon, and q to quit the editor. If something goes wrong after you save and quit, you can use this command to erase the crontab: crontab -r]

      That should schedule it for every 6 hours at minute 0 of the hour.

      This stuff is a bit advanced, so if you’re not comfortable with the crontab bit, you can just occasionally paste the second and third commands from the first part (you don’t need the ‘sudo softwareupdate’ bit again) into Terminal.


  7. It’s also easy to write a one-step macro in Keyboard Maestro to execute your shell script periodically. You don’t even have to save the shell script as a separate file.

Leave a Reply

The Robservatory © 2018 • Privacy Policy Built from the Frontier theme