feat(macos): add kitty
This commit is contained in:
54
config/macos/kitty/choose_tab.py
Normal file
54
config/macos/kitty/choose_tab.py
Normal file
@@ -0,0 +1,54 @@
|
||||
# ~/.config/kitty/choose_tab.py
|
||||
from kitty.boss import get_boss
|
||||
from kittens.tui.handler import Handler
|
||||
from kittens.tui.loop import Loop
|
||||
|
||||
|
||||
class TabPicker(Handler):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
boss = get_boss()
|
||||
win = boss.active_window
|
||||
self.osw = win.os_window if win else None
|
||||
self.tabs = list(self.osw.tabs) if self.osw else []
|
||||
self.index = 0
|
||||
|
||||
def draw(self, screen):
|
||||
screen.clear()
|
||||
if not self.tabs:
|
||||
screen.write_line("No tabs. Esc to exit.")
|
||||
else:
|
||||
screen.write_line("Choose a tab (↑/↓ Enter Esc)")
|
||||
for i, t in enumerate(self.tabs):
|
||||
mark = "●" if t is self.osw.active_tab else " "
|
||||
sel = ">" if i == self.index else " "
|
||||
title = t.title or f"Tab {i+1}"
|
||||
screen.write_line(f"{sel} {mark} {title}")
|
||||
screen.refresh()
|
||||
|
||||
def on_key(self, event):
|
||||
if not self.tabs:
|
||||
if event.key in ("escape", "enter"):
|
||||
self.quit_loop()
|
||||
return
|
||||
k = event.key
|
||||
if k in ("up", "k"):
|
||||
self.index = (self.index - 1) % len(self.tabs)
|
||||
elif k in ("down", "j"):
|
||||
self.index = (self.index + 1) % len(self.tabs)
|
||||
elif k == "enter":
|
||||
self.osw.set_active_tab(self.tabs[self.index])
|
||||
self.quit_loop()
|
||||
elif k == "escape":
|
||||
self.quit_loop()
|
||||
self.refresh()
|
||||
|
||||
|
||||
def main(args):
|
||||
# Correct signature for older Kitty: pass the class name and a title string
|
||||
Loop(TabPicker, "choose_tab").run()
|
||||
|
||||
|
||||
def handle_result(args, answer, target_window_id, boss):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user