Skip to content

3kh0/slick

Repository files navigation

Logo
Slick

The coolest Slack client mod for MacOS, Windows, and Linux

GitHub Release GitHub Downloads (all assets, all releases) GitHub Repo stars

Caution

This is in early alpha and may not even be allowed by Salesforce. Expect breakage, bugs, and random crashes. The information here may be inaccurate or incomplete, but the code is open source and you can inspect it yourself.

screenshot

Slick runs Slack's own app.asar with a custom Electron (with the handy BYOE acronym, bring your own electron) preload that injects themes and plugins. This method allows us to modify Slack's interface and behavior without altering its files, so auto-updates still work and there's no open debug port or resident watcher.

Installation

Slick runs on MacOS, Windows, and Linux. Linux is still in beta.

Whatever platform you use, you'll need the official Slack app installed first, since Slick runs Slack's own code.

MacOS

Install the official Slack app (not the App Store version) at /Applications/Slack.app, then use the installer script:

curl -fsSL https://raw.githubusercontent.com/3kh0/slick/main/install.sh | bash

If you prefer doing it by hand, grab the latest prebuilt app from the releases page and pick the build for your Mac (check > About This Mac > Chip if unsure):

  • Slick-build-N-mac-arm64Apple Silicon (if there is a M in the name)
  • Slick-build-N-mac-x64Intel Macs

Each comes as a .dmg (open it and drag Slick to Applications) or a .zip.

If you'd rather build it yourself (or hack on it), clone the repo and run:

./install.sh

Windows

Note

Both the standalone Slack download and the Microsoft Store version are supported. On ARM PCs the x64 Slack runs via emulation magic and Slick works, but expect a big performance hit. Slick is primary for those on x64 Windows.

Install the official Slack app first, then run this in PowerShell:

irm "https://raw.githubusercontent.com/3kh0/slick/main/install.ps1" | iex

To uninstall or pass other arguments to the script, try this:

& ([scriptblock]::Create((irm https://raw.githubusercontent.com/3kh0/slick/main/install.ps1))) -Uninstall -Purge

If you'd rather build it yourself (or hack on it), clone the repo and run:

powershell -ExecutionPolicy Bypass -File install.ps1

Linux (beta)

Note

Linux support is still in beta and x86_64-only. Slack doesn't ship an official arm64 Linux build, so there's nothing for an arm64 machine to run Slick against.

Install Slack from your distro first (deb, rpm, AUR, whatever your package manager offers), then clone the repo and run:

./install-linux.sh

This builds byoe/slick-linux, installs a desktop entry, registers slack://, and launches Slick. For manual launch or debugging:

./scripts/launch-linux.sh
./scripts/launch-linux.sh --debug 9223

You also have some nice flags to play around with: --restore-handler on install-linux.sh to give slack:// back to the official Slack app, and ./scripts/uninstall-linux.sh to remove Slick entirely.

Prebuilt x86_64 tarballs are published on the releases page too. To install one (with optional provenance verification if gh is installed):

./install-linux.sh --from-release

Or extract a tarball by hand and run Slick/electron directly.

Release versioning

Slick releases use integer build tags: v13, v14, v15, and so on. The GitHub Release title should read like Slick Build 67.

Internally, release builds use a normal macOS short version (1.0.<build>, e.g. 1.0.67 for build 67), while the bundle build number (CFBundleVersion) is just the integer 67.

To ship the next build, tag and push the next integer:

BUILD=67 # replace with the next build number
git tag "v$BUILD"
git push origin "v$BUILD"

Verifying builds

All builds published from this repo include GitHub artifact attestations (SLSA build provenance). These prove a given zip, dmg, or tarball was built by this repository's release workflow, not swapped in after the fact.

Install scripts check this automatically when they download a prebuilt release and the GitHub CLI (gh) is on your PATH. If gh is not installed, the check is skipped and install continues as before. In-app updates always verify builds after download.

You can also verify a download by hand:

gh attestation verify path/to/Slick-build-N-….zip -R 3kh0/slick
# same idea for .dmg or .tar.gz

A successful check confirms the file digest matches a signed attestation from this repo.

Themes

Themes are defined in the themes/ folder as JSON files exporting the following:

{
  "name": "Super cool epic theme",
  "palette": { "highlight1": { "100": "139,92,246" } }, // --dt_color-plt-<ramp>-<shade>, raw "r,g,b"
  "sidebar": { "nav-bg": "#1A1525" }, // --p-team_sidebar__<key>
  "vars": { "--any-css-var": "value" }, // overrides
  "css": "selector { prop: val !important; }", // raw css (string or array)
}

No theme is applied by default, but you can pick one from the Slick tab in Preferences. themes/amoled.json (true black) and themes/ultraviolet.json (violet) are working examples. More documentation pending.

Prefer to write your own CSS instead? Slick also has a "Custom CSS" option at the top of the theme list.

Plugins

Please refer to plugins/README.md for the plugins documentation. I promise it is not boring.

Credits

  • Slack for the original app and its delightful internals.
  • Electron for the runtime and APIs.
  • @ImShyMike for advice on breaking into Slack.
  • Vencord for plugin inspiration.
  • Claude for cleaning up the code and generally being a good assistant.

Legal

This is under the GNU General Public License v3.0. See the LICENSE file for the legal mumbo jumbo. In short: just don't be a dick. If you're not sure what that means, see choosealicense.com/licenses/gpl-3.0. This code is provided to you for free, use at your own risk. I am not responsible for any harms due to the code here. Don't sue me.

About

The coolest Slack client mod

Topics

Resources

License

Stars

34 stars

Watchers

1 watching

Forks

Sponsor this project

 

Contributors