Skip to content

Add native Konsole support (fork with wrightty built-in) #6

Description

@moejay

Summary

Fork Konsole to add native wrightty protocol support, similar to the Alacritty fork.

Why fork instead of bridge

Konsole's D-Bus interface can send input and manage sessions, but cannot read screen content — no D-Bus method exposes the terminal buffer. Additionally, the sendText and runCommand D-Bus methods have been flagged as security concerns and may be restricted in future releases.

A native fork embeds the wrightty protocol directly into the emulator, reading from the internal VTE/terminal state with zero overhead.

What native support provides

Full wrightty protocol support:

  • All Screen methods (getText, getContents, getScrollback, screenshot, waitForText, waitForCursor)
  • All Input methods (sendKeys, sendText, sendMouse)
  • All Session methods (using Konsole's native tab/split model)
  • All Terminal methods (resize, getSize, setColorPalette, getModes)
  • All Events (screen updates, shell integration, title changes, etc.)

Implementation approach

  1. Fork Konsole
  2. Add a WebSocket server (port 9420) behind a --wrightty flag or config option
  3. Wire JSON-RPC handlers to Konsole's internal terminal state
  4. Expose the same protocol as the Alacritty fork

Konsole internals (relevant)

  • Written in C++ / Qt / KDE Frameworks
  • Terminal emulation via Emulation and Screen classes (KDE's own VTE, not GNOME VTE)
  • TerminalDisplay handles rendering
  • Session class manages PTY + emulation — maps to wrightty sessions
  • Profile system for terminal configuration
  • Supports splits and tabs natively

KDE ecosystem consideration

Konsole is a core KDE application. A fork would need to track upstream releases. Alternatively, the wrightty integration could be proposed as an upstream feature behind a build flag.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions