Have you ever wanted to be annoying in Slack and spell out whole words using the alphabet emojis, but found it too tiresome to click through the emoji menus over and over? Oh wait, never? π
Introducing: πΊ slack-emoji-typer πΊ
Now you can type letters on your keyboard to instantly add alphabet emojis to
any Slack message. You can also use Backspace to remove emoji, and use
Shift + Tab to cycle through white and orange letters. Such a time saver!
- Table of Contents
- Features
- Quick Start
- Installation
- Authentication
- Usage
- Technology Stack
- Development
- Release Process
- Changelog
- π Interactive typing: Type letters to add emoji reactions in real-time
- π¨ Multiple emoji styles: Switch between white and orange letter emojis
- β¨οΈ Intuitive controls: Backspace to undo, Shift+Tab to toggle styles
- π¦ Single binary: No dependencies to install, just download and run
- π Cross-platform: Available for Linux, macOS (Intel & Apple Silicon), and Windows
- Download the latest binary for your platform from Releases
- Get your Slack cookie (see Authentication below)
- Run the tool with a Slack message URL:
slack-emoji-typer "https://yourworkspace.slack.com/archives/C12345678/p1672534987000200"Download the appropriate binary for your platform from the Releases page:
- Linux:
slack-emoji-typer-linux - macOS (Intel):
slack-emoji-typer-macos - macOS (Apple Silicon):
slack-emoji-typer-macos-arm64 - Windows:
slack-emoji-typer-windows.exe
Make it executable:
chmod +x slack-emoji-typer-*Requirements: Deno
deno task buildYou need a Slack session cookie to use this tool. The cookie should start with
xoxd-.
export SLACK_API_COOKIE="xoxd-your-cookie-here"- Open your Slack workspace in a web browser
- Open Developer Tools (F12)
- Go to Application/Storage β Cookies
- Find the cookie named
dand copy its value - The cookie value starts with
xoxd-
slack-emoji-typer https://yourworkspace.slack.com/archives/C12345678/p1672534987000200Getting a Slack message URL: Right-click on any Slack message and select "Copy link", then use the copied URL with this tool.
Once the interactive mode starts:
- Letter keys (A-Z): Add corresponding emoji reactions
- Symbol keys (@!?#): Add corresponding symbol emoji reactions
- Backspace: Remove the last emoji reaction
- Shift+Tab: Toggle emoji color mode (White β Orange)
- Esc: Exit the application
- White: Uses
:alphabet-white-a:,:alphabet-white-b:, etc. - Orange: Uses
:alphabet-yellow-a:,:alphabet-yellow-b:, etc.
This project leverages modern web technologies adapted for the command line:
- Deno - Modern JavaScript/TypeScript runtime with built-in security, native TypeScript support, and comprehensive toolchain (linter, formatter, test runner)
- TypeScript - Type-safe development with zero configuration needed
- React - Component-based UI architecture using familiar hooks and patterns
- Ink - React renderer for terminal interfaces, enabling rich CLI experiences with Flexbox layouts and CSS-like styling
- Deno 2.x
- A Slack workspace with alphabet emoji packs (any Slack workspace I believe)
# Run in development mode with a Slack message URL
deno task dev https://your-slack-message-url
# Build the project (creates binary)
deno task build
# Format code with Deno's built-in formatter
deno task fmt
# Lint code
deno lintslack-emoji-typer/
βββ main.ts # Root CLI entry point
βββ CHANGELOG.md # Version history and release notes
βββ README.md # Project documentation
βββ src/
β βββ main.ts # Core application logic
β βββ lib/ # Business logic layer
β β βββ auth.ts # Cookie-based authentication
β β βββ slack-api.ts # Slack API client & reactions
β β βββ slack-url.ts # URL parsing utilities
β β βββ index.ts # Library exports
β βββ ui/ # React/Ink interface layer
β β βββ app.tsx # Main UI orchestrator
β β βββ components/ # Reusable UI components
β β β βββ MessageDisplay.tsx # Slack message display
β β β βββ InputBox.tsx # Typed input visualization
β β β βββ StatusMessage.tsx # Status & error messages
β β β βββ StatusBar.tsx # Status bar component
β β β βββ HelpText.tsx # Command help display
β β β βββ index.ts # Component exports
β β βββ hooks/ # Custom React hooks
β β βββ useKeyboardHandler.ts # Input event handling
β β βββ useReactionManager.ts # Slack API interactions
β β βββ index.ts # Hook exports
β βββ types/ # TypeScript definitions
β βββ slack.ts # Slack API types
β βββ ui.ts # UI component types
β βββ index.ts # Type exports
βββ deno.json # Deno configuration & tasks
βββ deno.lock # Deno dependency lock file
βββ .github/
βββ workflows/ # CI/CD automation
βββ build-upload.yml # Build and upload binaries
βββ format.yaml # Code formatting checks
βββ release-please.yaml # Automated version management
This project uses automated releases via GitHub Actions:
- Commit changes using Conventional Commits
- Push/merge to main branch
- Release Please will create a PR with version bump and changelog
- Merge the PR to trigger automatic binary builds and a GitHub Release
See CHANGELOG.md for version history.
Note: This tool is unofficial and definitely not affiliated with Slack Technologies. Use responsibly and in accordance with your organization's Slack policies.
