from libqtile import widget
from .theme import colors
#import battery
#from .seting import owm
#from settings import owm`


import subprocess
from libqtile.widget import base
from libqtile import widget


#import net
#import batterya
#import arcobattery
import os
import re
import socket
import subprocess
from libqtile import qtile
from libqtile.config import Click, Drag, Group, KeyChord, Key, Match, Screen
#from libqtile.command import lazy
from libqtile import layout, bar, widget, hook
#from libqtile.lazy import lazy
from libqtile.utils import guess_terminal

from libqtile.widget import GenPollText
import json


#------------------------------
# Get the icons at https://www.nerdfonts.com/cheat-sheet (you need a Nerd Font)

def base(fg='text', bg='dark'): 
    return {
        'foreground': colors[fg],
        'background': colors[bg],
        #        'foregeound_alert': color[af],
#	'background':["#000000.00"]
    }


def separator():
    return widget.Sep(**base(), linewidth=10, padding=10)


def icon(fg='rojo', bg='dark', fontsize=16, text="?"):
    return widget.TextBox(
        **base(fg, bg),
        fontsize=fontsize,
        text=text,
        padding=0

    )


def powerline(fg="azul", bg="dark"):
    return widget.TextBox(
        **base(fg, bg),
        text='', # Icon: nf-oct-triangle_left
        fontsize=42,
        padding=-2.1,
    )


def workspaces(): 
    return [
        separator(),
        widget.GroupBox(
            **base(fg='azul'),
            font='UbuntuMono Nerd Font',
            fontsize=19,
            margin_y=3,
            margin_x=0,
            padding_y=8,
            padding_x=5,
            borderwidth=1,
            active=colors['active'],
            inactive=colors['inactive'],
            rounded=True,
            highlight_method='block',
            urgent_alert_method='block',
            urgent_border=colors['urgent'],
            this_current_screen_border=colors['focus'],
            this_screen_border=colors['grey'],
            other_current_screen_border=colors['dark'],
            other_screen_border=colors['dark'],
            disable_drag=True
        ),
        separator(),
        widget.WindowName(**base(fg='focus'), fontsize=18, padding=5,font='iosevka regular'),
        separator(),
    ]



def workspaces_b():
    return [
        separator(),
        separator(),
        widget.WindowName(**base(fg='azul'), padding=5,
        font='iosevka regular',
        fontsize=20,
        ),

        separator(),
    ]

def workspaces_c():
    return [
    separador(),
    widget.Windowame(**base(fg='azul'), pading=5,
    font='iosevka regular',
    fontsize=20,
    ),
    separador(),
]




def get_btc():
    try:
        # Ejecutamos el comando y decodificamos
        cmd = "curl -s 'https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT'"
        res = subprocess.check_output(cmd, shell=True).decode("utf-8")
        data = json.loads(res)
        
        price = float(data['lastPrice'])
        pct = float(data['priceChangePercent'])
        
        # Formato miles con punto y decimal con coma
        n = f"{int(price):,}".replace(",", ".")
        d = f"{price:.2f}".split(".")[1]
        
        # Color para Qtile (Pango markup)
        color = "#00ff00" if pct >= 0 else "#ff0000"
        sign = "+" if pct > 0 else ""
        
#        return f"<span color='{color}'>{n},{d} ({sign}{pct:.2f}%)</span>"
        return f'{n},{d} (<span color="{color}">{sign}{pct:.2f}%</span>)'
    except:
        return "BTC Error"





def get_btc_color():
    try:
        cmd = ["curl", "-s", "https://api.binance.com/api/v3/ticker/24hr?symbol=BTCUSDT"]
        res = subprocess.check_output(cmd).decode("utf-8")
        data = json.loads(res)
        pct = float(data["priceChangePercent"])
        return "#00ff00" if pct >= 0 else "#ff0000"
    except:
        return "#ffffff"










primary_widgets = [
    *workspaces(),

    separator(),




    powerline('temp5', 'dark'),
	icon(bg='verde', fg='blanco',fontsize=20,text=''),
        widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showWeather.sh").decode("utf-8"),
	scale=0.65, padding=5,font='iosevka regular',
        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	background=colors['temp5'],
	update_interval=5,),

     powerline('temp4', 'temp5'),
	icon(bg='temp4', fg='blanco',fontsize=20,text=''),
        widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showWeather1.sh").decode("utf-8"),
	scale=0.65, padding=5,font='iosevka regular',
        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	background=colors['temp4'],
	update_interval=5),


    powerline('temp1', 'temp4'),
        icon(bg='temp1', fg='blanco', fontsize=20,text=' '),
        widget.GenPollText(func=get_btc, fontsize=18,
        font='iosevka regular',
        padding=5,
        markup=True,
        foreground=colors['blanco'],
        background=colors['temp1'],
        update_interval=5,
        ),


#     powerline('temp1', 'temp4'),
#	icon(bg='temp4', fg='blanco',fontsize=20,text=''),
#        widget.GenPollText(
#	func= lambda: subprocess.check_output("/home/neykto/.config/showBitcoin.sh").decode("utf-8"),
#	scale=0.65, padding=5,font='iosevka regular',
#        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
#	background=colors['temp1'],
#	update_interval=5),




#
#    powerline('temp1','temp2'),
#    widget.Wttr(**base(bg='temp1',fg='blanco'),
 #       lang='es',
