A lightweight, keyboard-driven TUI client for Slack, built in Go.
- Workspace Navigation — Browse channels (public/private), DMs, group DMs, and Slack Connect channels
- Messaging — Send, edit, and delete messages with rich text support
- Threads — View and reply to threaded conversations
- Reactions — Add and remove emoji reactions
- Real-time Updates — Receive messages and events via Slack Socket Mode
- Mentions — Autocomplete @user and #channel mentions with fuzzy search
- File Sharing — Upload and download file attachments
- Search — Search messages and channels
- Notifications — Desktop notifications for mentions and DMs
- Vim-style Keybindings — Fully customizable keyboard shortcuts with command mode
- Theming — Customizable colors and styles via TOML configuration
- Markdown Rendering — Render Slack's mrkdwn format with syntax highlighting
- User Presence — Online/away/DND status indicators
- Unread Indicators — Visual markers for unread channels and messages
- Multi-workspace — Switch between multiple Slack workspaces
- OAuth Login — Browser-based authorization with zero configuration
brew tap m96-chan/tap
brew install slackoscoop bucket add m96-chan https://github.com/m96-chan/scoop-bucket
scoop install slackoyay -S slacko-binnix profile install github:m96-chan/SlackoOr try it without installing:
nix run github:m96-chan/Slackogo install github.com/m96-chan/Slacko@latestDownload pre-built binaries from GitHub Releases.
git clone https://github.com/m96-chan/Slacko.git
cd Slacko
go build -o slacko .Just run slacko — it will open your browser for Slack authorization. After granting access, you're connected.
slackoIf you prefer to use your own Slack App, see the Slack App Setup Guide for detailed instructions.
export SLACKO_USER_TOKEN="xoxp-..."
export SLACKO_APP_TOKEN="xapp-..."
slackoTokens are stored securely in your OS keyring after first login.
The configuration file is located at:
| OS | Path |
|---|---|
| Linux | ~/.config/slacko/config.toml |
| macOS | ~/Library/Application Support/slacko/config.toml |
| Windows | %AppData%\slacko\config.toml |
See docs/CONFIGURATION.md for the full reference.
mouse = true
editor = "default"
auto_focus = true
messages_limit = 50
[markdown]
enabled = true
syntax_theme = "monokai"
[timestamps]
enabled = true
format = "3:04PM"
[notifications]
enabled = true
[typing_indicator]
send = true
receive = true
[presence]
enabled = trueAll keybindings are customizable in config.toml. See docs/KEYBINDINGS.md for the full reference.
| Key | Action |
|---|---|
1 / 2 / 3 |
Focus channels / messages / input |
Ctrl+W |
Focus previous panel |
Ctrl+L |
Focus next panel |
Ctrl+B |
Toggle channel tree |
Ctrl+K |
Channel picker (fuzzy search) |
Ctrl+S |
Search messages |
Ctrl+T |
Switch workspace |
: |
Command mode |
? |
Help |
Ctrl+C |
Quit |
| Key | Action |
|---|---|
j / k |
Navigate messages |
r |
Reply in thread |
e |
Edit own message |
d |
Delete own message |
+ / - |
Add / remove reaction |
t |
Open thread |
y |
Copy message text |
o |
Open links in browser |
| Key | Action |
|---|---|
Enter |
Send message |
Shift+Enter |
Newline |
Tab |
Autocomplete mention |
Ctrl+E |
External editor |
Ctrl+F |
File upload |
Ctrl+V |
Paste from clipboard |
slacko/
├── internal/
│ ├── app/ # Application lifecycle & event wiring
│ ├── ui/
│ │ ├── login/ # OAuth & manual token login
│ │ └── chat/ # Main chat interface
│ │ ├── view.go # Layout orchestrator
│ │ ├── channels_tree.go
│ │ ├── messages_list.go
│ │ ├── message_input.go
│ │ ├── thread_view.go
│ │ └── ...
│ ├── config/ # TOML configuration system
│ ├── slack/ # Slack API client & Socket Mode events
│ ├── oauth/ # Local OAuth flow (browser-based)
│ ├── keyring/ # Secure token storage (OS keyring)
│ ├── markdown/ # Slack mrkdwn renderer
│ ├── notifications/ # Desktop notifications
│ ├── clipboard/ # Clipboard operations
│ └── logger/ # Structured logging
├── workers/
│ └── oauth-proxy/ # Cloudflare Worker for OAuth proxy
├── docs/ # Documentation & GitHub Pages site
├── main.go
└── go.mod
| Library | Purpose |
|---|---|
| slack-go/slack | Slack Web API + Socket Mode |
| rivo/tview | Terminal UI framework |
| gdamore/tcell | Terminal rendering |
| BurntSushi/toml | Configuration parsing |
| alecthomas/chroma | Syntax highlighting |
| sahilm/fuzzy | Fuzzy search |
| zalando/go-keyring | Secure token storage |
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License. See LICENSE for details.
- discordo — The Discord TUI client that inspired this project
- slack-go/slack — Go Slack API library
- tview — Terminal UI library
