Skip to main content

Korvus AI popup: выделенный текст → Claude, OpenAI, локальные модели. Трей, стриминг, два языка.

Project description

kortalk

Korvus AI popup — приложение семейства korvus (korserver, korctl, kortalk). AI-popup для выделенного текста в духе Crow Translate: выделили текст мышью → нажали хоткей → у курсора всплыло окошко с ответом ИИ. Живёт в трее, стримит ответы, поддерживает несколько провайдеров.

Возможности

  • Popup у курсора — скруглённые углы, Markdown-рендер ответа с подсветкой блоков кода, стриминг токенов в реальном времени, выделение/копирование текста. Закрывается по клику за пределами окна или Escape.
  • Окно в два столбца — редактируемый промпт+текст слева, ответ справа, выбор провайдера на панели, Ctrl+Enter для отправки.
  • Трей — приложение резидентно: монохромный ворон (Corvus — символ korvus), ЛКМ = popup с выделением, меню с библиотекой промптов, окном, настройками и выходом.
  • Глобальные хоткеи внутри приложения — назначаются в настройках (по умолчанию Ctrl+Alt+C popup, Ctrl+Alt+W окно). X11 — прямой перехват XGrabKey, Wayland — системный портал GlobalShortcuts. Никаких внешних утилит и настройки DE не требуется.
  • Библиотека промптов — несколько именованных промптов в настройках; промпт по умолчанию для хоткея, любой другой — из подменю трея.
  • Провайдеры ИИ:
    • Claude Code CLI — через claude -p, без API-ключа (по умолчанию);
    • Anthropic API — официальный SDK, стриминг (нужен API-ключ);
    • OpenAI-совместимые API — OpenAI, Ollama, LM Studio, OpenRouter, Groq, DeepSeek и любой другой сервис с /chat/completions (настраивается base URL + модель + ключ, для локальных серверов ключ не нужен).
  • Графические настройки — промпты, клавиши, тема, шрифт, размеры popup, таймауты, менеджер провайдеров с ключами, автозапуск при входе. Конфиг — человекочитаемый YAML (~/.config/kortalk/config.yaml).
  • Тема и шрифты — по умолчанию следует теме окружения (Qt), опционально Nord Dark / Nord Light.
  • Два языка интерфейса — английский (по умолчанию) и русский: Настройки → Общие → Language.
  • PRIMARY-выделение читается нативно через Qt — xclip/xsel/wl-clipboard больше не нужны. Работает на X11 и Wayland.

Установка

pipx install kortalk
kortalk --check     # диагностика: провайдеры, трей, PRIMARY-выделение

Никаких системных пакетов и флагов вроде --system-site-packages не требуется — Qt (PySide6) ставится из PyPI. Единственная внешняя зависимость — Claude Code CLI, и только если используете провайдер claude-cli.

Конфиг хранится в ~/.config/kortalk/config.yaml и редактируется через настройки (или руками). Конфиги прежних версий (toml/ini) не используются.

Использование

kortalk                       # запустить демона (трей + хоткеи)
kortalk --popup               # popup у курсора (для скриптов/сторонних хоткеев)
kortalk "Переведи на английский:"   # popup с разовым промптом
kortalk --window              # окно в два столбца (алиас: --split)
kortalk --provider ollama     # разовый запрос через конкретный провайдер
kortalk --settings            # настройки
kortalk --quit                # завершить работающий экземпляр
kortalk --check               # диагностика

Основной сценарий: kortalk запускает демона, дальше всё делается из трея и по глобальным хоткеям. CLI-флаги оставлены для скриптов — они мгновенно доставляются работающему экземпляру через локальный сокет.

Текст берётся из PRIMARY selection — достаточно выделить его мышью, Ctrl+C не нужен.

Хоткеи

Назначаются в Настройки → Клавиши, работают глобально:

  • X11 — приложение перехватывает клавиши напрямую (XGrabKey), работает в любом WM/DE без настройки.
  • Wayland — используется XDG Desktop Portal (GlobalShortcuts); GNOME/KDE покажут диалог подтверждения биндинга. Если портал недоступен (минималистичные композиторы) — пользуйтесь треем или повесьте kortalk --popup на хоткей средствами композитора.

Настройка провайдеров

kortalk --settings → вкладка «Провайдеры». Примеры:

Провайдер Тип Base URL Модель
Claude Code CLI claude-cli (пусто = дефолт CLI)
Anthropic API anthropic claude-opus-4-8
OpenAI openai https://api.openai.com/v1 gpt-4o
Ollama openai http://localhost:11434/v1 llama3, qwen3, …
LM Studio openai http://localhost:1234/v1 имя загруженной модели
OpenRouter openai https://openrouter.ai/api/v1 любой из каталога

«Активный провайдер» используется по умолчанию для popup; в окне провайдер выбирается в выпадающем списке, разово — флагом --provider <id>.

Автозапуск

Настройки → Общие → «Запускать при входе в систему» — создаёт ~/.config/autostart/kortalk.desktop с командой kortalk.

Разработка

python3 -m venv .venv && .venv/bin/pip install -e .
QT_QPA_PLATFORM=offscreen .venv/bin/kortalk --check   # headless-проверка

Структура: src/kortalk/app.py (CLI, трей, IPC), providers.py (воркеры ИИ), hotkeys.py (XGrabKey / портал), windows.py (popup и главное окно), settings_dialog.py, config.py, theme.py.

Лицензия

MIT, см. LICENSE.

Разработка

git clone https://github.com/r4ven-me/kortalk && cd kortalk
python -m venv .venv && . .venv/bin/activate
pip install -e '.[test]' ruff
ruff check .                        # линтер
QT_QPA_PLATFORM=offscreen pytest    # тесты (headless)

Логи работающего приложения: ~/.local/state/kortalk/kortalk.log (подробный вывод — флаг --debug).

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

kortalk-0.4.0.tar.gz (37.4 kB view details)

Uploaded Source

Built Distribution

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

kortalk-0.4.0-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file kortalk-0.4.0.tar.gz.

File metadata

  • Download URL: kortalk-0.4.0.tar.gz
  • Upload date:
  • Size: 37.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kortalk-0.4.0.tar.gz
Algorithm Hash digest
SHA256 05f00c5bcc47301206bc97b494c23259c4cb9254900f469265f8bd22f2fcb490
MD5 7e599ea6c7c97ca4eb5bd15c20611478
BLAKE2b-256 1716ed7af06501ec3975fdcda76252db28df13c66532db7e9804bddda4bd7559

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortalk-0.4.0.tar.gz:

Publisher: publish.yml on r4ven-me/kortalk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kortalk-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: kortalk-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kortalk-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b189d2af4e8ec8f1394843687c22a68ca31a70dd304f58b3c25d58ea3f56a4ac
MD5 d33d526cb0ad331dcfc9a8be1dbaace4
BLAKE2b-256 4a205c649f8deed1d510d56f348f5e124f4d769499df601ebfc668b989e73771

See more details on using hashes here.

Provenance

The following attestation bundles were made for kortalk-0.4.0-py3-none-any.whl:

Publisher: publish.yml on r4ven-me/kortalk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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