#!/usr/bin/env python3

import sys
import subprocess


def view_details():
    try:
        details = subprocess.check_output(
            ["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT1"],
            text=True
        )
        # Extraer información relevante si es necesario
        subprocess.run(["notify-send", "Detalles de la Batería", details])
    except subprocess.CalledProcessError as e:
        subprocess.run(
            ["notify-send", "Error", "No se pudieron obtener los detalles de la batería."])


def check_health():
    try:
        health = subprocess.check_output(
            ["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT1"],
            text=True
        )
        # Extraer información específica sobre la salud
        energy_full = ""
        for line in health.splitlines():
            if "energy-full:" in line:
                energy_full = line.split(":", 1)[1].strip()
                break
        if energy_full:
            subprocess.run(["notify-send", "Salud de la Batería",
                           f"La capacidad máxima actual es {energy_full}."])
        else:
            subprocess.run(["notify-send", "Salud de la Batería",
                           "No se pudo determinar la capacidad máxima."])
    except subprocess.CalledProcessError as e:
        subprocess.run(
            ["notify-send", "Error", "No se pudo verificar la salud de la batería."])


def save_mode():
    try:
        # Reducir el brillo al 50% (asegúrate de tener xbacklight instalado)
        subprocess.run(["xbacklight", "-set", "50"])
        subprocess.run(
            ["notify-send", "Modo de Ahorro Activado", "Brillo reducido al 50%."])
    except Exception as e:
        subprocess.run(
            ["notify-send", "Error", "No se pudo activar el modo de ahorro."])


def main():
    if len(sys.argv) < 2:
        subprocess.run(
            ["notify-send", "Error", "No se proporcionó ninguna acción."])
        sys.exit(1)

    action = sys.argv[1]

    if action == "view_details":
        view_details()
    elif action == "check_health":
        check_health()
    elif action == "save_mode":
        save_mode()
    else:
        subprocess.run(
            ["notify-send", "Error", f"Acción desconocida: {action}"])
        sys.exit(1)


if __name__ == "__main__":
    main()

