Skip to content
TheMelbinePublic
forked from gammons/slk

About

slk with extras: Slack-side notification levels, thread follow, starred channels, avatars in more places, Cyrillic-friendly hotkeys and search

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

slk-plus

A fork of slk by Grant Ammons with changes I wanted for daily use. Everything below the next section is the upstream README and still applies.

What slk-plus adds

slk-plus demo: cycling a channel's notification level, starring it, following a thread, avatars in the mention picker

Notifications

  • Per-channel notification levels from Slack are honored (all new messages / mentions only / nothing), and m cycles them without leaving the terminal
  • f follows or unfollows a thread, with desktop notifications for replies in followed threads
  • macOS: notifications carry the app icon and the sender's avatar, and a click brings back slk's Ghostty tab and opens the message or its thread, switching workspace if needed. macos/notifier/build.sh builds and installs the helper app once

Channels and workspaces

  • s stars or unstars a channel
  • Collapsed sidebar sections stay collapsed across restarts, per workspace
  • Workspace icons in the rail instead of initials; the rail is hidden when there is only one workspace

Keys

  • Hotkeys work on a Cyrillic keyboard layout, including the ? cheatsheet and : commands (:й is :q); pickers and the command line accept non-ASCII input
  • :q closes the focused window and quits in the last one, :qa quits
  • Slash commands: / at the start of a message opens a picker with the workspace's commands (built-ins and apps), Enter runs one, and "only visible to you" responses show up in the channel or thread. A typo is refused instead of being posted

Rendering

  • Avatars in the thread panel, on the thread line (participants + "last reply N ago") and in the @ mention picker
  • Emoji and links render inside alert attachments
  • Theme color "none" for a transparent background, author name colors in themes
  • Kitty graphics fixes for Ghostty

Build from source: go build -o bin/slk ./cmd/slk. Keybindings: wiki/Keybindings.md. The clip above is slk --demo plus recorded with vhs docs/assets/demo/plus.tape.


A blazingly fast Slack TUI. Keyboard-driven, beautifully themed, and under 20MB. One static binary. No Electron required.

Marketing site: getslk.sh · Docs: Wiki

slk demo: navigating channels, live messages, a split window and switching workspaces

slk is a daily-driver replacement for the official Slack desktop client, built in Go with bubbletea and lipgloss.

Why slk?

  • Fast. Cold start in milliseconds. Render-cached messages. SQLite-backed scrollback. Real-time over WebSocket.
  • Tiny. ~19 MB on disk. ~60 MB RSS for a live multi-workspace session vs. 500 MB–1.5 GB for the official client. No node_modules, no Chromium, no 1Gb RAM tax.
  • Keyboard-first. Vim-style modal editing. j/k, h/l, i, Esc.
  • Pretty. 59 built-in themes, lipgloss-styled panels, true-pixel avatars on kitty (half-block fallback elsewhere), emoji shortcodes, day separators, and pill-style reactions.
  • Multi-workspace. All your workspaces stay connected in parallel. 1–9 to instantly jump between them, with live unread badges in the rail.
  • Yours. TOML config, custom themes, custom channel sections via glob, XDG-compliant paths.

Highlights

  • Real-time messages, edits, deletes, reactions, typing indicators
  • Inline images (kitty graphics / sixel / half-block fallback) with full-screen preview
  • Threads side panel + a workspace-wide threads view
  • Activity feed: mentions, thread replies, reactions, and DMs in one list, like Slack's Activity tab
  • Smart paste: clipboard images, file paths, or text — multiple attachments + caption in one send
  • Slack-native sidebar sections, kept live; or glob-based config sections
  • Automatic auth from the Slack desktop app — no tokens to copy, no Slack App required
  • Vim-style modal keybindings, fuzzy channel finder, workspace picker
  • 59 themes + drop-in custom themes, live theme switcher
  • OS desktop notifications on DMs, mentions, and configurable keywords

Full feature breakdown: Features

Quick install

Homebrew (macOS and Linux):

brew install --cask gammons/tap/slk

Arch Linux (community-maintained AUR package):

yay -S slk

Go:

go install -ldflags="-s -w" -trimpath github.com/gammons/slk/cmd/slk@latest

For tarballs, .deb / .rpm / .apk packages, Windows, build-from-source, and the Homebrew formula→cask migration note, see the Installation wiki page.

Setup

slk reads your session directly from the Slack desktop app — no DevTools, no tokens to copy. Make sure you're signed in to the desktop app, then:

slk --add-workspace

slk lists the workspaces you're signed in to; pick the ones you want and you're done.

No desktop app (a server, a container, an SSH session)? slk --add-workspace --browser signs in from your browser session instead: in DevTools > Network, Copy as cURL any request to /api/ on app.slack.com, and paste it. slk also offers this when it cannot read the desktop app's session.

Full walkthrough: Setup wiki page.

Debugging

Set SLK_DEBUG=1 to enable a comprehensive debug log written to slk-debug.log in the current working directory. The file is truncated each run, so reproduce the issue, quit slk, then copy the file before relaunching. Log lines are categorized ([cache], [imgfetch], [imgrender], [ws], [general]) so grep '\[cache\]' slk-debug.log slices to one focus area.

Documentation

Everything lives in the wiki:

Contributing

Contributions are welcome. A few ground rules:

  • AI-assisted PRs are accepted — and in fact encouraged — but only if they're driven by a frontier model (e.g. Claude Opus, GPT-5, Gemini Pro) running with high thinking effort. Low-effort, small-model output that nobody reviewed tends to create more work than it saves, and will be closed.
  • Ideally, drive the work with the superpowers framework (or an equivalent skills/TDD-disciplined workflow). Brainstorm the design first, write tests, then implement.
  • For large feature additions, open an issue first. Before sinking time into a big change, file an issue to discuss the idea and approach so we can agree on direction. Bug fixes and small improvements can go straight to a PR.
  • Whether human- or AI-written, you are responsible for your PR. Understand the diff, make sure it builds and passes go vet ./... and go test ./..., and be ready to explain your choices in review.

Disclaimer

slk is an independent, unofficial project. It is not affiliated with, endorsed by, or sponsored by Slack Technologies, LLC or Salesforce, Inc. "Slack" is a trademark of Slack Technologies, LLC; it is used here only to describe the service this client interoperates with.

slk talks to Slack via the same internal browser protocol the official web client uses. This is unofficial and not sanctioned by Slack — see Tradeoffs and Non-Goals for details.

License

MIT © Grant Ammons. slk-plus keeps the upstream license; the original work is his, the additions above are mine.

About

slk with extras: Slack-side notification levels, thread follow, starred channels, avatars in more places, Cyrillic-friendly hotkeys and search

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages