Wire up the backend

This commit is contained in:
Kovid Goyal
2024-05-06 12:26:39 +05:30
parent 926dfd7ba1
commit d86da0616e
2 changed files with 33 additions and 4 deletions

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env python
# License: GPLv3 Copyright: 2024, Kovid Goyal <kovid at kovidgoyal.net>
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}')

View File

@@ -178,7 +178,7 @@ func (h *handler) handle_listing_key_event(event *loop.KeyEvent) (err error) {
h.update_family_search() h.update_family_search()
h.draw_screen() h.draw_screen()
} else { } else {
h.lp.Quit(1) return fmt.Errorf("canceled by user")
} }
return return
} }
@@ -241,7 +241,7 @@ func (h *handler) initialize() {
h.draw_screen() h.draw_screen()
initialize_variable_data_cache() initialize_variable_data_cache()
go func() { 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() 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) { func (h *handler) on_key_event(event *loop.KeyEvent) (err error) {
if event.MatchesPressOrRepeat("ctrl+c") { if event.MatchesPressOrRepeat("ctrl+c") {
event.Handled = true event.Handled = true
h.lp.Quit(1) return fmt.Errorf("canceled by user")
return nil
} }
switch h.state { switch h.state {
case LISTING_FAMILIES: case LISTING_FAMILIES: