Files
fn_registry/python/functions/infra/powertoys_config_path.py
T
egutierrez 9c661d605a feat(infra): auto-commit con 12 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 01:21:17 +02:00

52 lines
1.9 KiB
Python

"""Detect the path of PowerToys Keyboard Manager default.json config file."""
import os
import platform
def powertoys_config_path(user: str | None = None) -> str:
"""Return the path to PowerToys Keyboard Manager default.json.
Supports three resolution modes (in priority order):
1. POWERTOYS_CONFIG env var override.
2. WSL: /mnt/c/Users/<user>/AppData/Local/Microsoft/PowerToys/Keyboard Manager/default.json
where <user> is the `user` argument, then $USER env var.
3. Native Windows: %LOCALAPPDATA%/Microsoft/PowerToys/Keyboard Manager/default.json
Args:
user: Windows username. If None, reads $USER from env. Only used in WSL mode.
Returns:
Absolute path string to default.json (file may or may not exist).
"""
override = os.environ.get("POWERTOYS_CONFIG")
if override:
return override
relative = "Microsoft/PowerToys/Keyboard Manager/default.json"
# Detect WSL: check for /mnt/c mount or WSL-specific env vars
is_wsl = (
os.path.exists("/mnt/c")
or "WSL_DISTRO_NAME" in os.environ
or "WSLENV" in os.environ
)
if is_wsl:
resolved_user = user or os.environ.get("USER") or os.environ.get("USERNAME")
if not resolved_user:
raise ValueError(
"Cannot determine Windows username. Pass user= or set $USER env var."
)
return f"/mnt/c/Users/{resolved_user}/AppData/Local/{relative}"
if platform.system() == "Windows":
local_app_data = os.environ.get("LOCALAPPDATA", "")
if not local_app_data:
raise ValueError("$LOCALAPPDATA env var is not set on this Windows system.")
return os.path.join(local_app_data, relative)
# Fallback: assume WSL-style path with $USER
resolved_user = user or os.environ.get("USER") or os.environ.get("USERNAME", "")
return f"/mnt/c/Users/{resolved_user}/AppData/Local/{relative}"