Skip to content

dbirks/slack-emoji-typer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

slack-emoji-typer

slack-emoji-typer demo

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

  • πŸš€ 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

Quick Start

  1. Download the latest binary for your platform from Releases
  2. Get your Slack cookie (see Authentication below)
  3. Run the tool with a Slack message URL:
slack-emoji-typer "https://yourworkspace.slack.com/archives/C12345678/p1672534987000200"

Installation

Download Binary

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-*

Build from Source

Requirements: Deno

deno task build

Authentication

You need a Slack session cookie to use this tool. The cookie should start with xoxd-.

Set Environment Variable

export SLACK_API_COOKIE="xoxd-your-cookie-here"

Getting Your Slack Cookie

  1. Open your Slack workspace in a web browser
  2. Open Developer Tools (F12)
  3. Go to Application/Storage β†’ Cookies
  4. Find the cookie named d and copy its value
  5. The cookie value starts with xoxd-

Usage

Basic Usage

slack-emoji-typer https://yourworkspace.slack.com/archives/C12345678/p1672534987000200

Getting a Slack message URL: Right-click on any Slack message and select "Copy link", then use the copied URL with this tool.

Controls

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

Color Modes

  • White: Uses :alphabet-white-a:, :alphabet-white-b:, etc.
  • Orange: Uses :alphabet-yellow-a:, :alphabet-yellow-b:, etc.

Technology Stack

This project leverages modern web technologies adapted for the command line:

Core Runtime

  • 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

User Interface

  • 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

Development

Prerequisites

  • Deno 2.x
  • A Slack workspace with alphabet emoji packs (any Slack workspace I believe)

Available Commands

# 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 lint

Project Structure

slack-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

Release Process

This project uses automated releases via GitHub Actions:

  1. Commit changes using Conventional Commits
  2. Push/merge to main branch
  3. Release Please will create a PR with version bump and changelog
  4. Merge the PR to trigger automatic binary builds and a GitHub Release

Changelog

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.

About

A command-line tool giving the ability to type out alphabet emojis on a Slack message

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •