From 16d0f4b4ab18d53cd165ee4785eebba830496515 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 6 May 2024 12:26:39 +0530 Subject: [PATCH] Wire up the backend --- kittens/choose_fonts/backend.py | 30 ++++++++++++++++++++++++++++++ kittens/choose_fonts/ui.go | 7 +++---- 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 kittens/choose_fonts/backend.py diff --git a/kittens/choose_fonts/backend.py b/kittens/choose_fonts/backend.py new file mode 100644 index 000000000..e9b57c074 --- /dev/null +++ b/kittens/choose_fonts/backend.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# License: GPLv3 Copyright: 2024, Kovid Goyal + +import json +import sys +from typing import Any + +from kitty.fonts.common import get_variable_data_for_descriptor +from kitty.fonts.list import create_family_groups + + +def send_to_kitten(x: Any) -> None: + sys.stdout.buffer.write(json.dumps(x).encode()) + sys.stdout.buffer.write(b'\n') + sys.stdout.buffer.flush() + + +def main() -> None: + for line in sys.stdin.buffer: + cmd = json.loads(line) + action = cmd.get('action', '') + if action == 'list_monospaced_fonts': + send_to_kitten(create_family_groups()) + elif action == 'read_variable_data': + ans = [] + for descriptor in cmd['descriptors']: + ans.append(get_variable_data_for_descriptor(descriptor)) + send_to_kitten(ans) + else: + raise SystemExit(f'Unknown action: {action}') diff --git a/kittens/choose_fonts/ui.go b/kittens/choose_fonts/ui.go index c5f15f496..0fba97d47 100644 --- a/kittens/choose_fonts/ui.go +++ b/kittens/choose_fonts/ui.go @@ -178,7 +178,7 @@ func (h *handler) handle_listing_key_event(event *loop.KeyEvent) (err error) { h.update_family_search() h.draw_screen() } else { - h.lp.Quit(1) + return fmt.Errorf("canceled by user") } return } @@ -241,7 +241,7 @@ func (h *handler) initialize() { h.draw_screen() initialize_variable_data_cache() go func() { - h.set_worker_error(kitty_font_backend.query("list_all_fonts", nil, &h.fonts)) + h.set_worker_error(kitty_font_backend.query("list_monospaced_fonts", nil, &h.fonts)) h.lp.WakeupMainThread() }() } @@ -290,8 +290,7 @@ func (h *handler) on_mouse_event(event *loop.MouseEvent) (err error) { func (h *handler) on_key_event(event *loop.KeyEvent) (err error) { if event.MatchesPressOrRepeat("ctrl+c") { event.Handled = true - h.lp.Quit(1) - return nil + return fmt.Errorf("canceled by user") } switch h.state { case LISTING_FAMILIES: