59 lines
1.5 KiB
Python
Executable File
59 lines
1.5 KiB
Python
Executable File
# pyright: reportMissingImports=false
|
|
# from kitty.window import CwdRequest
|
|
import os
|
|
from kitty.boss import get_boss
|
|
from kitty.fast_data_types import Screen, get_options
|
|
from kitty.utils import color_as_int
|
|
from kitty.tab_bar import (
|
|
DrawData,
|
|
ExtraData,
|
|
TabBarData,
|
|
as_rgb,
|
|
)
|
|
|
|
opts = get_options()
|
|
text_fg = as_rgb(color_as_int(opts.foreground))
|
|
icon_fg = as_rgb(color_as_int(opts.color3))
|
|
bg = as_rgb(color_as_int(opts.color8))
|
|
|
|
|
|
def draw(screen: Screen, fg: int, bg: int, text: str) -> None:
|
|
screen.cursor.fg = fg
|
|
screen.cursor.bg = bg
|
|
screen.draw(text)
|
|
|
|
|
|
def draw_tab(
|
|
draw_data: DrawData,
|
|
screen: Screen,
|
|
tab: TabBarData,
|
|
before: int,
|
|
max_title_length: int,
|
|
index: int,
|
|
is_last: bool,
|
|
extra_data: ExtraData,
|
|
) -> int:
|
|
active_window = get_boss().active_window_for_cwd
|
|
# active_dir = CwdRequest(active_window)
|
|
active_pid = active_window.child.pid
|
|
|
|
try:
|
|
with open(f"/tmp/current_venv-{active_pid}", "r") as f:
|
|
env = f.read()
|
|
if env != "":
|
|
env = f"{env}".replace(os.environ.get("HOME", ""), "~")
|
|
else:
|
|
return screen.cursor.x
|
|
except FileNotFoundError:
|
|
return screen.cursor.x
|
|
|
|
screen.cursor.x = screen.columns - len(str(env)) - 5
|
|
|
|
draw(screen, bg, 0, "")
|
|
draw(screen, 0, bg, " ")
|
|
draw(screen, icon_fg, bg, "")
|
|
draw(screen, text_fg, bg, " " + env)
|
|
draw(screen, 0, bg, " ")
|
|
|
|
return screen.cursor.x
|