r dismisses a
message, 1/2/3 toggle filters, ctrl+p
opens the command palette.
Why it exists
Slack’s unread state is all-or-nothing: open a channel for
one message and twelve others count as read. slacktivity adds a
triage layer Slack doesn’t have. It’s a flat,
chronological feed of what’s unread, mentions you, or lands
in channels you care about, with a read action that
dismisses each message once you’ve dealt with it. Anything
still on screen still needs you.
Marking read is local. It doesn’t touch Slack’s unread badges; dismissed messages are saved (with a preview) and you can re-open the archive and restore any of them.
How it works
It talks to the same private API the Slack web app uses: an
xoxc token plus your d session cookie,
both lifted from your logged-in browser session. It polls
client.counts for unread state every five seconds and
pulls message deltas with conversations.history,
resolving and caching user and channel names along the way.
The UI is a Textual
TUI in Python; install and run it with uv. Because it
rides a session token, it’s a personal-use tool. The token
expires when you log out, and it’s a gray area under
Slack’s ToS (terms of service), so it’s not for sharing.