Mostrando las entradas con la etiqueta GNU Linux. Mostrar todas las entradas
Mostrando las entradas con la etiqueta GNU Linux. Mostrar todas las entradas

martes, 16 de julio de 2024

Script para automatizar la limpieza con BleachBit en antiX

Script: clean_with_bleachbit.sh


BleachBit . Personalmente yo la uso con antiX. Algunas características que lo hacen interesante:

  • Limpieza profunda: BleachBit es conocido como "el CCleaner para Linux" por su capacidad de limpiar profundamente los sistemas, eliminando cachés, registros, cookies, archivos temporales y más.
  • Soporte para múltiples aplicaciones: Puede limpiar archivos y cachés de una amplia gama de aplicaciones, como navegadores web, suites de oficina y programas de mensajería.
  • Interfaz gráfica y de línea de comandos: Ofrece una interfaz gráfica sencilla y también puede ser usado desde la línea de comandos, lo que lo hace versátil para diferentes tipos de usuarios.
  • Desfragmentación y trituración de archivos: Puede desfragmentar archivos y triturar archivos para una eliminación segura.
Interface de BleachBit

Ventajas:

  • Eficiencia: Es ligero y consume pocos recursos del sistema.
  • Potencia en la limpieza: Se enfoca específicamente en la limpieza y lo hace de manera efectiva.
  • Flexibilidad: La opción de usarlo desde la línea de comandos lo hace adecuado para scripts y automatización . Aca les dejo un ejemplo de como podría ser incorporado a un script (este script opcionalmente luego podría ser incorporado como una tarea administrativa a través de cron).

Código


#!/bin/bash
# --------------------------------------------------------------------------------------------------------------------------------------
# File: clean_with_bleachbit.sh
# By Julio Alberto Lascano http://drcalambre.blogspot.com/
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
# --------------------------------------------------------------------------------------------------------------------------------------
# Last modified:2024-07-14
# --------------------------------------------------------------------------------------------------------------------------------------

# Script para automatizar la limpieza con BleachBit
# Asegúrate de tener BleachBit instalado y configurado para ejecutarse desde la línea de comandos

# Configurar las opciones de limpieza de BleachBit
# Puedes encontrar la lista completa de opciones en la documentación de BleachBit o usando `bleachbit --list`

# Lista de opciones de limpieza
options=(
    "apt.autoclean"
    "apt.clean"
    "system.cache"
    "system.tmp"
    "chromium.cache"
    "chromium.dom"
    "chromium.history"
    "chromium.form_history"
    "chromium.search_engines"
    "chromium.sync"
    "chromium.vacuum"
    "firefox.cache"
    "firefox.crash_reports"
    "firefox.dom"
    "firefox.forms"
    "firefox.session_restore"
    "firefox.site_preferences"
    "firefox.vacuum"
    "google_chrome.cache"
    "google_chrome.dom"
    "google_chrome.history"
    "google_chrome.search_engines"
    "google_chrome.vacuum"
)   

# Función para ejecutar la limpieza
run_bleachbit() {
    for option in "${options[@]}"; do
        echo "Limpiando $option"
        bleachbit --clean "$option"
    done
}

# Ejecutar la función de limpieza
run_bleachbit

# Salida del script
echo "Limpieza completada con BleachBit"

Guardar el script en:


 
/usr/local/bin/clean_with_bleachbit.sh

Dar permisos de ejecución al script


chmod +x /usr/local/bin/clean_with_bleachbit.sh

Implementación con CRON

# Editar el archivo crontab para el usuario actual


