Skip to content

m96-chan/Slacko

Slacko

A lightweight, keyboard-driven TUI client for Slack, built in Go.

CI Go Report Card License: MIT Slack

Slacko — TUI Client for Slack

Features

  • 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

Installation

Homebrew

brew tap m96-chan/tap
brew install slacko

Scoop (Windows)

scoop bucket add m96-chan https://github.com/m96-chan/scoop-bucket
scoop install slacko

Arch Linux (AUR)

yay -S slacko-bin

Nix

nix profile install github:m96-chan/Slacko

Or try it without installing:

nix run github:m96-chan/Slacko

Go

go install github.com/m96-chan/Slacko@latest

Binary Releases

Download pre-built binaries from GitHub Releases.

Build from Source

git clone https://github.com/m96-chan/Slacko.git
cd Slacko
go build -o slacko .

Getting Started

Just run slacko — it will open your browser for Slack authorization. After granting access, you're connected.

slacko

Alternative: Manual Token Setup

If 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-..."
slacko

Tokens are stored securely in your OS keyring after first login.

Configuration

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.

Example

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 = true

Keybindings

All keybindings are customizable in config.toml. See docs/KEYBINDINGS.md for the full reference.

Global

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

Messages

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

Input

Key Action
Enter Send message
Shift+Enter Newline
Tab Autocomplete mention
Ctrl+E External editor
Ctrl+F File upload
Ctrl+V Paste from clipboard

Architecture

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

Key Dependencies

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

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License. See LICENSE for details.

Acknowledgments

About

A lightweight, keyboard-driven TUI client for Slack, built in Go

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages