mirror of
https://github.com/paradoxxxzero/butterfly.git
synced 2024-12-22 12:18:29 +00:00
71 lines
1.4 KiB
Python
71 lines
1.4 KiB
Python
import sys
|
|
import termios
|
|
import tty
|
|
from contextlib import contextmanager
|
|
|
|
from butterfly.utils import ansi_colors as colors # noqa: F401
|
|
|
|
|
|
@contextmanager
|
|
def html():
|
|
sys.stdout.write('\x1bP;HTML|')
|
|
yield
|
|
sys.stdout.write('\x1bP')
|
|
sys.stdout.flush()
|
|
|
|
|
|
@contextmanager
|
|
def image(mime='image'):
|
|
sys.stdout.write('\x1bP;IMAGE|%s;' % mime)
|
|
yield
|
|
sys.stdout.write('\x1bP\n')
|
|
sys.stdout.flush()
|
|
|
|
|
|
@contextmanager
|
|
def prompt():
|
|
sys.stdout.write('\x1bP;PROMPT|')
|
|
yield
|
|
sys.stdout.write('\x1bP')
|
|
sys.stdout.flush()
|
|
|
|
|
|
@contextmanager
|
|
def text():
|
|
sys.stdout.write('\x1bP;TEXT|')
|
|
yield
|
|
sys.stdout.write('\x1bP')
|
|
sys.stdout.flush()
|
|
|
|
|
|
def geolocation():
|
|
sys.stdout.write('\x1b[?99n')
|
|
sys.stdout.flush()
|
|
|
|
fd = sys.stdin.fileno()
|
|
old_settings = termios.tcgetattr(fd)
|
|
try:
|
|
tty.setraw(sys.stdin.fileno())
|
|
rv = sys.stdin.read(1)
|
|
if rv != '\x1b':
|
|
raise
|
|
rv = sys.stdin.read(1)
|
|
if rv != '[':
|
|
raise
|
|
rv = sys.stdin.read(1)
|
|
if rv != '?':
|
|
raise
|
|
|
|
loc = ''
|
|
while rv != 'R':
|
|
rv = sys.stdin.read(1)
|
|
if rv != 'R':
|
|
loc += rv
|
|
except Exception:
|
|
return
|
|
finally:
|
|
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
|
|
if not loc or ';' not in loc:
|
|
return
|
|
return tuple(map(float, loc.split(';')))
|