Sem descrição

claude 24b7de1700 feat(ui/chat): add reactions, search, threads, user info, command mode, and cleanup há 1 mês atrás
.github 2a99ad6241 fix: implement low-risk security, quality, and infra fixes from audit há 1 mês atrás
cmd 2a99ad6241 fix: implement low-risk security, quality, and infra fixes from audit há 1 mês atrás
internal 24b7de1700 feat(ui/chat): add reactions, search, threads, user info, command mode, and cleanup há 1 mês atrás
research 773cae60bf docs: mark resolved audit findings in research files and update CLAUDE.md há 1 mês atrás
.gitignore e976dc6537 refactor: unexport local symbols há 11 meses atrás
CLAUDE.md 24b7de1700 feat(ui/chat): add reactions, search, threads, user info, command mode, and cleanup há 1 mês atrás
LICENSE 51fa556cd4 SWITCH TO A SUPERIOR LICENSE há 1 ano atrás
README.md 2a99ad6241 fix: implement low-risk security, quality, and infra fixes from audit há 1 mês atrás
go.mod 24b7de1700 feat(ui/chat): add reactions, search, threads, user info, command mode, and cleanup há 1 mês atrás
go.sum 24b7de1700 feat(ui/chat): add reactions, search, threads, user info, command mode, and cleanup há 1 mês atrás
images.plan 9ab7409dde feat(ui/chat): add image viewing with configurable viewer and save keybind há 1 mês atrás
main.go c8790a63d1 refactor(cmd): replace cobra with stdlib flag há 4 meses atrás

README.md

Discordo Plus

A fork of discordo — a lightweight Discord terminal client — with image viewing, save support, and security hardening.

Changes from upstream

  • Image viewer: Opens image attachments (jpeg, png, webp, gif) in a configurable viewer (mpv by default) instead of the browser. On X11, auto-detects terminal window geometry so the viewer opens at the same position and size
  • Save image: S keybind saves the selected message's image attachment to a configurable directory
  • Attachment URL fix: Links no longer break due to bad newline handling
  • Tooltip: o open appears in the bottom help bar when a message has attachments or URLs
  • Guild state persistence: Remembers which guilds are expanded/collapsed between sessions (saved to ~/.cache/discordo/state.json)
  • Focus on channel select: When AutoFocus is enabled, selecting a channel focuses the messages list instead of the message input
  • Security hardening: Path traversal prevention on attachment filenames, HTTPS-only downloads with size limits, restrictive file permissions (0700/0600), image viewer validation, atomic state file writes, environment token warning

Building on Arch Linux

Requirements

sudo pacman -S go mpv xdotool wl-clipboard
  • go — Go compiler (1.26+)
  • mpv — media player used as image viewer (supports jpeg/png/webp/gif with animation)
  • xdotool — used to detect terminal window geometry on X11 (optional, image viewer still works without it)
  • wl-clipboard — clipboard support on Wayland (skip if using X11)

Build and install

git clone https://gogs.altsol.dev/claude/discordo-plus.git
cd discordo-plus
go build -o discordo-plus .
sudo install -Dm755 discordo-plus /usr/local/bin/discordo-plus

Run

discordo-plus

On first launch, enter your Discord token or scan the QR code to log in.

Configuration

Config file location: ~/.config/discordo/config.toml

The default config is used if no file exists. See the default config for all options.

Image-related settings

# External image viewer (must accept a file path as first argument)
# When set to "mpv", auto-adds --geometry, --force-window, --loop-file flags
# Set to "default" to use xdg-open
image_viewer = "mpv"

# Directory for saved images (supports ~/, empty = current directory)
image_save_dir = "~/Pictures/discordo"

[keybinds.messages_list]
# Open attachments/links from selected message
open = "o"
# Save image attachment from selected message
save_image = "S"

Notes

  • On X11, xdotool is used to detect terminal geometry so mpv opens at the same position and size as your terminal. Without xdotool, mpv opens at its default position.
  • On Wayland, xdotool doesn't work — use compositor window rules instead (e.g., sway: for_window [app_id="mpv"] floating enable, move position center)
  • Alternative viewers: imv, nsxiv, feh — set via image_viewer in config. Geometry detection only applies to mpv.

Usage

Token (UI, recommended)

  1. Run the discordo executable with no arguments.

  2. Enter your token and click on the "Login" button to save it.

Token (environment variable)

Set the value of the DISCORDO_TOKEN environment variable to the authentication token to log in with.

[!WARNING] Environment variables are visible to all processes running as the same user (via /proc/PID/environ on Linux). Prefer the keyring for interactive use. Only use DISCORDO_TOKEN in controlled environments (e.g., systemd units with protected EnvironmentFile=).

DISCORDO_TOKEN="your-token-here" discordo-plus

QR (UI)

  1. Run the discordo executable with no arguments.

  2. Click on the "Login with QR" button.

  3. Follow the instructions in the QR Login screen.

Configuration

The configuration file allows you to configure and customize the behavior, keybindings, and theme of the application.

  • Unix: $XDG_CONFIG_HOME/discordo/config.toml or $HOME/.config/discordo/config.toml
  • Darwin: $HOME/Library/Application Support/discordo/config.toml
  • Windows: %AppData%/discordo/config.toml

Discordo uses the default configuration if a configuration file is not found in the aforementioned path; however, the default configuration file is not written to the path. The default configuration can be found here.

[!IMPORTANT] Automated user accounts or "self-bots" are against Discord's Terms of Service. I am not responsible for any loss caused by using "self-bots" or Discordo.

License

Copyright (C) 2025-present ayn2op

This project is licensed under the GNU General Public License v3.0 (GPL-3.0). See the LICENSE file for the full license text.