(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1") | crontab -

En el ejemplo de cron proporcionado programará la ejecución del script clean_with_bleachbit.sh todos los días a las 2:00 AM. Explicación del Cronograma

0 2 * * *: Esta parte del cronograma especifica los momentos en que se ejecutará el script.
0: El minuto en que se ejecutará la tarea (0 significa en el minuto cero de la hora especificada).
2: La hora en que se ejecutará la tarea (2 significa a las 2:00 AM).
*: Cualquier día del mes.
*: Cualquier mes.
*: Cualquier día de la semana.
Interpretación
Minuto (0): El script se ejecutará al minuto 0 de la hora especificada (es decir, al principio de la hora).
Hora (2): El script se ejecutará a las 2:00 AM.
Día del Mes (*): Se ejecutará cualquier día del mes.
Mes (*): Se ejecutará cualquier mes.
Día de la Semana (*): Se ejecutará cualquier día de la semana.
Verificación Después de ejecutar el comando anterior, puedes verificar que la tarea cron se haya configurado correctamente utilizando el siguiente comando:


crontab -l

Implementación con ANACRON

Usar anacron en lugar de cron para tu script de limpieza con BleachBit puede ofrecer varias ventajas, especialmente si estás en un entorno donde el equipo no está encendido constantemente o en horarios específicos.

Aquí están algunas de las ventajas:
  • Ejecución Garantizada: anacron garantiza que las tareas programadas se ejecuten incluso si el equipo estuvo apagado durante el horario programado. En contraste, cron solo ejecuta tareas en momentos específicos y las tareas se pierden si el equipo no está encendido.
  • Flexibilidad de Horarios: anacron permite definir periodos en días para la ejecución de tareas (e.g., diario, semanal, mensual) sin necesidad de especificar una hora exacta, lo que ofrece mayor flexibilidad para equipos que no están siempre encendidos.
  • Fácil Configuración para Tareas Periódicas: Para tareas que necesitan ejecutarse al menos una vez al día, anacron es una opción más sencilla y robusta. En lugar de depender de un cronjob que puede no ejecutarse si el sistema está apagado, anacron simplemente ejecuta la tarea la próxima vez que el sistema esté encendido.
  • Manejo Automático de Retrasos: Si una tarea se retrasa (por ejemplo, porque el equipo estuvo apagado en el momento programado para la ejecución), anacron se encargará de ejecutarla la próxima vez que el equipo esté encendido. Esto asegura que las tareas críticas no se pierdan simplemente porque el equipo no estaba disponible en el momento exacto de la programación, a diferencia de cron, que no reprograma tareas perdidas.

El COMO usar anacron con un usuario común, aunque requiere algunos pasos adicionales en comparación con cron. A continuación, una explicacíon cómo configurar anacron para un usuario común.

Instalar anacron.

Primero, asegúrate de que anacron esté instalado en tu sistema. En la mayoría de las distribuciones basadas en Debian/Ubuntu, puedes instalarlo con:.


sudo apt-get install anacron

Crear Directorios y Archivos de Configuración

anacron generalmente se configura a nivel de sistema, pero puedes configurarlo para un usuario común creando los directorios y archivos necesarios en tu directorio de inicio.

Crear Directorios:

Crea un directorio ~/.anacron para almacenar los archivos de estado de anacron:



mkdir -p ~/.anacron

Crear el Archivo de Tareas:

Crea un archivo llamado anacrontab en tu directorio de inicio:



touch ~/.anacron/anacrontab

Luego, edita este archivo con tu editor de texto preferido y añade la configuración de la tarea. Por ejemplo, para ejecutar el script de limpieza con BleachBit diariamente:


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1 && echo "---- $(date) ----" >> /var/log/bleachbit.log

Este ejemplo configura anacron para ejecutar el script clean_with_bleachbit.sh diariamente.

  • 1: Especifica que el trabajo debe ejecutarse diariamente.
  • 5 clean_with_bleachbit: Esto significa que el trabajo se ejecutará 5 minuto después de que anacron se inicie.
  • /usr/local/bin/clean_with_bleachbit.sh: Es el script que se va a ejecutar.
  • >> /var/log/bleachbit.log: Redirige la salida estándar (stdout) del script al archivo /var/log/bleachbit.log. El operador >> añade la salida al final del archivo sin sobrescribirlo.
  • 2>&1: Redirige la salida de error estándar (stderr) al mismo lugar que la salida estándar (stdout).

Desglose de 2>&1

  • 2 representa el descriptor de archivo para stderr.
  • > es el operador de redirección.
  • &1 significa que stderr se redirigirá al mismo lugar que stdout.

Crear un Script para Ejecutar anacron

Para asegurarte de que anacron se ejecute regularmente, incluso si el equipo se apaga, puedes crear un script que ejecute anacron cada vez que inicies sesión o se inicie el entorno de escritorio.

Crear el Script:

Crea un archivo llamado run_anacron.sh en tu directorio de inicio:



touch ~/run_anacron.sh

Luego, edita este archivo y añade lo siguiente:


#!/bin/bash

# Esperar 1 minuto para asegurar que el entorno esté listo
sleep 60

# Registro adicional para depuración
echo "Running Anacron script at $(date)" > ~/anacron_debug.log
echo "Current user: $(whoami)" >> ~/anacron_debug.log
echo "Current directory: $(pwd)" >> ~/anacron_debug.log
echo "Environment variables: $(env)" >> ~/anacron_debug.log
echo "Anacron status before execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

# Ejecutar Anacron
/sbin/anacron -t ~/.anacron/anacrontab -S ~/.anacron -s
exit_code=$?

# Verificar el código de salida y registrar en el log
if [ $exit_code -eq 0 ]; then
    echo "Starting Anacron at $(date)" > ~/anacron_log.log
else
    echo "Anacron failed to start at $(date) with exit code $exit_code" > ~/anacron_log.log
fi

# Registrar el estado después de la ejecución
echo "Anacron status after execution:" >> ~/anacron_debug.log
/sbin/anacron -T -t ~/.anacron/anacrontab >> ~/anacron_debug.log 2>&1

Ejecutar anacron al Iniciar Sesión

Finalmente, configura tu entorno para ejecutar anacron al iniciar sesión. Puedes agregar el script run_anacron.sh a tus aplicaciones de inicio.

Para GNOME, por ejemplo:

  • Abre "Aplicaciones de inicio" (Startup Applications).
  • Añade una nueva entrada: Nombre: anacron
  • Comando: /home/tu_usuario/run_anacron.sh
    Comentario: Ejecutar tareas de anacron
  • Resumen: Siguiendo estos pasos, puedes usar anacron con un usuario común para ejecutar tareas programadas, asegurándote de que se ejecuten incluso si el equipo estuvo apagado durante el tiempo programado.

Además de estas variantes predefinidas, puedes definir tareas usando un formato más detallado, especificando el número de días entre ejecuciones. Aquí tienes algunos ejemplos adicionales:

Variantes de anacron

  • Especificar el Número de Días
    • Puedes especificar cualquier número de días entre ejecuciones.
    • Formato: [número de días] [demora en minutos] [identificador] [comando]
    • Ejemplo para ejecutar cada 3 días:
      
              
      3 1 clean_with_bleachbit /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
              
              

Ejemplos Adicionales

  • Ejecutar Cada 2 Días:
    
        
    2 1 clean_temp_files /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
        
        
  • Ejecutar Cada 10 Días:
    
        
    10 1 backup_data /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1
        
        

Sintaxis del Archivo anacrontab

Cada línea en el archivo anacrontab sigue esta sintaxis:

[periodo] [demora en minutos] [identificador] [comando]
  • periodo: Número de días entre ejecuciones.
  • demora en minutos: Tiempo de espera antes de ejecutar la tarea después de iniciar anacron.
  • identificador: Un nombre único para identificar la tarea.
  • comando: El comando o script a ejecutar.

Archivo ~/.anacron/anacrontab con Varias Tareas


# archivo de configuración para anacron
# formato: periodo   demora   identificador   comando
# Trabajo diario
1       5       clean_with_bleachbit   /usr/local/bin/clean_with_bleachbit.sh >> /var/log/bleachbit.log 2>&1
# Trabajo semanal
7       1       clean_logs             /usr/local/bin/clean_logs.sh >> /var/log/clean_logs.log 2>&1
# Trabajo mensual
30      30      system_backup          /usr/local/bin/system_backup.sh >> /var/log/system_backup.log 2>&1
# Otros trabajos
3       1       clean_temp_files       /usr/local/bin/clean_temp_files.sh >> /var/log/clean_temp_files.log 2>&1
10      1       backup_data            /usr/local/bin/backup_data.sh >> /var/log/backup_data.log 2>&1

Estas configuraciones permiten una gran flexibilidad en la programación de tareas periódicas, asegurando que se ejecuten incluso si el sistema no está encendido en el momento exacto programado.

jueves, 21 de septiembre de 2023

conky (implementando perl para las fases lunares)

U na pequeña actualización para conky (implementando perl para  las fases lunares) 
pero ahora sin  Sunlight World Map (ver acá debido a las restricciones de Scraping  

veré si hay una solución para esto en el futuro y lo comentaré por aquí.

Descargue los archivos de configuración desde acá 

El tutorial para configurar lo pueden ver acá 

MoonPhase (perl) calcula información sobre la fase de la luna en un momento determinado. 





 
#!/usr/bin/perl -w

#to install, with sudo
#perl -MCPAN -e 'install Astro::MoonPhase'

# -------------------------------------------------------------------
# File: moon.pl                                          /\
# Type: Perl Script                                     /_.\
# By Fernando Gilli fernandowekers(dot)org    _,.-'/ `",\'-.,_
# Last modified:2023-09-21                     -~^    /______\`~~-^~:
# ------------------------
# Get Moon data from perl module Astro::MoonPhase
# / OS : $Linux, $FreeBSD (X Window)
# -------------------------------------------------------------------


use warnings;
use strict;
use POSIX qw(strftime);

use Astro::MoonPhase;


my @phases = phasehunt();
#print "New Moon      = ", scalar(localtime($phases[0])), "\n";
#print "First quarter = ", scalar(localtime($phases[1])), "\n";
#print "Full moon     = ", scalar(localtime($phases[2])), "\n";
#print "Last quarter  = ", scalar(localtime($phases[3])), "\n";
#print "New Moon      = ", scalar(localtime($phases[4])), "\n";

open(my $fh, '>', 'moon_phase_die');
    
  print $fh "Full Moon\n";
  print $fh ucfirst strftime("%b %d", localtime($phases[2])), "\n";
  print $fh "New Moon\n";
  print $fh ucfirst strftime("%b %d", localtime($phases[4])), "\n";

close $fh;


viernes, 13 de enero de 2023

Laptop Dell Inspiron 3501 con 4GB de RAM extremadamente lenta con Windows 10 - (análisis y solución)

Voy a describir mi caso: 

Recientemente mi esposa compró una Dell Inspiron 3501 con 4GB de RAM con Windows 10 con un 1 (un) terabyte de capacidad en disco . 

Me fue imposible (literalmente) hacer que esta computadora funcione con Windows 10. 

Investigando un poco en la asistencia que ofrece Dell en su sitio oficial, vi que no era el único que estaba teniendo problema con estas especificaciones de hardware:

https://www.dell.com/community/Inspiron/Dell-Inspiron-15-3000-extreme-slow/td-p/8184819 

Buscando un poco en Youtube encontré un buen tutorial con el manejo de la BIOS de las computadoras Dell 

(Una instalación limpia de Linux Mint 21 / BIOS Dell UEFI con arranque seguro y MOK)


Así que siguiendo las instrucciones,he eliminado completamente cualquier vestigio de windows 10 de esta computadora, he instalado Linux Mint (Linux Mint 21.1 “vera”).

Es increíble. Ahora todo anda de maravilla.




domingo, 18 de septiembre de 2022

Conky y una implementación de Mapa mundial de luz solar

Cómo funciona: 

Observe cómo sale y se pone el sol en todo el mundo en esta ilustración en tiempo real generada por computadora de los patrones de luz solar y oscuridad de la Tierra. Las nubes se actualizan diariamente con imágenes satelitales meteorológicas actuales. 

 
El World Sunlight Map (Mapa mundial de luz solar) del sitio www.die.net/earth/  proporciona una aproximación generada por computadora de cómo se ve la Tierra actualmente. Si bien es menos impresionante que estar en órbita, esto es mucho más accesible para la mayoría de nosotros.

Comienza con imágenes sin nubes de la tierra durante el día (de un par de satélites de la NASA) y la noche (de un programa del Departamento de Defensa para mapear las luces de la ciudad). Todos los días, descarga una imagen de nubes compuestas basada en datos de satélites meteorológicos de todo el mundo. Y cada media hora, estas imágenes son compuestas y mapeadas en una esfera por xplanet según la posición relativa del sol. Los mapas planos son procesados ​​posteriormente por ImageMagick para cortar los 15 grados más cercanos a los polos norte y sur donde los datos de nubes no están disponibles.

He realizado una nueva implementación para una versión anterior de conky en la que ya estaba trabajando con datos del clima y una API de Open Weather Map.

 Para ello agregué el siguiente sript (en bash) para poder descargar el mapa mundial de luz solar desde el sitio die.net y adecuarlo con los datos meteorológicos que ya tengo:



#!/bin/bash

# -------------------------------------------------------------------
# File: GetWorldSunlightMap.sh
# By Julio Alberto Lascano http://drcalambre.blogspot.com/
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
# -------------------------------------------------------------------
# Get World Sun light Map from https://www.die.net/earth/
# Watch the sun rise and set all over the world on this real-time, 
# computer-generated illustration of the earth's patterns of sunlight 
# and darkness. 
# The clouds are updated daily with current weather satellite imagery. 
# -------------------------------------------------------------------
# Last modified:2022-09-15
# -------------------------------------------------------------------

# Working directory
DirShell="$HOME/.cache"

# World Sun light Map image
# Can't download direct with wget
# To get World Sun light Map image -> Pass Cloudflare DDOS Protection

curl https://static.die.net/earth/mercator/280.jpg --output "${DirShell}"/world_sunlight_map.jpg \
 -H 'Host: static.die.net' \
 -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0' \
 -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
 -H 'Accept-Language: en-US,en;q=0.5' \
 -H 'Referer: https://static.die.net/moon' \
 -H 'Connection: keep-alive' --compressed 

#EOF



Y en el archivo conky.conf e adicionado la siguiente sección para poder mostrarla y actualizarla con una frecuencia de cada 15 minutos (900 intervalos de 1 segundo que efectúa conky). Lo que nos brinda una vista, no solo de luz solar, sino también de las nubosidades sobre los continentes que son reales:



# --- World Sunlight Map --- #
${execi 900 bash ~/.config/conky/scripts/GetWorldSunlightMap.sh}
${image ~/.cache/world_sunlight_map.jpg -p 0,840 -s 254x142 -n}


Así es como se vería

 

Esta actualización para conky puede ser descargada desde acá


jueves, 15 de septiembre de 2022

conky con: API openWeatherMap mas una brújula para indicar la dirección del viento y la luna observada desde la Patagonia Argentina

El fondo de escritorio es una fotografía de un atardecer en una de mis salidas en bicicleta por la costanera de Rio Gallegos (Argentina)

 

 descargue los archivos de configuración desde acá 

el contenido del archivo open-weather-map-wather-conky-master.zip descargado es el que se muestra a continuación:


Para utilizar esta configuración de conky,  hay que registrarse en OpenWeatherMap haciendo clic acá lo que le generará su propia API-KEY


 

Dentro de la carpeta scripts se encuentran los siguientes archivos. Uno de ellos tendrá que ser modificado por usted con su propia API-KEY de OpenWeatherMap luego de su registración.

 
 el script openWeatherMap-weather.sh

 
#!/bin/bash
# -------------------------------------------------------------------
# File: openWeatherMap-weather.sh
# Type: Bash Shell Script
# By Julio Alberto Lascano http://drcalambre.blogspot.com/
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
#
# Last modified:2022-09-15
# -------------------------------------------------------------------
# RGL : Rio Gallegos city, Argentina lat= -51.6226&lon=-69.2181
# To get information in JSON format: https://openweathermap.org/current#current_JSON
# For help: https://openweathermap.org/current#parameter
# -------------------------------------------------------------------
# 5 day weather forecast: https://openweathermap.org/forecast5
# You can search weather forecast for 5 days with data every 3 hours by geographic coordinates. 
# All weather data can be obtained in JSON and XML formats.
# [cnt]	optional A number of days, which will be returned in the API response (from 1 to 16)
# Example of API call: http://api.openweathermap.org/data/2.5/forecast/daily?q=London&cnt=3&appid={API key}
# -------------------------------------------------------------------
# API call
# api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&appid={API key} 
# https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}
# -------------------------------------------------------------------

# Current Weather
urlweather="https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}&units=metric&lang=es"
# Extended forecast Weather
urlforecast="api.openweathermap.org/data/2.5/forecast?lat={lat}&lon={lon}&cnt=3&appid={API key}&units=metric&lang=es"

curl ${urlweather} -s -o ~/.cache/openweathermap.json
curl ${urlforecast} -s -o ~/.cache/openweathermap-forecast.json


El otro archivo que tendría que ser modificado por usted seria el que recaba los datos de las fases lunares. Yo para esta implementación he obtenido un muy buen script en bash GetMoon.sh que programo Fernando Gilli fernando<at>wekers(dot)org (mis respetos a él por el buen trabajo que hizo). 

Yo hice mi propia implementación de la manera que se muestra a continuación (usted es libre de adecuarlo al hemisferio en que vive para mostrar de manera correcta las fases lunares)



#!/bin/bash
# -------------------------------------------------------------------
# File: GetMoon.sh                                       /\
# Type: Bash Shell Script                               /_.\
# By Fernando Gilli fernandowekers(dot)org    _,.-'/ `",\'-.,_
# ------------------------                     -~^    /______\`~~-^~:
# Get Moon data from moongiant.com
# / OS : $Linux, $FreeBSD (X Window)
# ------------------------
# adapted for the current version by: 
#________          _________        .__                ___.                  
#\______ \_______  \_   ___ \_____  |  | _____    _____\_ |_________   ____  
# |    |  \_  __ \ /    \  \/\__  \ |  | \__  \  /     \| __ \_  __ \_/ __ \ 
# |    `   \  | \/ \     \____/ __ \|  |__/ __ \|  Y Y  \ \_\ \  | \/\  ___/ 
#/_______  /__|     \______  (____  /____(____  /__|_|  /___  /__|    \___  >
#        \/                \/     \/          \/      \/    \/            \/ 
# Julio Alberto Lascano http://drcalambre.blogspot.com/
# Last modified:2022-09-15
# -------------------------------------------------------------------

# Working directory
DirShell="$HOME/.cache"
# set language
lang="pt-es"

# put your hemisphere here:
# n for north
# s for south
hemisphere=s

# ****************************

wget -q -O ${DirShell}/raw "http://www.moongiant.com/phase/today" > /dev/null 2>&1
sleep 1
cp ${DirShell}/raw ${DirShell}/ico

[ -f ${DirShell}/moon_tmp.jpg ] && rm ${DirShell}/moon_tmp.jpg
[ -f ${DirShell}/moon.jpg ] && rm ${DirShell}/moon.jpg


sed -i -e '/^ *$/d' -e 's/^ *//g' ${DirShell}/raw
sed -i '/Illumination/!d' ${DirShell}/raw
sed -i 's/
/\n/g' ${DirShell}/raw sed -i 's|<[^>]*>||g' ${DirShell}/raw sed -i -e '4d' ${DirShell}/raw #ico name sed -i '/var jArray=\|"todayMoonContainer"/!d' ${DirShell}/ico sed -i -e 's/"\]};//g' -e 's/^.*today_phase\///g' -e 's/\.jpg.*$//g' ${DirShell}/ico cat ${DirShell}/ico >> ${DirShell}/raw img_in=$(sed -n 4p ${DirShell}/raw) [ -f ${DirShell}/ico ] && rm ${DirShell}/ico now=$(date --date="now" +%H) # Moon image if [[ $now -ge 18 || $now -lt 06 ]]; then # $now >=18 or $now < 06 --> day moon -> more light wget -q --output-document=${DirShell}/moon_tmp.jpg https://www.moongiant.com/images/today_phase/$img_in.jpg > /dev/null 2>&1 else # night moon -> dark # Can't download direct with wget # To get moon image -> Pass Cloudflare DDOS Protection curl https://static.die.net/moon/210.jpg --output "${DirShell}"/moon_tmp.jpg \ -H 'Host: static.die.net' \ -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0' \ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \ -H 'Accept-Language: en-US,en;q=0.5' \ -H 'Referer: https://static.die.net/moon' \ -H 'Connection: keep-alive' --compressed fi # mirror moon image, hemisphere south case $hemisphere in s) convert -flop -colorspace rgb ${DirShell}/moon_tmp.jpg ${DirShell}/moon.jpg rm ${DirShell}/moon_tmp.jpg ;; *) convert -colorspace rgb ${DirShell}/moon_tmp.jpg ${DirShell}/moon.jpg rm ${DirShell}/moon_tmp.jpg ;; esac # Translate pt-es (moon phase name) case $lang in pt-es) sed -i -e 's/New Moon/Luna Nueva/g' ${DirShell}/raw sed -i -e 's/Full Moon/Luna Llena/g' ${DirShell}/raw sed -i -e 's/Waxing Crescent/Luna Creciente/g' ${DirShell}/raw sed -i -e 's/Waxing Gibbous/Luna Menguante/g' ${DirShell}/raw sed -i -e 's/Waning Crescent/Creciente Menguante/g' ${DirShell}/raw sed -i -e 's/Waning Gibbous/Luna Menguante/g' ${DirShell}/raw sed -i -e 's/First Quarter/Cuarto Creciente/g' ${DirShell}/raw sed -i -e 's/Last Quarter/Cuarto Minguante/g' ${DirShell}/raw ;; esac # exec too bash ~/.config/conky/scripts/lune_die.sh > /dev/null 2>&1 #EOF

Con esto ya estaría en condiciones de volcar sus modificaciones en el lugar adecuado para que conky lea el archivo de configuración conky.conf de manera correcta:

vuelque sus archivos y carpetas en $HOME/.config/conky/


Para poder trabajar con archivos JSON es necesario instalar la utilidad jq

Con el comando jq puede transformar JSON de varias maneras, seleccionando, iterando, reduciendo y alterando documentos JSON. Yo lo utilizo desde conky.conf para ir recuperando los datos que ya se han descargado con la llamada a la API de openweathermap.

Para ello abra una terminal y como root instale jq  (Command-line JSON processor)


También para realizar ciertas operaciones matemáticas, buscar palabras,  patrones de palabras y reemplazarlos por otras palabras y/o patrones yo utilizo awk

Para ello desde la terminal y como root instale gawk


Para mostrar correctamente la luna en el hemisferio sur (Argentina) se hace uso de convert 

convert forma parte del paquete imagemagick . Instálelo como sigue: 


Los datos en formato json son traídos con la api de openweathermap.org mediante curl
Instálelo como sigue: 


Los datos de la Luna se obtienen desde el módulo Perl Astro::MoonPhasecon 

Con su o sudo desde la terminal necesita instalar el módulo perl mediante:




Luego ejecute desde su terminal el siguiente comando para que el escrip haga una primera llamada a la api de openweathermap para que genere los archivos json necesarios para que conky pueda mostrar por primera vez los datos necesarios y no ocasione ningún error. Conky luego seguirá haciendo las llamadas correspondientes.

Luego de ejecutar el script, este realizara una llamada a la API de openweathermap y generará por primera ves los archivos json



Con esto quedaría finalizado el instructivo y ya estaría en condiciones de correr conky desde cualquier terminal.