23 lines
765 B
Python
23 lines
765 B
Python
"""OSC 8 file links, with plain paths for unsupported or redirected consoles."""
|
|
import os
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
|
|
def file_link(path, mode="auto", stream=None):
|
|
target = Path(path).resolve()
|
|
stream = sys.stdout if stream is None else stream
|
|
supported = (
|
|
stream.isatty()
|
|
and os.environ.get("TERM") != "dumb"
|
|
and (
|
|
os.environ.get("WT_SESSION")
|
|
or os.environ.get("TERM_PROGRAM") in {"vscode", "iTerm.app", "WezTerm", "ghostty"}
|
|
or os.environ.get("VTE_VERSION")
|
|
or os.environ.get("KONSOLE_VERSION")
|
|
)
|
|
)
|
|
if mode == "always" or (mode == "auto" and supported):
|
|
return f"\033]8;;{target.as_uri()}\033\\{target}\033]8;;\033\\"
|
|
return str(target)
|