diff --git a/hyprland/.config/waybar/scripts/openai-rate.py b/hyprland/.config/waybar/scripts/openai-rate.py index 6e21fc71..a9cf83fb 100755 --- a/hyprland/.config/waybar/scripts/openai-rate.py +++ b/hyprland/.config/waybar/scripts/openai-rate.py @@ -136,47 +136,12 @@ def format_window(name, window): return { "label": label, "left": left, - "text": f"{left}% {label}", "used": used, "tooltip": tooltip, } -def credit_text(credits): - if not isinstance(credits, dict) or not credits.get("has_credits"): - return None - if credits.get("unlimited"): - return "credits unlimited" - balance = credits.get("balance") - if balance is None: - return "credits enabled" - try: - return f"credits {round(float(balance))}" - except (TypeError, ValueError): - return f"credits {balance}" - - -def spend_control_text(spend_control): - limit = (spend_control or {}).get("individual_limit") - if not isinstance(limit, dict): - return None - - remaining = limit.get("remaining_percent") - used = limit.get("used") - cap = limit.get("limit") - reset = reset_text(limit.get("reset_after_seconds")) - if not isinstance(remaining, int): - return None - - text = f"monthly credits: {100 - remaining}% used" - if used and cap: - text += f" ({used}/{cap})" - if reset: - text += f", resets in {reset}" - return text - - -def selected_window_output(data, source, selector): +def output_window(data, source, selector): rate_limit = data.get("rate_limit") or {} window = format_window(selector, rate_limit.get(f"{selector}_window")) if not window: @@ -187,42 +152,12 @@ def selected_window_output(data, source, selector): waybar(f"{window['left']}% {window['label']}", klass, "\n".join(tooltip)) -def combined_output(data, source): - rate_limit = data.get("rate_limit") or {} - windows = [ - format_window("primary", rate_limit.get("primary_window")), - format_window("secondary", rate_limit.get("secondary_window")), - ] - windows = [window for window in windows if window] - - parts = [window["text"] for window in windows] - credits = credit_text(data.get("credits")) - if credits: - parts.append(credits) - - if not parts: - waybar("AI n/a", "warning", f"No displayable usage data\nsource: {source}") - - worst_used = max(window["used"] for window in windows) if windows else 0 - klass = usage_class(worst_used, rate_limit.get("limit_reached")) - - tooltip = [window["tooltip"] for window in windows] - spend = spend_control_text(data.get("spend_control")) - if credits: - tooltip.append(credits) - if spend: - tooltip.append(spend) - tooltip.append(f"source: {source}") - - waybar(f"AI {' '.join(parts)}", klass, "\n".join(tooltip)) - - def parse_args(): parser = ArgumentParser(description="Waybar Codex rate-limit widget") parser.add_argument( "--window", - choices=("primary", "secondary", "all"), - default="all", + choices=("primary", "secondary"), + required=True, help="usage window to display", ) return parser.parse_args() @@ -232,11 +167,7 @@ def main(): args = parse_args() token, account_id, source = load_auth() data = fetch_usage(token, account_id) - - if args.window == "all": - combined_output(data, source) - else: - selected_window_output(data, source, args.window) + output_window(data, source, args.window) if __name__ == "__main__":