Sluggish Slack on a Mac

Important I don’t do this anymore as I use an RX580 on my Hackintosh. It’s possible that things have changed enough that this technique doesn’t work anymore.

The Slack app is made using Electron.

In my case, this means extreme sluggishness, pretty much identical to playing a game at 1 or 2 FPS.

I have this sluggishness on all of my macs: MacBookPro mid-2011, Mac Mini 2012 and a “Hackintosh” with a GTX 1070 (using Nvidia’s Web Driver).

The fix (at least in my case) is to disable the GPU “acceleration”, which can be done by launching Slack with the --disable-gpu argument.

I also happen to have the same problem with the other Electron app I use, Visual Code Studio and have already posted the technique I use to fix VSCode. However, because of differences in packaging, that method would be too complicated to implement for Slack.

Update: it seems to be caused by using a complex color profile, like those made using DisplayCAL. Falling back to a simple profile “fixes” the problem.

Simple fix

Simply launch Slack from a terminal instead of clicking the icon:

$ open -a 'Slack.app' --args --disable-gpu

Or you could find a guide on the internet on how to launch a shell script from Finder and to that instead.

Once the application is running, everything else works the way you are used to.

A more permanent fix

Important: this technique will break “Open With” and all other file/url coming from Finder (like dragging a file on the icon in the Dock).

If, like me, you prefer to launch apps like that using Alfred, this method is probably a bit better and less annoying.

The first step is to go in a shell and make a small bash script to launch it with the desired parameter inside Slack’s app:

$ cd /Applications/Slack.app/Contents/MacOS
$ cat > nogpu.sh <<"EOF"
#!/usr/bin/env bash

PATH="$(cd "$(dirname "$0")"; pwd -P)"
exec $PATH/Slack "$@" --disable-gpu
EOF
$ chmod a+x nogpu.sh

The next step involves modifying “Info.plist” so that Finder launches the shell script instead of the application:

$ cd /Applications/Slack.app/Contents
$ open -e Info.plist

You can replace open -e with vim, code, subl or any other text editor (assuming you are modifying an XML plist and not a binary one).

You need to modify the CFBundleExecutable entry. For example, Slack contains this:

<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>Slack</string>
    <key>CFBundleIconFile</key>

We change it so it becomes:

<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>nogpu.sh</string>
    <key>CFBundleIconFile</key>

We then need to tell Launch Services to reload the application’s definition:

$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f /Applications/Slack.app

From this point, launching “Slack” with Finder, the Dock, Alfred or anything else should actually launch it without GPU support.