- Wrap addstr newlines in try/except blocks - Prevents crash when writing to window boundary - Info window has scrollok=False, so cursor can't move beyond bounds
QLPyCon - Quake Live Python Console
Terminal-based client for monitoring and controlling Quake Live servers via ZMQ.
Features
- Real-time game monitoring (kills, deaths, medals, team switches)
- Server info display (map, gametype, scores, player list)
- Team-aware colorized chat with location tracking
- Powerup pickup and carrier kill notifications
- JSON event capture for analysis
- Quake color code support (^0-^7)
- Autocomplete for cvars/commands with fuzzy matching
- Intelligent argument suggestions for 25+ commands (bot names, maps, gametypes)
Installation
pip install pyzmq
python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD
Usage
# Basic
python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD
# Verbose logging
python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD -v
# Capture JSON events
python main.py --host tcp://SERVER_IP:PORT --password RCON_PASSWORD --json events.log
Options:
--host URI- ZMQ RCON endpoint (default: tcp://127.0.0.1:27961)--password PASS- RCON password (required)-v/-vv- Verbose (INFO) or debug (DEBUG) logging--json FILE- Log all events as JSON--unknown-log FILE- Log unparsed events (default: unknown_events.log)
Configuration File (Optional):
Create ~/.qlpycon.conf or ./qlpycon.conf:
[connection]
host = tcp://SERVER_IP:PORT
password = your_password
[logging]
level = INFO
Input Features:
- Smart autocomplete - Type commands and see arguments highlighted in real-time
- Argument value suggestions - Intelligent suggestions for bot names, maps, gametypes, teams, etc.
- Tab - Cycle through autocomplete suggestions
- ↑/↓ - Command history navigation
- Argument highlighting - Current argument position shown in reverse video
- Command signatures - Automatic display (e.g.,
addbot <botname> [skill 1-5] [team])
See AUTOCOMPLETE.md for details.
Architecture
main.py - Main loop, argument parsing, signal handling
config.py - Constants (weapons, teams, colors, limits)
state.py - Game state (ServerInfo, PlayerTracker, EventDeduplicator)
network.py - ZMQ connections (RCON DEALER, Stats SUB sockets)
parser.py - JSON event parsing (deaths, medals, switches, stats)
formatter.py - Message formatting, color codes, team prefixes
ui.py - Curses interface (3-panel: info, output, input)
Supported Events: PLAYER_SWITCHTEAM, PLAYER_DEATH/KILL, PLAYER_MEDAL, PLAYER_STATS, MATCH_STARTED/REPORT, PLAYER_CONNECT/DISCONNECT, ROUND_OVER
License
WTFPL
Description
Languages
Python
98.4%
Shell
1.6%