1. Build and install the app and its sign-in window. You need Rust, cargo and WebKitGTK (webkit2gtk-4.1). Linux only for now.
cargo install --git https://github.com/leonavas/fastslack fastslack fastslack-login
One small Rust binary, no browser inside. It opens with your workspace already on screen.
$ cargo install --git https://github.com/leonavas/fastslack fastslack fastslack-login1. Build and install the app and its sign-in window. You need Rust, cargo and WebKitGTK (webkit2gtk-4.1). Linux only for now.
cargo install --git https://github.com/leonavas/fastslack fastslack fastslack-login
2. Sign in. A small window opens Slack's own sign-in page; once you're in, it hands the session to slick and closes. Inside the app, Ctrl+L opens the same screen.
fastslack login
Add your workspace (fastslack login acme) to go straight to its email-and-password form.
The session is saved to ~/.config/fastslack/config, readable only by you. The window keeps its own profile, so signing out of Slack in your browser doesn't sign you out here. If the session expires, slick asks you to sign in again.
Put one of these in ~/.config/fastslack/config:
# A) internal Slack app (official): create it from # slack-app-manifest.yml, install it, use the User OAuth Token token = xoxp-… # B) browser session, no admin needed token = xoxc-… cookie = xoxd-…
Or set SLACK_TOKEN and SLACK_COOKIE in the environment. You can also paste the token and the cookie straight into the sign-in screen.
3. Run it.
fastslack
@you the first launch fetches your channels and users. Every launch after that opens from the local cache, already on screen.
ok, but why is it fast?
No benchmarks yet, so no numbers we can't back up. Here's what it does:
fair.
The keyboard is the main interface. The mouse works too.
| ↑ ↓ j k | Move through the list |
| Enter · click | Open a conversation or fold a section |
| Ctrl+K · / | Find a conversation |
| Tab · Esc | Switch between the list and the message box |
| g · G | First · last conversation |
| Shift+Enter | New line |
| PgUp PgDn · wheel | Scroll; at the top, load older messages |
| Shift+J · Shift+K | Move a section (the order syncs with Slack) |
| Ctrl+U · Ctrl+W | Clear the box · delete a word |
| Ctrl+L | Sign in to Slack |
| Ctrl+R | Reload channels and users |
| click an image | Enlarge it |
| q · Ctrl+C | Quit |
Most of these work on this page too. Try q.
Coming from Slack? On this page its shortcuts work as well: Ctrl+K jumps to a conversation, Alt+↑ ↓ go to the previous or next channel, Alt+Shift+↑ ↓ to the next unread one, and Esc marks the current one read.
What the TUI does today:
[label].Nothing in this channel works yet. This is where slick is headed:
Want one of these sooner, or something else? Tell me in .
0.1.0 2026-10-12
First release.
fastslack login [workspace] or Ctrl+L in the app. A token in the config file or environment variables work too.Missing something? Tell me what slick should do next: threads, reactions, a theme, a key you can't live without.
Write your proposal in the box below and press Enter. After a quick check that you're human and a confirmation by email, it's sent.