From 8a7de59e7340c28e107dac69a078a8156e06ee73 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Sat, 1 Nov 2025 21:29:35 +0300 Subject: [PATCH] [+] update pr34 1. add dark/light mode changing via gsettings for GTK, wayland; --- Makefile | 8 ++ deps/com.github.aiortc.aiortc | 2 +- deps/online.fxreader.nartes.books | 2 +- python/meson.build | 2 +- python/online/fxreader/pr34/commands.py | 5 + .../pr34/commands_typed/color_scheme.py | 93 +++++++++++++++++++ ...ne_fxreader_pr34-0.1.5.33-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.34-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.35-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.36-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.37-py3-none-any.whl | 3 + ...ne_fxreader_pr34-0.1.5.38-py3-none-any.whl | 3 + 12 files changed, 127 insertions(+), 3 deletions(-) create mode 100644 python/online/fxreader/pr34/commands_typed/color_scheme.py create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.33-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.34-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.35-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.36-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.37-py3-none-any.whl create mode 100644 releases/whl/online_fxreader_pr34-0.1.5.38-py3-none-any.whl diff --git a/Makefile b/Makefile index 25348a0..3b407de 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,14 @@ python_put_dist: done ln -sf $(INSTALL_ROOT)/env3/bin/online-fxreader-pr34-commands $(INSTALL_ROOT)/commands +python_put_pr34: + $(INSTALL_ROOT)/env3/bin/python3 -m uv pip install $(UV_ARGS) \ + -f releases/whl \ + -U \ + online.fxreader.pr34 + ln -sf $(INSTALL_ROOT)/env3/bin/online-fxreader-pr34-commands $(INSTALL_ROOT)/commands + + PYTHON_PROJECTS_NAMES ?= online.fxreader.pr34 python_whl: for f in $(PYTHON_PROJECTS_NAMES); do \ diff --git a/deps/com.github.aiortc.aiortc b/deps/com.github.aiortc.aiortc index adef10a..4c187fc 160000 --- a/deps/com.github.aiortc.aiortc +++ b/deps/com.github.aiortc.aiortc @@ -1 +1 @@ -Subproject commit adef10a8c41f5c550622879370a40f8a9e545574 +Subproject commit 4c187fc7dd17c52fb8e4f992d3985eb609eefe6a diff --git a/deps/online.fxreader.nartes.books b/deps/online.fxreader.nartes.books index 3c691ef..f2366f3 160000 --- a/deps/online.fxreader.nartes.books +++ b/deps/online.fxreader.nartes.books @@ -1 +1 @@ -Subproject commit 3c691ef68d8899edf328d5b06135c0d3b02e7940 +Subproject commit f2366f328fb8129fa6ae26d00b421025d2f090c7 diff --git a/python/meson.build b/python/meson.build index 657a9fd..2c9d59f 100644 --- a/python/meson.build +++ b/python/meson.build @@ -5,7 +5,7 @@ project( ).stdout().strip('\n'), # 'online.fxreader.uv', # ['c', 'cpp'], - version: '0.1.5.32', + version: '0.1.5.38', # default_options: [ # 'cpp_std=c++23', # # 'prefer_static=true', diff --git a/python/online/fxreader/pr34/commands.py b/python/online/fxreader/pr34/commands.py index 9bd2af5..ac1e317 100644 --- a/python/online/fxreader/pr34/commands.py +++ b/python/online/fxreader/pr34/commands.py @@ -3979,6 +3979,7 @@ class Command(enum.Enum): backup = 'backup' pip_resolve = 'pip_resolve' pip_check_conflicts = 'pip_check_conflicts' + color_scheme = 'color_scheme' def pip_check_conflicts( @@ -4148,6 +4149,10 @@ def commands_cli(argv: Optional[list[str]] = None) -> int: backup(args) elif options.command is Command.scrap_yt_music: scrap_yt_music(args) + elif options.command is Command.color_scheme: + from .commands_typed.color_scheme import run as color_scheme + + color_scheme(args) elif options.command is Command.vpn: vpn(args) else: diff --git a/python/online/fxreader/pr34/commands_typed/color_scheme.py b/python/online/fxreader/pr34/commands_typed/color_scheme.py new file mode 100644 index 0000000..a71f612 --- /dev/null +++ b/python/online/fxreader/pr34/commands_typed/color_scheme.py @@ -0,0 +1,93 @@ +import subprocess +import sys +import json +import logging +from typing import ( + Literal, + Optional, +) + +import argparse + +logger = logging.getLogger(__name__) + + +def run(argv: list[str]) -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + 'action', + choices=[ + 'toggle', + 'dark', + 'light', + 'get', + ], + # required=True, + type=str, + help='action', + ) + from .argparse import parse_args as pr34_parse_args + + options, args = pr34_parse_args(parser, argv) + assert len(args) == 0 + + def get_theme() -> Literal['light', 'dark', 'default']: + res = ( + subprocess.check_output( + [ + 'gsettings', + 'get', + 'org.gnome.desktop.interface', + 'color-scheme', + ] + ) + .decode('utf-8') + .strip() + ) + + if res == "'prefer-dark'": + return 'dark' + elif res == "'prefer-light'": + return 'light' + elif res == "'default'": + return 'default' + else: + logger.error(dict(res=res, msg='unknown theme')) + + raise NotImplementedError + + def set_theme(theme: Literal['light', 'dark', 'default']) -> None: + if theme == 'light': + subprocess.check_call(['gsettings', 'set', 'org.gnome.desktop.interface', 'color-scheme', 'prefer-light']) + elif theme == 'dark': + subprocess.check_call(['gsettings', 'set', 'org.gnome.desktop.interface', 'color-scheme', 'prefer-dark']) + elif theme == 'default': + subprocess.check_call( + [ + 'gsettings', + 'reset', + 'org.gnome.desktop.interface', + 'color-scheme', + ] + ) + else: + raise NotImplementedError + + def toggle() -> None: + theme = get_theme() + if theme in ('light', 'default'): + set_theme('dark') + else: + set_theme('light') + + if options.action == 'toggle': + toggle() + elif options.action == 'dark': + set_theme('dark') + elif options.action == 'light': + set_theme('light') + elif options.action == 'get': + sys.stdout.write(json.dumps(get_theme())) + sys.stdout.flush() + else: + raise NotImplementedError diff --git a/releases/whl/online_fxreader_pr34-0.1.5.33-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.33-py3-none-any.whl new file mode 100644 index 0000000..039f555 --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.33-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fbaa95dcd0d0c0564fb6b7c161f486b54c4fb591593c769b6ad4fdf08b869f1 +size 75933 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.34-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.34-py3-none-any.whl new file mode 100644 index 0000000..591533d --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.34-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b02999a55ca5687040b6947dd1f66aaafb33b1f5fd28cbd630c2e614690a3b8c +size 75937 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.35-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.35-py3-none-any.whl new file mode 100644 index 0000000..58bebc4 --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.35-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f8b32e3c34e253e7cab74bb3d4e772e69b8378e3698e3266204df54d6b1545a +size 75992 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.36-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.36-py3-none-any.whl new file mode 100644 index 0000000..472ebb8 --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.36-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6670bd5dea3c54fca9766690b40c8416d7f5ec9d0c0abf9aa5309ec6779caad9 +size 75999 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.37-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.37-py3-none-any.whl new file mode 100644 index 0000000..23b4ecb --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.37-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f92cb068a9a3145aad3ed9e6f66069e7560df1c60982d1ff6fb87d5ce08563c7 +size 76038 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.38-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.38-py3-none-any.whl new file mode 100644 index 0000000..ffe375f --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.38-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3748856fb9d1388a8b419ffa2b3dd523db371a9771dc50539ceb6eee2d395f7 +size 76042