From 1bccaad8fd923ea080fa563d531630f7521f3bd3 Mon Sep 17 00:00:00 2001 From: Hykilpikonna Date: Tue, 22 Nov 2022 14:59:46 -0500 Subject: [PATCH] [F] Implement os detection in termenv https://github.com/hykilpikonna/hyfetch/issues/16 --- hyfetch/main.py | 8 +++----- hyfetch/termenv.py | 21 +++++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/hyfetch/main.py b/hyfetch/main.py index 8bfa8c4e..f0136ac9 100755 --- a/hyfetch/main.py +++ b/hyfetch/main.py @@ -9,6 +9,7 @@ from itertools import permutations from math import ceil from typing import Iterable +from . import termenv from .color_scale import Scale from .color_util import printc, clear_screen from .constants import * @@ -86,11 +87,8 @@ def create_config() -> Config: :return: Config object (automatically stored) """ # Detect terminal environment (doesn't work on Windows) - det_bg, det_ansi = None, None - if platform.system() != 'Windows': - from . import termenv - det_bg = termenv.get_background_color() - det_ansi = termenv.detect_ansi_mode() + det_bg = termenv.get_background_color() + det_ansi = termenv.detect_ansi_mode() asc = get_distro_ascii() asc_width, asc_lines = ascii_size(asc) diff --git a/hyfetch/termenv.py b/hyfetch/termenv.py index 34620355..b91bfcc4 100644 --- a/hyfetch/termenv.py +++ b/hyfetch/termenv.py @@ -2,11 +2,7 @@ from __future__ import annotations import os import platform -import signal import sys -import termios -import tty -from select import select from .color_util import RGB, AnsiMode @@ -91,6 +87,11 @@ def detect_ansi_mode() -> AnsiMode | None: def unix_read_osc(seq: int) -> str: + import termios + import tty + import signal + from select import select + # screen/tmux can't support OSC, because they can be connected to multiple # terminals concurrently. term = os.environ.get('TERM') @@ -155,10 +156,14 @@ def unix_read_osc(seq: int) -> str: def get_background_color() -> RGB | None: - try: - osc = unix_read_osc(11).lstrip("rgb:") - return RGB.from_hex(''.join([v[:2] for v in osc.split('/')])) - except Exception: + system = platform.system().lower() + if system.startswith("linux") or system.startswith("darwin"): + try: + osc = unix_read_osc(11).lstrip("rgb:") + return RGB.from_hex(''.join([v[:2] for v in osc.split('/')])) + except Exception: + return None + if system.startswith("windows"): return None