diff --git a/platform_dotfiles/ideapad_slim_3_15arp10/usr/local/bin/online.fxreader.pr34-on-resume b/platform_dotfiles/ideapad_slim_3_15arp10/usr/local/bin/online.fxreader.pr34-on-resume index 95a97ea..6a80d36 100755 --- a/platform_dotfiles/ideapad_slim_3_15arp10/usr/local/bin/online.fxreader.pr34-on-resume +++ b/platform_dotfiles/ideapad_slim_3_15arp10/usr/local/bin/online.fxreader.pr34-on-resume @@ -23,7 +23,7 @@ elif sys.argv[1] == 'after-suspend': subprocess.check_call(['modprobe', 'ideapad_laptop',]) #subprocess.check_call(['modprobe', 'atkbd',]) subprocess.check_call(['nmcli', 'radio', 'wifi', 'on']) - subprocess.check_call(['rfkill', 'unblock', '109']) + #subprocess.check_call(['rfkill', 'unblock', '109']) #subprocess.check_call(r''' # # systemctl restart wg-quick@siarhei-hp.service #''', shell=True,) diff --git a/platform_dotfiles_gpg/ideapad_slim_3_15arp10/sensitive-configs-2025-12-13T19:15:17+03:00.gpg b/platform_dotfiles_gpg/ideapad_slim_3_15arp10/sensitive-configs-2025-12-13T19:15:17+03:00.gpg new file mode 100644 index 0000000..1eeea44 --- /dev/null +++ b/platform_dotfiles_gpg/ideapad_slim_3_15arp10/sensitive-configs-2025-12-13T19:15:17+03:00.gpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03b5120f4ac2433e59a9e146a3983ba76c097cb32958684e482b66dd7183d9bf +size 19038 diff --git a/python/meson.build b/python/meson.build index 6a57b6f..0473ffb 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.54', + version: '0.1.5.59', # default_options: [ # 'cpp_std=c++23', # # 'prefer_static=true', diff --git a/python/online/fxreader/pr34/oom_firefox.py b/python/online/fxreader/pr34/oom_firefox.py index 9311c03..61ab281 100644 --- a/python/online/fxreader/pr34/oom_firefox.py +++ b/python/online/fxreader/pr34/oom_firefox.py @@ -190,11 +190,32 @@ def kill_prioritized( procs: list['get_firefox_procs_ps_t.res_t.entry_t'], to_free_mb, low_priority_pids, + main_regex: Optional[str], + worker_regex: Optional[str], ): candidates = [] for p in procs: - if is_main_firefox(p): + if worker_regex is None and main_regex is None: + pass + elif ( + not worker_regex is None + and not re.compile(worker_regex).match(p['cmd']) is None + ): + pass + elif ( + not main_regex is None + and not re.compile(main_regex).match(p['cmd']) is None + ): continue + elif not main_regex is None and not worker_regex is None: + continue + elif main_regex is None and not worker_regex is None: + continue + elif not main_regex is None and worker_regex is None: + pass + else: + raise NotImplementedError + try: # rss_mb = p.memory_info().rss / (1024 * 1024) rss_mb = p['rss'] / (1024 * 1024) @@ -260,27 +281,6 @@ def launch_firefox_with_limits( def main(): - os.makedirs( - pathlib.Path('~/.cache/oom_firefox/').expanduser(), exist_ok=True - ) - - logging.basicConfig( - level=logging.INFO, - format=( - '%(asctime)s ' - '%(levelname)-8s ' - '%(filename)s:%(lineno)d ' - '%(funcName)s – %(message)s' - ), - handlers=[ - logging.handlers.RotatingFileHandler( - pathlib.Path('~/.cache/oom_firefox/log').expanduser(), - maxBytes=128 * 1024, - backupCount=3, - ) - ], - ) - parser = argparse.ArgumentParser( description='Firefox memory manager with slice + graceful shutdown' ) @@ -314,6 +314,19 @@ def main(): default='firefox-limited', help='Name for systemd transient unit', ) + parser.add_argument( + '--main-regex', + type=str, + default=None, + help='regex for main processes, that are not to kill', + ) + parser.add_argument( + '--worker-regex', + type=str, + # default=r'^.*contentproc.*$', + default=None, + help='regex for worker processes, that can be killed, like .*contentproc.* for firefox', + ) parser.add_argument( '--firefox-extra', action='append', @@ -328,6 +341,29 @@ def main(): args = parser.parse_args() + os.makedirs( + pathlib.Path('~/.cache/oom_firefox/').expanduser(), exist_ok=True + ) + + logging.basicConfig( + level=logging.INFO, + format=( + '%(asctime)s ' + '%(levelname)-8s ' + '%(filename)s:%(lineno)d ' + '%(funcName)s – %(message)s' + ), + handlers=[ + logging.handlers.RotatingFileHandler( + pathlib.Path( + '~/.cache/oom_firefox/log-%s' % args.unit_name + ).expanduser(), + maxBytes=128 * 1024, + backupCount=3, + ) + ], + ) + low_priority_pids = set() body = TextArea(focusable=False, scrollbar=True) @@ -378,7 +414,11 @@ def main(): if total > limit: to_free = total - kill_to killed, freed = kill_prioritized( - procs, to_free, low_priority_pids + procs, + to_free, + low_priority_pids, + main_regex=args.main_regex, + worker_regex=args.worker_regex, ) lines.append(f'Killed: {killed}') lines.append(f'Freed ≈ {freed:.1f} MB') diff --git a/releases/whl/online_fxreader_pr34-0.1.5.56-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.56-py3-none-any.whl new file mode 100644 index 0000000..d285dbc --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.56-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:203c6d7ad0dc5be6c5e41d2648d47d31b1c7bea27826b23c59628c2d096b74e9 +size 83484 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.57-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.57-py3-none-any.whl new file mode 100644 index 0000000..74f6399 --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.57-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52148600329e51ad1a6405600ee21449e9ba30673fe4e4762a6ca018e718dcf7 +size 83489 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.58-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.58-py3-none-any.whl new file mode 100644 index 0000000..41ce28c --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.58-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0979c942270fe8406aa3ec18ead07d2469a3d6737b1b677ccb7c4675e63be512 +size 83525 diff --git a/releases/whl/online_fxreader_pr34-0.1.5.59-py3-none-any.whl b/releases/whl/online_fxreader_pr34-0.1.5.59-py3-none-any.whl new file mode 100644 index 0000000..9c1361a --- /dev/null +++ b/releases/whl/online_fxreader_pr34-0.1.5.59-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6369fdafe47a5fed54e603afbd214d3519cf0f126cdd44e92abee3ab2424c62b +size 83529