lunes, 3 de junio de 2024

conky (implementando bash para las estaciones)

Implementación en Conky para Calcular la Estación Actual y Días Restantes para la Siguiente

En esta entrada, te presentamos una nueva actualización para Conky, una herramienta de monitoreo de sistema, que te permite calcular la estación actual y los días restantes para la siguiente estación, en función de tu ubicación actual. Esta implementación se encuentra en el script scripts/GetStation.sh. A continuación, enumeramos los pasos que realiza este script bash como parte de esta actualización:

Descripción del Script

  1. Obtener la latitud: El script utiliza el servicio ipinfo.io para obtener la latitud de la ubicación actual del usuario.
  2. Determinar el hemisferio: Basado en la latitud obtenida, el script determina si el usuario se encuentra en el hemisferio norte o sur.
  3. Obtener la fecha actual: El script obtiene la fecha actual en el formato YYYY-MM-DD.
  4. Establecer fechas de inicio de las estaciones:
    • Para el hemisferio norte:
      • Primavera: 21 de marzo
      • Verano: 21 de junio
      • Otoño: 21 de septiembre
      • Invierno: 21 de diciembre
    • Para el hemisferio sur:
      • Primavera: 21 de septiembre
      • Verano: 21 de diciembre
      • Otoño: 21 de marzo
      • Invierno: 20 de junio
  5. Calcular la estación actual y la próxima estación: El script compara la fecha actual con las fechas de inicio de las estaciones para determinar cuál es la estación actual y cuál será la próxima estación.
  6. Calcular los días restantes para la próxima estación: El script calcula el número de días que faltan para el inicio de la próxima estación.
  7. Determinar el texto de los días restantes: Dependiendo del número de días restantes, el script genera un texto apropiado (por ejemplo, "un día para" o "X días para").
  8. Copiar los iconos de las estaciones: El script copia los iconos correspondientes a la estación actual y la próxima estación en el directorio temporal del usuario.
  9. Mostrar resultados: Finalmente, el script muestra la estación actual, el icono de la estación actual, la próxima estación, el icono de la próxima estación y el texto de los días restantes.
 
#!/bin/bash

# GetStation.sh
# Este script calcula la estación actual y los días restantes para la siguiente estación en función de la ubicación actual.

# Obtener la latitud usando ipinfo.io
latitude=$(curl -s https://ipinfo.io/ | jq -r '.loc' | cut -d ',' -f 1)

# Determinar el hemisferio basado en la latitud
if (( $(echo "$latitude > 0" | bc -l) )); then
    hemisphere="norte"
else
    hemisphere="sur"
fi

# Obtener la fecha actual
current_date=$(date +%Y-%m-%d)

# Establecer las fechas de inicio de las estaciones según el hemisferio
if [[ "$hemisphere" == "norte" ]]; then
    spring_start=$(date -d "$(date +%Y)-03-21" +%Y-%m-%d)
    summer_start=$(date -d "$(date +%Y)-06-21" +%Y-%m-%d)
    autumn_start=$(date -d "$(date +%Y)-09-21" +%Y-%m-%d)
    winter_start=$(date -d "$(date +%Y)-12-21" +%Y-%m-%d)
    next_year_spring_start=$(date -d "$(( $(date +%Y) + 1 ))-03-21" +%Y-%m-%d)
else
    spring_start=$(date -d "$(date +%Y)-09-21" +%Y-%m-%d)
    summer_start=$(date -d "$(date +%Y)-12-21" +%Y-%m-%d)
    autumn_start=$(date -d "$(date +%Y)-03-21" +%Y-%m-%d)
    winter_start=$(date -d "$(date +%Y)-06-20" +%Y-%m-%d)
    next_year_autumn_start=$(date -d "$(( $(date +%Y) + 1 ))-03-21" +%Y-%m-%d)
fi

# Calcular la estación actual y la próxima estación
if [[ "$hemisphere" == "norte" ]]; then
    if [[ "$current_date" > "$winter_start" ]] || [[ "$current_date" < "$spring_start" ]]; then
        current_season="Invierno"
        next_season="Primavera"
        next_season_date=$spring_start
        current_icon="winter"
        next_icon="spring"
    elif [[ "$current_date" < "$summer_start" ]]; then
        current_season="Primavera"
        next_season="Verano"
        next_season_date=$summer_start
        current_icon="spring"
        next_icon="summer"
    elif [[ "$current_date" < "$autumn_start" ]]; then
        current_season="Verano"
        next_season="Otoño"
        next_season_date=$autumn_start
        current_icon="summer"
        next_icon="autumn"
    else
        current_season="Otoño"
        next_season="Invierno"
        next_season_date=$winter_start
        current_icon="autumn"
        next_icon="winter"
    fi
else
    if [[ "$current_date" > "$summer_start" ]] || [[ "$current_date" < "$autumn_start" ]]; then
        current_season="Verano"
        next_season="Otoño"
        next_season_date=$autumn_start
        current_icon="summer"
        next_icon="autumn"
    elif [[ "$current_date" < "$winter_start" ]]; then
        current_season="Otoño"
        next_season="Invierno"
        next_season_date=$winter_start
        current_icon="autumn"
        next_icon="winter"
    elif [[ "$current_date" < "$spring_start" ]]; then
        current_season="Invierno"
        next_season="Primavera"
        next_season_date=$spring_start
        current_icon="winter"
        next_icon="spring"
    else
        current_season="Primavera"
        next_season="Verano"
        next_season_date=$summer_start
        current_icon="spring"
        next_icon="summer"
    fi
fi

# Calcular los días restantes para la próxima estación
current_date_sec=$(date -d "$current_date" +%s)
next_season_date_sec=$(date -d "$next_season_date" +%s)
days_until_next_season=$(( (next_season_date_sec - current_date_sec) / 86400 ))

# Determinar el texto de los días restantes
if [ "$days_until_next_season" -eq 1 ]; then
    days_text="un día para"
else
    days_text="$days_until_next_season días para"
fi

# Copiar la estación actual y la próxima en el directorio temporal del usuario.
cp -r ~/.config/conky/icons/${current_icon}.png ~/.cache/current_station.png
cp -r ~/.config/conky/icons/${next_icon}.png ~/.cache/next_station.png

# Mostrar la estación actual, el icono y los días restantes para la próxima estación
echo "$current_season;$current_icon;$next_season;$next_icon;$days_text"


Esta actualización para Conky es útil para quienes desean tener información actualizada sobre las estaciones del año y los días restantes para el cambio de estación, basándose en su ubicación geográfica. Con esta implementación, Conky puede mostrar dinámicamente la estación del año actual y los días restantes hasta la próxima estación directamente en tu escritorio.





La actualización se puede descargar desde mi repositorio en GitHub.


No hay comentarios.:

Publicar un comentario

Déjanos tu comentario!