[+] Lightness config
This commit is contained in:
parent
d1f601048b
commit
7bd96e422f
3 changed files with 54 additions and 21 deletions
|
@ -14,19 +14,17 @@ except Exception:
|
||||||
TERM_LEN = 40
|
TERM_LEN = 40
|
||||||
|
|
||||||
TEST_ASCII = r"""
|
TEST_ASCII = r"""
|
||||||
|\___/|
|
|\___/|
|
||||||
) (
|
) (
|
||||||
=\ /=
|
=\ /=
|
||||||
)===(
|
)===(
|
||||||
/ \
|
/ \
|
||||||
| |
|
| |
|
||||||
/ \
|
/ {txt} \
|
||||||
\ /
|
\ /
|
||||||
/\_/\_ _/_/\_
|
_/\_ _/_/\_
|
||||||
| |( ( | |
|
| |( ( | |
|
||||||
| | ) ) | |
|
| | ) ) | |
|
||||||
| |(_( | |
|
| |(_( | |""".strip('\n')
|
||||||
| | | | |
|
|
||||||
| | | | |""".strip()
|
|
||||||
|
|
||||||
TEST_ASCII_WIDTH = max(len(line) for line in TEST_ASCII.split('\n'))
|
TEST_ASCII_WIDTH = max(len(line) for line in TEST_ASCII.split('\n'))
|
||||||
|
|
|
@ -13,7 +13,7 @@ from typing_extensions import Literal
|
||||||
|
|
||||||
from . import constants
|
from . import constants
|
||||||
from .color_util import AnsiMode, printc, color, clear_screen, RGB
|
from .color_util import AnsiMode, printc, color, clear_screen, RGB
|
||||||
from .constants import CONFIG_PATH, VERSION, TERM_LEN, TEST_ASCII_WIDTH
|
from .constants import CONFIG_PATH, VERSION, TERM_LEN, TEST_ASCII_WIDTH, TEST_ASCII
|
||||||
from .neofetch_util import run_neofetch, replace_colors, get_custom_distro_ascii
|
from .neofetch_util import run_neofetch, replace_colors, get_custom_distro_ascii
|
||||||
from .presets import PRESETS, ColorProfile
|
from .presets import PRESETS, ColorProfile
|
||||||
from .serializer import json_stringify
|
from .serializer import json_stringify
|
||||||
|
@ -24,6 +24,7 @@ class Config:
|
||||||
preset: str
|
preset: str
|
||||||
mode: AnsiMode
|
mode: AnsiMode
|
||||||
light_dark: Literal['light', 'dark'] = 'dark'
|
light_dark: Literal['light', 'dark'] = 'dark'
|
||||||
|
lightness: float | None = None
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
CONFIG_PATH.parent.mkdir(exist_ok=True, parents=True)
|
CONFIG_PATH.parent.mkdir(exist_ok=True, parents=True)
|
||||||
|
@ -131,15 +132,14 @@ def create_config() -> Config:
|
||||||
flags = flags[flags_per_row:]
|
flags = flags[flags_per_row:]
|
||||||
|
|
||||||
# Print by row
|
# Print by row
|
||||||
for line in zip(*current):
|
[printc(' '.join(line)) for line in zip(*current)]
|
||||||
printc(' '.join(line))
|
|
||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
print()
|
print()
|
||||||
tmp = PRESETS['rainbow'].set_light(.7).color_text('preset')
|
tmp = PRESETS['rainbow'].set_light(.7).color_text('preset')
|
||||||
preset = literal_input(f'Which {tmp} do you want to use?', PRESETS.keys(), 'rainbow', show_ops=False)
|
preset = literal_input(f'Which {tmp} do you want to use?', PRESETS.keys(), 'rainbow', show_ops=False)
|
||||||
title += f'\n&e2. Selected flag: &r{PRESETS[preset].color_text(preset)}'
|
_prs = PRESETS[preset]
|
||||||
|
title += f'\n&e2. Selected flag: &r{_prs.color_text(preset)}'
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
# 3. Select light/dark mode
|
# 3. Select light/dark mode
|
||||||
|
@ -149,10 +149,44 @@ def create_config() -> Config:
|
||||||
is_light = light_dark == 'light'
|
is_light = light_dark == 'light'
|
||||||
title += f'\n&e3. Light/Dark: &r{light_dark}'
|
title += f'\n&e3. Light/Dark: &r{light_dark}'
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# 4. Dim/lighten colors
|
||||||
|
clear_screen(title)
|
||||||
|
printc(f'&a4. Let\'s adjust the color brightness!')
|
||||||
|
printc(f'The colors might be a little bit too {"bright" if is_light else "dark"} for {light_dark} mode.')
|
||||||
|
print()
|
||||||
|
|
||||||
|
# Print cats
|
||||||
|
num_cols = TERM_LEN // (TEST_ASCII_WIDTH + 2)
|
||||||
|
ratios = [col / (num_cols - 1) for col in range(num_cols)]
|
||||||
|
ratios = [r * 0.6 + 0.2 for r in ratios]
|
||||||
|
lines = [replace_colors(TEST_ASCII.replace('{txt}', f'{r * 100:.0f}%'.center(5)),
|
||||||
|
_prs.set_light(r))[0].split('\n') for r in ratios]
|
||||||
|
[printc(' '.join(line)) for line in zip(*lines)]
|
||||||
|
|
||||||
|
while True:
|
||||||
|
print()
|
||||||
|
printc('Which brightness level look the best? (Default: unset)')
|
||||||
|
lightness = input('> ').strip().lower() or None
|
||||||
|
|
||||||
|
# Parse lightness
|
||||||
|
if not lightness or lightness in ['unset', 'none']:
|
||||||
|
lightness = None
|
||||||
|
break
|
||||||
|
|
||||||
|
try:
|
||||||
|
lightness = int(lightness[:-1]) / 100 if lightness.endswith('%') else float(lightness)
|
||||||
|
assert 0 <= lightness <= 1
|
||||||
|
break
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
printc('&cUnable to parse lightness value, please input it as a decimal or percentage (e.g. 0.5 or 50%)')
|
||||||
|
|
||||||
# Create config
|
# Create config
|
||||||
c = Config(preset, color_system, light_dark)
|
c = Config(preset, color_system, light_dark, lightness)
|
||||||
|
|
||||||
# Save config
|
# Save config
|
||||||
|
print()
|
||||||
save = literal_input(f'Save config?', ['y', 'n'], 'y')
|
save = literal_input(f'Save config?', ['y', 'n'], 'y')
|
||||||
if save == 'y':
|
if save == 'y':
|
||||||
c.save()
|
c.save()
|
||||||
|
|
|
@ -11,6 +11,7 @@ from tempfile import TemporaryDirectory
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
|
|
||||||
from .color_util import AnsiMode
|
from .color_util import AnsiMode
|
||||||
|
from .constants import COLOR_MODE
|
||||||
from .presets import ColorProfile
|
from .presets import ColorProfile
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ def get_custom_distro_ascii(distro: str) -> str:
|
||||||
return check_output([get_command_path(), "print_custom_ascii"]).decode().strip()
|
return check_output([get_command_path(), "print_custom_ascii"]).decode().strip()
|
||||||
|
|
||||||
|
|
||||||
def replace_colors(asc: str, preset: ColorProfile, mode: AnsiMode):
|
def replace_colors(asc: str, preset: ColorProfile, mode: AnsiMode = COLOR_MODE):
|
||||||
# Remove existing colors
|
# Remove existing colors
|
||||||
asc = re.sub('\\${.*?}', '', asc)
|
asc = re.sub('\\${.*?}', '', asc)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue