Skip to main content

Terminal client for skych.at

Project description

skychat-tui

  ___________           _________ .__            __      ____/\__ __   
 /   _____/  | _____.__.\\_   ___ \|  |__ _____ _/  |_   /   / /_/ \ \ 
 \_____  \|  |/ <   |  |/    \  \/|  |  \__  \\   __\  \__/ / \   \ \
 /        \    < \___  |\     \___|   Y  \/ __ \|  |    / / /   \  / /
/_______  /__|_ \/ ____| \______  /___|  (____  /__|   /_/ /__  / /_/ 
        \/     \/\/             \/     \/     \/         \/   \/      

a terminal chat client for skych.at. no electron. no browser. just vibes and escape codes.

WTFPL


install

pip install .

with inline image preview (Kitty / Sixel):

pip install ".[images]"

or dev mode (edits take effect immediately):

pip install -e .
pip install -e ".[images]"   # dev + image preview

usage

skychat                      # login screen
skychat username password    # skip the formalities
skychat --debug              # write crashes to /tmp/skychat_crash.log

Override the server URL:

SKYCHAT_URL=wss://localhost:8080/api/ws skychat

layout

┌──────────┬─────────────────────────┬──────────┐
│ Channels │      Chat messages      │  Users   │
│          ├─────────────────────────┤          │
│          │    Input box            │          │
└──────────┴─────────────────────────┴──────────┘

Tab cycles focus between panels. The active panel gets a in its title.

keys

navigation

Key Action
Tab / Shift+Tab Cycle focus: Input → Rooms → Users → Input
/ (Rooms) Move room cursor
Enter (Rooms) Join selected room
Backspace (Rooms) Leave selected DM / private room
/ (Users) Move user cursor
Enter (Users) Open DM with selected user

messages (Input focus)

Key Action
/ Enter scroll mode / move message selection
Shift+↑ Scroll up 5 messages
Shift+↓ Snap back to bottom
Space (scrolled) Quote selected message — prefills @<id> in input
e (scrolled) Edit selected message (yours only)
Backspace (scrolled) Delete selected message (yours only)
< / > (scrolled) Cycle between URLs/buttons in selected message
o (scrolled) Open focused URL / activate button
Esc Close image preview (if open), otherwise open/close menu

input editing

Key Action
/ Move cursor
Home / End Jump to start/end
Backspace / Del Delete character
Enter Send message
Alt+Enter / Shift+Enter New line (multi-line message)

image preview

Hover over an image URL in scroll mode and a preview popup appears automatically. Kitty and sixel render full colour pixels; libcaca falls back to coloured ASCII art.

Key Action
H / Esc Hide popup (suppressed until focus moves to a different URL)
O Open image URL with configured URL opener
< / > Cycle to prev/next link in the message

slash commands

Command Action
/quit get out
/join <id> join room by ID
/rooms list rooms in the status bar
/who list online users in the status bar
/history fetch older message history

menu

Esc opens the menu (when no image preview is open). / to navigate, Enter to select.

Item Action
Cycle theme Dracula → Nord → Gruvbox → Solarized Dark → Tokyo Night → Monokai
Toggle notifications desktop notifications + terminal bell
Image Preview toggle inline image preview
Open URLs with cycle between available URL openers (xdg-open, browsh, w3m)
Pick color set your username color
Logout nuke saved token and exit
Quit exit without clearing token

config

Stored in ~/.config/skychat/ (respects $XDG_CONFIG_HOME):

File Contents
config.json all settings (theme, notifications, etc.)
token.json saved auth token — chmod 0o600, separate from other settings

Both files are created with 0o600 permissions. The directory is 0o700. If ~/.skychat_tui.json exists from an older version it is migrated automatically on first run and then deleted.

Key Default Description
username pre-fills the login screen
theme Dracula active color theme
notifications true desktop notifications
image_preview true inline image preview
url_opener xdg-open URL opener (xdg-open, browsh, or w3m)

requirements

  • Python 3.10+
  • websockets
  • a terminal with 256-colour support

optional — image preview

auto-detected at startup, fails gracefully if nothing's available:

Method Requirements Notes
Kitty Pillow + kitty terminal best quality, no flicker
Sixel Pillow + sixel terminal (foot, iTerm2, mlterm) good quality, minor flicker
libcaca img2txt or python-caca coloured ASCII art, works anywhere

Install Pillow via the images extra:

pip install ".[images]"         # from source
pip install "skychat-tui[images]"  # from PyPI

libcaca is a system package and is detected separately at runtime:

# Debian/Ubuntu
sudo apt install libcaca-utils

# Arch
sudo pacman -S libcaca

# macOS
brew install libcaca

optional — URL openers

auto-detected at startup, xdg-open always available as fallback:

Opener Notes
xdg-open default — opens in your configured desktop browser
browsh full graphical browser rendered in the terminal
w3m lightweight terminal browser, good for text-heavy pages
# browsh — see https://www.brow.sh/
# w3m
sudo apt install w3m   # Debian/Ubuntu
sudo pacman -S w3m     # Arch
brew install w3m       # macOS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skychat_tui-0.1.0.tar.gz (57.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skychat_tui-0.1.0-py3-none-any.whl (59.7 kB view details)

Uploaded Python 3

File details

Details for the file skychat_tui-0.1.0.tar.gz.

File metadata

  • Download URL: skychat_tui-0.1.0.tar.gz
  • Upload date:
  • Size: 57.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for skychat_tui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e5d7dec5901c89b30e94f6f0d66c0a5b10f47cdde4611c3ecc1dca7f3ab19def
MD5 1d9954241ef3efac67884c8898504c4d
BLAKE2b-256 42d49d0bafa92e5548b21b2f64de92b2c554b26186de73ab67592ce98b456801

See more details on using hashes here.

File details

Details for the file skychat_tui-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: skychat_tui-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 59.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for skychat_tui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ef29270e9966591fb12a67b5301835c1486d47073db839fd2b0bf9ba061aabe
MD5 55aa03924668a919154b55a542289bab
BLAKE2b-256 c7a44872b4f338244ef5449cb0ffa996deb399a86ddf2364440ee6c35b22f330

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page