A focused Slack desktop client powered by Tauri.
Native notifications, reliable window restoration, and multi-workspace switching
without shipping a full Chromium bundle.
Why Zlack · Install · Customize · Development · 한국어
Zlack keeps the familiar Slack web experience and adds the desktop behavior that matters: native operating-system integration, dependable notification routing, and low-overhead packaging through the system WebView.
| Capability | What it does | |
|---|---|---|
| 01 | Native notifications | Routes Slack alerts through Windows toast notifications or the native notification service on macOS/Linux. |
| 02 | Native click activation | Restores the originating workspace and hands the click back to Slack for in-app DM or channel routing without a full-page reload. |
| 03 | Unread indicators | Shows mentions and DMs in red, other unread activity in blue, and mirrors urgent activity in the window title and Windows taskbar. |
| 04 | Fast workspace switching | Keeps up to two workspaces warm, adds workspace buttons to Slack's account switcher, and supports Ctrl + 1–9. |
| 05 | Native footprint | Uses Tauri and the operating system's WebView instead of bundling an entire Electron/Chromium runtime. |
| 06 | Local customization | Loads optional CSS, runtime icons, and a private WebView2 runtime from files beside the executable. |
Download the latest package from GitHub Releases, install it, then sign in to your Slack workspace.
| Platform | Packages | Runtime note |
|---|---|---|
| Windows | .exe, .msi |
Uses Microsoft Edge WebView2, shared or private. |
| macOS | .dmg, .app |
Uses the system WebKit webview. |
| Linux | .deb, .AppImage |
Uses the system WebKitGTK stack. |
Note
Notification-click activation depends on the platform notification service supporting click actions. On Windows, packaged releases avoid the AUMID restrictions that apply to development builds.
Place any of these optional files beside Zlack.exe (or the Zlack executable on
your platform):
Zlack
├── zlack.css # CSS injected into the Slack client
├── zlack.png # preferred runtime window and tray icon
├── zlack.ico # fallback runtime icon
└── zlack-taskbar.png # optional Windows taskbar-only icon
The embedded application and installer icons do not change until Zlack is rebuilt.
The default Windows setup uses the shared system WebView2 runtime. To isolate Zlack from that shared installation:
- Download a Fixed Version runtime from Microsoft's WebView2 page.
- Extract it into a
webview2-runtimedirectory besideZlack.exe. - Confirm that the executable exists at
webview2-runtime/msedgewebview2.exe.
Zlack.exe
└── webview2-runtime/
├── msedgewebview2.exe
└── ...
Unless WEBVIEW2_BROWSER_EXECUTABLE_FOLDER is already set, Zlack uses the
private runtime when present and falls back to the shared runtime otherwise.
flowchart LR
A["Slack web client"] --> B["preload.js bridge"]
B -->|"notification + channel context"| C["Tauri / Rust core"]
B -->|"unread + workspace state"| C
C --> D["Native notification"]
C --> E["Tray, title, and taskbar badges"]
C --> F["Native activation and channel navigation"]
The preload bridge observes Slack's notification telemetry and unread state, then sends only the required context to the Rust core. The native layer owns notification delivery, system tray behavior, workspace windows, window focus, and external-link handling.
- Remote Tauri IPC is scoped to Slack domains and Zlack-managed workspace
windows. New workspace windows accept only credential-free HTTPS URLs on
slack.comand its subdomains. - Zlack's external-link command accepts only credential-free HTTP(S) URLs and rejects file and custom protocols.
- The remote Slack page receives neither Tauri's general shell capability nor its built-in notification API. Native alerts use Zlack's narrow notification command instead.
npm install
npm run tauri devThe pretauri hook synchronizes the version from package.json into the Rust
and Tauri manifests before each Tauri command.
| Host | Command | Output copied to dists/ |
|---|---|---|
| Windows | npm run build:dist:windows |
NSIS .exe, WiX .msi |
| macOS | npm run build:dist:unix |
.dmg, .app |
| Linux | npm run build:dist:unix |
.deb, .AppImage |
src/
└── index.html # bundled fallback splash
src-tauri/
├── preload.js # Slack-to-Tauri bridge
├── src/
│ ├── main.rs # app lifecycle and workspace orchestration
│ ├── icons.rs # runtime and unread badge icons
│ ├── platform.rs # platform notification/runtime integration
│ └── security.rs # URL and external-link boundaries
├── Cargo.toml
└── tauri.conf.json
scripts/
└── update-version.js # manifest version synchronization
Issues and focused pull requests are welcome. For behavior changes, describe the target platform and include steps that reproduce the current behavior.
Zlack is available under the MIT License.
Slack is a trademark of Salesforce, Inc. Zlack is an independent project and is not affiliated with or endorsed by Slack or Salesforce.