[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5957":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":32,"discoverSource":33},5957,"slk","gammons\u002Fslk","gammons","A blazingly fast Slack TUI","",null,"Go",213,18,2,14,0,7,34,173,21,3.84,"MIT License",false,"main",true,[27,28],"golang","slack","2026-06-12 02:01:15","# slk\n\n> **A blazingly fast Slack TUI.**\n> Keyboard-driven, beautifully themed, and under 20MB. One static binary. No Electron required.\n>\n> Marketing site: [getslk.sh](https:\u002F\u002Fgetslk.sh) · Docs: [Wiki](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki)\n\n![slk screenshot](docs\u002Fassets\u002Fscreenshot.png)\n\n`slk` is a daily-driver replacement for the official Slack desktop client, built in Go with [bubbletea](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Fbubbletea) and [lipgloss](https:\u002F\u002Fgithub.com\u002Fcharmbracelet\u002Flipgloss).\n\n## Why slk?\n\n- **Fast.** Cold start in milliseconds. Render-cached messages. SQLite-backed scrollback. Real-time over WebSocket.\n- **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.\n- **Keyboard-first.** Vim-style modal editing. `j\u002Fk`, `h\u002Fl`, `i`, `Esc`.\n- **Pretty.** 36 built-in themes, lipgloss-styled panels, true-pixel avatars on kitty (half-block fallback elsewhere), emoji shortcodes, day separators, and pill-style reactions.\n- **Multi-workspace.** All your workspaces stay connected in parallel. `1`–`9` to instantly jump between them, with live unread badges in the rail.\n- **Yours.** TOML config, custom themes, custom channel sections via glob, XDG-compliant paths.\n\n## Highlights\n\n- Real-time messages, edits, deletes, reactions, typing indicators\n- Inline images (kitty graphics \u002F sixel \u002F half-block fallback) with full-screen preview\n- Threads side panel + a workspace-wide threads view\n- Smart paste: clipboard images, file paths, or text — multiple attachments + caption in one send\n- Slack-native sidebar sections, kept live; or glob-based config sections\n- Browser-cookie auth (`xoxc` + `d`) — no Slack App required\n- Vim-style modal keybindings, fuzzy channel finder, workspace picker\n- 36 themes + drop-in custom themes, live theme switcher\n- OS desktop notifications on DMs, mentions, and configurable keywords\n\nFull feature breakdown: **[[Features|https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FFeatures]]**\n\n## Quick install\n\n**Homebrew** (macOS and Linux):\n\n```bash\nbrew install gammons\u002Ftap\u002Fslk\n```\n\n**Linux\u002FmacOS tarball** (auto-resolves the latest version):\n\n```bash\nVERSION=$(curl -fsSL https:\u002F\u002Fapi.github.com\u002Frepos\u002Fgammons\u002Fslk\u002Freleases\u002Flatest | grep -oE '\"tag_name\": *\"v[^\"]+\"' | grep -oE 'v[0-9]+\\.[0-9]+\\.[0-9]+' | sed 's\u002F^v\u002F\u002F')\n# Linux x86_64\ncurl -fsSL \"https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Freleases\u002Flatest\u002Fdownload\u002Fslk_${VERSION}_linux_x86_64.tar.gz\" | tar xz\n# macOS Apple Silicon\ncurl -fsSL \"https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Freleases\u002Flatest\u002Fdownload\u002Fslk_${VERSION}_darwin_arm64.tar.gz\" | tar xz\nsudo mv slk \u002Fusr\u002Flocal\u002Fbin\u002F\n```\n\n**Go:**\n\n```bash\ngo install github.com\u002Fgammons\u002Fslk\u002Fcmd\u002Fslk@latest\n```\n\nFor `.deb` \u002F `.rpm` \u002F `.apk` packages, Windows, build-from-source, and checksums, see the [Installation wiki page](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FInstallation).\n\n## Setup\n\nslk uses your existing browser session. Grab your `xoxc` token and `d`\ncookie from DevTools, then:\n\n```bash\nslk --add-workspace\n```\n\nFull walkthrough: [Setup wiki page](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FSetup).\n\n## Enterprise Grid\n\nslk authenticates via the same `xoxc` browser session token and `d`\ncookie that `app.slack.com` uses. Every outbound request to `*.slack.com`\nis decorated with browser-like headers (`User-Agent`, `Origin`,\n`Referer`, `Sec-Fetch-*`) so Slack's anomaly detectors should treat the\ntraffic the same way they treat the browser tab the token was extracted\nfrom.\n\nThis is best-effort mitigation, not a contract. Your IT policy may still\nflag slk regardless. If you're on Enterprise Grid and slk signs you out\nor triggers a security email after login, please file an issue with:\n\n1. The exact email or notification text Slack sent.\n2. Whether you got logged out of *all* sessions or only slk's.\n3. The output of `slk --version`.\n\nSee [#5](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fissues\u002F5) for history.\n\n## Inline images in tmux\n\nIf you run `slk` inside tmux on a Kitty-capable terminal (Kitty, Ghostty,\nWezTerm), images render natively as long as tmux passthrough is enabled:\n\n```tmux\nset -g allow-passthrough on\n```\n\nReload tmux for the setting to take effect (`tmux kill-server`, then\nreattach). Verify with:\n\n```bash\ntmux show -gv allow-passthrough\n```\n\nExpected output: `on` (or `all`).\n\nIf passthrough is off, `slk` detects this at startup and falls back to\nhalf-block rendering automatically — no config change needed. To force a\nspecific renderer regardless of detection, set `image_protocol` in\n`config.toml` to `kitty`, `sixel`, `halfblock`, or `off`.\n\n## Unread indicator in tmux\n\n`slk` sets the terminal window title to reflect unread state — for\nexample `slk SW (3) +1` means three channels-with-unreads in the active\nworkspace and at least one other workspace also has unreads. The\ntwo-letter prefix is the active workspace's initials (matching the\nleft-rail label).\n\nOutside tmux this just works — modern terminals (Kitty, WezTerm,\nAlacritty, Ghostty, iTerm2, Windows Terminal, gnome-terminal) render\ntitle changes in their tab\u002Fwindow chrome.\n\nInside tmux there's an extra step. tmux intercepts the title escape\nfrom slk, and only re-emits it to the outer terminal when title\nforwarding is on, *and* it uses its own title template by default\n(`#W` = window name) rather than the pane's title. Add both lines to\n`~\u002F.tmux.conf`:\n\n```tmux\nset -g set-titles on\nset -g set-titles-string '#T'\n```\n\n`#T` (active pane title) is what carries slk's string. Reload tmux for\nthe setting to take effect (`tmux kill-server`, then reattach). Verify\nwith:\n\n```bash\ntmux show -gv set-titles\ntmux show -gv set-titles-string\n```\n\nExpected output: `on` and `#T`.\n\nIf you'd prefer slk's unread indicator to work in tmux without any\nconfig change at all, that's tracked as a follow-up — it requires\npassing the title escape through tmux's DCS passthrough rather than\nrelying on `set-titles`. Not in this release.\n\n## Debugging\n\nSet `SLK_DEBUG=1` to enable a comprehensive debug log written to\n`slk-debug.log` in the current working directory. The file is\n**truncated each run**, so reproduce the issue, quit slk, then copy\nthe file before relaunching. Log lines are categorized\n(`[cache]`, `[imgfetch]`, `[imgrender]`, `[ws]`, `[general]`) so\n`grep '\\[cache\\]' slk-debug.log` slices to one focus area.\n\n## Documentation\n\nEverything lives in the [**wiki**](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki):\n\n- [Installation](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FInstallation) — prebuilt binaries, Go install, build from source\n- [Setup](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FSetup) — token extraction, adding workspaces\n- [Features](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FFeatures) — full feature breakdown\n- [Keybindings](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FKeybindings) — every key, every mode\n- [Configuration](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FConfiguration) — `config.toml`, custom themes, XDG paths\n- [Terminal Compatibility](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FTerminal-Compatibility) — what each terminal supports\n- [Clipboard and OSC 52](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FClipboard-and-OSC-52) — copy\u002Fpaste setup notes\n- [Tradeoffs and Non-Goals](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FTradeoffs-and-Non-Goals) — roadmap, caveats, TOS notice\n- [Architecture](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FArchitecture) — service layout, data layer\n\n## Disclaimer\n\n`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.\n\nslk 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](https:\u002F\u002Fgithub.com\u002Fgammons\u002Fslk\u002Fwiki\u002FTradeoffs-and-Non-Goals#unofficial--tos-caveat) for details.\n\n## License\n\n[MIT](LICENSE) © Grant Ammons\n","slk 是一个基于文本用户界面的快速 Slack 客户端。它使用 Go 语言开发，结合了 bubbletea 和 lipgloss 库，提供毫秒级冷启动速度、SQLite 支持的消息滚动回溯以及实时 WebSocket 通信等核心功能。此外，它体积小巧（约19MB），支持多工作区并行连接，并且具有丰富的键盘操作和36种内置主题。该工具非常适合那些追求高效、轻量级即时通讯体验的开发者或团队，尤其适合需要频繁切换多个 Slack 工作区的用户。","2026-06-11 03:05:14","CREATED_QUERY"]