#	location={'Reus':'Reus', },
#	format=' H: %h  ',
#	units='m',
#	update_interval=30,
#	fontsize=16, font='iosevka regular',
#	),

## hay que dublicar el codigo de weather

    powerline('oceano', 'temp1'),
    widget.CurrentLayout(**base(bg='oceano',fg='blanco'), scale=0.65),
    powerline('rosa', 'oceano'),
    icon(bg="rosa",fg="blanco", fontsize=17, text=' '), # Icon: nf-mdi-calendar_clock
    widget.Clock(**base(bg='rosa',fg='blanco'), format='%d/%m-%H:%M:%S ', fontsize=16, font='iosevka regular'),
    powerline('dark', 'rosa'),










]



secondary_widgets = [
	*workspaces_b(),

	

	separator(),

	powerline('dark', 'dark'),
#	icon(bg='dark',fg='dark'),
	widget.Wallpaper(
	directory="/home/unknown/Desktop/neykto/",
	ranndom_selection="true",
	update_interval=1,
        background=colors['dark'],
        foreground=colors['dark'],

),

	powerline('rojo', 'dark'),
	icon(bg='rojo', fg='blanco', text='  '),
        widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showTarget.sh").decode("utf-8"),
	scale=0.65, padding=5,font='iosevka regular',
        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	background=colors['rojo'],
	update_interval=5,
        ),

	powerline('oceano', 'rojo'),
	icon(bg='oceano', fg='blanco', text=''),
        widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showipOut.sh").decode("utf-8"),
	scale=0.65, padding=5,font='iosevka regular',
        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	background=colors['oceano'],
        update_interval=15,
        ),




    powerline('lila', 'oceano'),
	icon(bg="lila", fg="blanco", text=""), # Icon: nf-fa-download  --UPDATES SYS
	widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showip.sh").decode("utf-8"),
	font='iosevka regular',
	fontsize=18,
	scale=10.65,
	padding=5,
	background=colors['lila'],
	colour_have_updates=colors['blanco'],
	colour_no_updates=colors['azul'],
	no_update_string='0',
#		display_format='{updates}',
	update_interval=15,
#		custom_command='checkupdates',
	),




        powerline('verde', 'lila'),
#	icon(bg='lila',fg='blanco', text='W'),
        widget.Net(**base(bg='verde', fg='blanco'), format=' {down:<5}  {up:<5}',
	scale=0.65, padding=5,font='iosevka regular',
                fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
#text='curl wttr.in/Reus',

        ),
        powerline('verde', 'verde'),
        widget.NetGraph(**base(bg='verde', fg='blanco'),
        type='box',
        ),



	powerline('temp2', 'verde'),
	widget.CPU(**base(bg='temp2', fg='blanco'), 
	format='CPU {load_percent:>4.2f}%',
	scale=0.65, padding=5,font='iosevka regular',
	fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,


	),

        powerline('temp2','temp2'),
        widget.CPUGraph(**base(bg='temp2', fg='blanco'),
        type='box',
        
        ),




	powerline('rojo', 'temp2'),
	widget.Memory(**base(bg='rojo', fg='blanco'),
		# format='{MemUsed: .0f}{mm}/{MemTotal: .0f}{mm}/{MemPercent: .0f}% /{Buffers: .0f}{mm}' ,
		format=' {MemUsed:.0f}{mm}/{MemPercent:.0f}%/{Buffers:.0f}{mm}' ,
		font='iosevka regular',
		fontsize=18,
                margin_y=3,
                margin_x=0,
                padding_y=8,
                padding_x=5,
	),

        powerline('rojo', 'rojo'),
        widget.MemoryGraph(**base(bg='rojo', fg='blanco'),
        type='box',
        ),






    powerline('temp5', 'rojo'),
	icon(bg="temp5", fg="blanco", fontsize='20',text=' '),
        widget.DF(**base(bg='temp5', fg='blanco'), 
		scale=0.65, padding=5,font='iosevka regular',
                fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	warn_space=10,
##	format='{p} ({uf} {f} {s} {m})|{r:0.1f}%',
	format='{r:0.1f}%',
	partition='/',
	visible_on_warn=False,
	update_interval=10,
        ),



	powerline('verde', 'temp5'),
	icon(bg='verde', fg='blanco',fontsize=20,text=' '),
        widget.GenPollText(
	func= lambda: subprocess.check_output("/home/neykto/.config/showCache.sh").decode("utf-8"),
	scale=0.65, padding=5,font='iosevka regular',
        fontsize=18,margin_y=3,margin_x=0,padding_y=8,padding_x=5,
	background=colors['verde'],
	update_interval=5,


        ),


	powerline('naranja', 'verde'),
	icon(bg="naranja", fg="blanco", text=' '), # Icon: nf-fa-download  --UPDATES SYS
	widget.CheckUpdates(
		font='iosevka regular',
		fontsize=18,
		scale=10.65,
		padding=5,
		background=colors['naranja'],
		colour_have_updates=colors['blanco'],
		colour_no_updates=colors['verde'],
		no_update_string='0',
		display_format='{updates}',
		update_interval=180,
		custom_command='checkupdates',
	),





]







widget_defaults = {
    'font': 'UbuntuMono Nerd Font Bold',
    'fontsize': 14,
    'padding': 1,
}
extension_defaults = widget_defaults.copy()


