Mostrando las entradas con la etiqueta antiX. Mostrar todas las entradas
Mostrando las entradas con la etiqueta antiX. Mostrar todas las entradas

sábado, 13 de abril de 2024

icewm-remember-settings

GUI para gestionar tamaño y posición de cualquier ventana en icewm (escrito en bash, aparece en la versión 23 de antix. es compatible con versiones anteriores de antix). 



Un script de Bash diseñado para interactuar con la configuración de ventanas del gestor de ventanas IceWM. Este script permite a los usuarios guardar y restaurar configuraciones específicas de ventanas, como la geometría, el espacio de trabajo y la capa de una ventana. Además, ofrece funcionalidades para seleccionar y listar ventanas abiertas, y para mostrar una ventana de ayuda. Un análisis de las diferentes secciones y funcionalidades del script:

1. **Variables Iniciales y Configuración de Localización**:
   - Define dónde IceWM buscará los archivos de idioma.
   - Define algunas variables para controlar la interacción con la ventana, como el foco inicial y si se deben listar o seleccionar ventanas.

2. **Procesamiento de Argumentos**:
   - El script procesa argumentos de línea de comandos para ajustar las variables `select` y `list` que controlan si el script actúa en modo selección o listado.

3. **Localización del Archivo de Configuración (`winoptions`)**:
   - Intenta localizar el archivo `winoptions` en diferentes directorios configurados a través de variables de entorno o rutas comunes, para determinar dónde guardar las configuraciones de las ventanas.

4. **Funciones Definidas**:
   - `select_window`: Restablece el script para seleccionar una ventana cuando se lo invoque.
   - `save_changes`: Guarda o elimina configuraciones de una ventana basadas en la información temporal almacenada y luego elimina el archivo temporal.
   - `help_dialog`: Muestra una ventana de diálogo de ayuda utilizando `yad`, una herramienta para crear cuadros de diálogo GTK.
   - `list_dialog`: Lista todas las ventanas abiertas permitiendo al usuario seleccionar una para configurar.
   - `main_dialog`: Es la función principal que interactúa con el usuario para obtener configuraciones de ventana, mostrar y manipular datos, y llamar a `save_changes` si es necesario.

5. **Ciclo Principal de Ejecución**:
   - El script entra en un bucle controlado por la variable `loop`.
   - Dentro del bucle, dependiendo de las variables `select` y `list`, llama a las funciones `main_dialog` o `list_dialog` para procesar o interactuar con las ventanas.
   - El script puede terminar o continuar basado en interacciones del usuario y si se seleccionó alguna opción de listado o selección de ventanas.

6. **Limpieza Final**:
   - Limpia y elimina las funciones y variables de ayuda para evitar que se ejecuten o muestren de nuevo.

### Aspectos Notables y Consideraciones:

- **Flexibilidad y Personalización**: El script ofrece varias formas de interactuar con la configuración de ventanas de IceWM, lo que lo hace útil para usuarios que desean tener un control más fino sobre el comportamiento de su entorno de escritorio.
 

- **Dependencia de Herramientas Externas**: Dependencias como `yad`, `wmctrl`, e `icesh` son cruciales para la funcionalidad del script. Asegúrate de que estas herramientas estén instaladas en el sistema donde se ejecuta el script.
 

- **Manejo de Archivos Temporales**: El script hace un uso extenso de archivos temporales para manejar la configuración y los datos de las ventanas, lo cual es práctico pero requiere asegurarse de que se limpian adecuadamente para evitar residuos o fugas de información.
 

- **Robustez**: El script verifica la existencia de directorios y archivos antes de proceder, lo cual es una buena práctica para evitar errores de ejecución.

En resumen, el script es una herramienta avanzada para gestionar configuraciones específicas de ventanas en IceWM, diseñada para ser utilizada por usuarios que quieran optimizar su experiencia de usuario en entornos Linux con IceWM.


 
#!/bin/bash
# -*- mode:sh -*-
#
# This program is based on BobC's, PPC's and icewm team's effort.
#

# localization
TEXTDOMAINDIR=/usr/share/locale
TEXTDOMAIN=icewm-remember-settings

#initial values
focus="-f"
select=0
list=0
loop=1

# check for extra options
while [[ $# -ge 1 ]]
do
    case $1 in
        (-s) select=1 ;;
        (-l) list=1 ;;
    esac
    shift
done

# locate winoptions
if [[ -d $ICEWM_PRIVCFG ]]
then
	winoptions=$ICEWM_PRIVCFG/winoptions
elif [[ -d $XDG_CONFIG_HOME && -d $XDG_CONFIG_HOME/icewm ]]
then
	winoptions=$XDG_CONFIG_HOME/icewm/winoptions
elif [[ -d $HOME/.config/icewm ]]
then
	winoptions=$HOME/.config/icewm/winoptions
elif [[ -d $HOME/.icewm ]]
then
	winoptions=$HOME/.icewm/winoptions
else
	echo "$0: Cannot find your icewm config directory" >&2
	exit 1
fi

#function to call again this program, but having the user click on the specific window
select_window(){
	echo "selecting window"
	# remove temporary file
	rm -f -- "$temp"
	#give select option
	select=1
	focus=
	loop=1
}

#function to add/remove changes
save_changes(){
	# delete all previous data for the program
	#delete geometry
	sed -i -e "/$cls_geo/d" "$winoptions"
	#delete layer
	sed -i -e "/$cls_lay/d" "$winoptions"
	#delete workspace
	sed -i -e "/$cls_wsp/d" "$winoptions"
	
	# add new selected information for the program, reading the temp file
    while IFS= read -r line
	do
		# geometry
		if [[ "$line" == "geometry" ]]
		then
			# add new
			echo "$new_geo" >> "$winoptions"
		fi
		# layer
		if [[ "$line" == "layer" ]]
		then
			# add new
			echo "$new_lay" >> "$winoptions"
		fi
		# workspace
		if [[ "$line" == "workspace" ]]
		then
			# add new
			echo "$new_wsp" >> "$winoptions"
		fi
	done < "$temp"
	
	# remove temporary file
	rm -f -- "$temp"
	
	# let icewm reload the winoptions
	icesh winoptions
	
	#stop select option
	select=0
	
	#if list not selected, stop loop
	if [[ list -eq 0 ]]; then
	loop=0
	fi
}

#launches help window
help_dialog()
{
	yad --image="gtk-dialog-info" --height=250 --width=400 --scroll \
	--title=$"HELP" --class="IceWM-remember-settings" --name="help" --borders=10 --center \
	--form --field=$"Save the size and position, workspace \
and layer of a window using the IceWM-remember-settings app.":LBL '' \
	--field=$"Next time you launch the program, it will remember the \
window properties last saved.":LBL '' \
	--field=$"You can also delete this information unticking all options.":LBL '' \
	--field=$"Use the Select other option to select a different \
window/program to configure.":LBL '' --separator="" --button=gtk-quit:0 --buttons-layout=center
}

#launches list dialog
list_dialog(){
	#List names of all currently open windows (we may have to exclude Conky from the list) - Original version over at: https://pastebin.com/13em3H11
	wmctrl -l|awk '{$3=""; $2=""; $1=""; print $0}' > /tmp/windowlist.txt
	#Window to be exluded from the list:
	#exclude_from_window_list="Conky (dhc"
	grep -v "Conky (" /tmp/windowlist.txt > /tmp/windowlist2.txt; mv /tmp/windowlist2.txt /tmp/windowlist.txt
	# Use Yad to select window to "Remeber":
	selection=$(yad --class="IceWM-remember-settings" --name="list" --title=$"Add/Remove IceWM Window Defaults" \
--width=550 --height=400 --borders=20 --text=$"Select a program. Store it's window properties." \
--text-align=center --center --separator=" " --list  --column=$"What window configuration you want antiX to remember/forget?" \
--button=gtk-ok:0 --button=gtk-quit:1 < /tmp/windowlist.txt)
	#make the window the user selected the active one:
	wmctrl -R $selection
	# if nothing was selected simply exit
	[ -z "$selection" ] && loop=0 && echo "nothing was selected" && exit
}

main_dialog(){
	
	#restart data
	geo=
	x=
	y=
	left=
	top=
	class=
	layer=
	work=
	appname=
	appclass=
	
	# create temporary file
	temp=$(mktemp)
	
	# obtain window settings
	icesh $focus getGeometry getLayer getWorkspace \
		prop WM_CLASS prop _NET_FRAME_EXTENTS >"$temp"

	# file must have something
	if [[ ! -s $temp ]]
	then
		exit 1
	fi

	# remove punctuation
	sed -i -e 's|[+,]| |g' "$temp"

	# read values from file
	while read a b c d e f g h
	do
		if [[ $a =~ ^0x ]]
		then
			if [[ $b =~ ^WM_CLASS ]]
			then
				class=$d
			elif [[ $b =~ ^_NET_FRAME_EXTENTS ]]
			then
				left=$d
				top=$f
			elif [[ $b =~ ^[0-9]+$ || $b -eq -1 || $c = '"All"' ]]
			then
				work=$b
			elif [[ $b =~ ^[A-Z][a-z] ]]
			then
				layer=$b
			fi
		elif [[ $a =~ ^[0-9] ]]
		then
			geo=$a
			x=$b
			y=$c
		fi
	done <"$temp"
	
	# remove temporary file
	rm -f -- "$temp"
	
	#get more values:
	appclass=${class%.*} #delete last dot
	appname=${appclass%.*} #get window name
	appclass=${appclass#*.} #get window class
	appgeo="${geo}+${x}+${y}"

	# correct geometry
	let x-=$left
	let y-=$top

	cls_geo="${class}.geometry"
	new_geo="${cls_geo}: ${geo}+${x}+${y}"

	cls_lay="${class}.layer"
	new_lay="${cls_lay}: ${layer}"

	cls_wsp="${class}.workspace"
	new_wsp="${cls_wsp}: ${work}"
	
	#recreate temp file for yad script
	temp=$(mktemp)

	# main yad dialog
	yad --title=$"Add/Remove IceWM Window Defaults" --class="IceWM-remember-settings" --name="IceWM-remember-settings" \
		--text=$"Entries shown below are for the $appclass ($appname) window.\n\n\
All options marked will be saved, all unmarked will be deleted.\n\n \
Note: Workspace number shown is the window's current workspace. \n \
	Don't worry that it appears too low.\n\n" \
		--center --borders=20 --checklist --list --separator="" \
		--column=$"Select" --column="Entry" --column=$"Type" --column=$"Value" \
	true "geometry" $"Geometry" "$appgeo" \
	true "layer" $"Layer" "$layer" true $"workspace" "Workspace" "$work" >"$temp" \
		--hide-column=2 --print-column=2 --height=320 \
		--button=gtk-help:"bash -c help_dialog" --button=$"Select other":2 --button=gtk-ok:0 --button=gtk-quit:1 	
	
	##SELECTION MADE##
	exval=$?
		case $exval in
			0) save_changes;;
			2) select_window;;
			1) loop=0 ;;
			252) loop=0 ;;
		esac
	
	# remove temporary file
	rm -f -- "$temp"
}

###SCRIPT STARTS HERE###

#ready help window
export -f help_dialog
select_window
	
while [[ $loop -eq 1 ]]; do
    if [[ $select -eq 1 ]]
	then
		focus=
		main_dialog
	elif [[ $list -eq 1 ]]
	then
		focus="-f"
		list_dialog
		main_dialog
	else
		loop=0
		focus="-f"
		main_dialog
	fi
done

#clean extra yad windows
unset help_dialog


miércoles, 17 de enero de 2024

antiX-net - Construcción desde cero

Construcción desde cero 🏗️


 
Luego de inciar desde la ISO de antix-net:


  
antix-net 

(1) partición gpt - /dev/sda - 20G

device		Size	Type
------------------------------------------------------
/dev/sda1	100M	BIOS boot	
/dev/sda2	14G	Linux root (x86-64)
/dev/sda3	5G	Linux home
/dev/sda4	922M	Linux swap

(2) Instalar seatd - Seat Daemon es parte del entorno gráfico SDDM. SDDM, al ser un gestor de inicio de sesión más completo, podría tener una huella de memoria ligeramente mayor en comparación con SLiM. (Y)

(3) No intalar elogind/dbus-x11 (N)

(4) NO seguir instalando paquetes desde cli-aptiX. (N)

(5) Continuar (Y)

(6) Instalar GRUB en MBR (legacy - Master Boot Record)  (1)

(7) Computer name (default is 'antix1') (enter)

(8) set up localisation ? (y)

Seleccionar los mirror mas cercanos
[*] es_UY.UTF-8 UTF-8

(9) set up keyboard ? (y)
seleccionar Generic 105-key PC

(10) set up console layout? (n)

(11) set up system timezone ? (n)

(12) Is remastered/snapshot ? (n)

(13) Type in your default user name: antixnet

-------------------------------------------------
Si desea intalar la variante con icewm ir a (24)
-------------------------------------------------

Interfaz gráfica

(14) sudo apt install neofetch
(15) sudo apt install xorg
(16) sudo apt install lightdm (gestor de inicio de sesión  - display manager) 

Entorno gráfico

(17) sudo apt install lxde (entorno de escritorio)
(18) sudo apt install pulseaudio
(19) sudo apt install htop

-------------------------------------------------
Linux swap (/dev/sda4 -	922M)

(20) sudo mkswap /dev/sda4
     sudo swapon /dev/sda4

     Agregar la partición /dev/sda4 a /etc/fstab para que este disponible al inicio.     

---------------------------------------------------
(21) sudo apt install firefox-esr

free office:  descargar desde firefox free office

(22) sudo apt install libcurl4
(23) sudo dpkg -i softmaker-freeoffice-2021_1068-01_amd64.deb


reboot


---------------------------------------------------
Variante con icewm (entorno de esritorio)

(24) apt purge lightdm elogind lxde xorg (si se intalo previamente)

(25) apt install xorg seatd consolekit slimski icewm desktop-defaults-icewm-antix icewm-themes-antix neofetch arandr roxterm-common roxterm-gtk2 terminator lxappearance zzzfm sudo screenshot-antix antix-goodies volumeicon-alsa-legacy alsamixer-equalizer-antix network-manager-gnome leafpad xarchiver gnome-themes-extra gnome-accessibility-themes obsidian-icon-theme papirus-icon-theme 

(26) $ cp -r /etc/skel/.icewm ~/

antiX se envía con una versión más nueva del paquete IceWM que la que Debian normalmente tendrá en los repositorios y, por lo general, lo mantendrá actualizado con versiones aún más nuevas directamente del desarrollador.

---------------------------------------------------
Recontruir menu antiX
desktop-menu --write-out-global

Mi archivo ~/.icewm/keys

  
########################################################################
#Sample icewm keys for antiX.
########################################################################
key "Super+p" pcmanfm
key "Super+l" leafpad
key "Super+h" x-terminal-emulator" -e htop


Mi archivo ~/.icewm/toolbar

  
# This is a default toolbar definition file for IceWM
#
# Place your personal variant in $HOME/.icewm directory.

### Commonly used applications
prog "skippy-xd" /usr/share/icons/papirus-antix/48x48/actions/dialog-rows-and-columns.png skippy-xd
prog "antiX Updater" /usr/share/icons/papirus-antix/48x48/categories/software-sources.png /usr/local/bin/yad-updater
#prog "Software Installer" /usr/share/icons/papirus-antix/48x48/apps/packageinstaller.png su-to-root -X -c packageinstaller
prog "Unplug Removable Device" /usr/share/icons/papirus-antix/48x48/devices/drive-removable-media-usb.png unplugdrive.sh
prog "Terminal" /usr/share/icons/papirus-antix/48x48/apps/terminal.png x-terminal-emulator
prog "Terminator" /usr/share/icons/papirus-antix/48x48/apps/terminator.png terminator 
prog "htop" /usr/share/icons/papirus-antix/48x48/apps/htop.png x-terminal-emulator -e htop 
prog "File Manager" /usr/share/icons/papirus-antix/48x48/apps/file-manager.png pcmanfm
prog "Web Browser" /usr/share/icons/papirus-antix/48x48/apps/web-browser.png desktop-defaults-run -b

#prog "IceWM Toolbar Icon Manager" /usr/share/icons/papirus-antix/48x48/categories/icewm_editor.png /usr/local/bin/icewm-toolbar-icon-manager
#prog "IceWM Manager" "/usr/share/icons/papirus-antix/48x48/categories/icewmcc.png" /usr/local/bin/icewm-manager-gui


Mi archivo ~/.icewm/startup

  
#!/bin/bash
#Check localization of Zzz File Manager:r:
if [ ! -f ~/.config/zzzfm/zzzfm_already_localized ]; then zzzfmlocalize ; fi
pcmanfm --desktop &
volumeicon &
nm-applet &
clipit &
~/.screenlayout/default.sh &


domingo, 10 de diciembre de 2023

Reviviendo Macs de hace una década con antiX

Las computadoras: 
  • iMac5,1 de 2007. 1 GB de RAM. 
  • MacBook5, 1 de 2008. 2 GB de RAM.
  • MacBook Air5, 2 de 2012. 8 GM de RAM.

 


antiX 23 es la última versión de Linux lanzada por el proyecto "orgullosamente antifascista", basada en Debian 12 y lleva el nombre en código Arditi del Popolo.

El proyecto antiX "orgullosamente antifascista" ha lanzado su última edición, basada en Debian 12. Esta versión lleva el nombre en código Arditi del Popolo  "los atrevidos del pueblo"  en honor a un grupo antifascista italiano de la década de 1920 formado para oponerse al régimen de Mussolini. 

antiX no se opone, como su nombre podría implicar, al sistema de ventanas X: sus ediciones principales son gráficas, con una variedad de entornos (aunque hay una edición súper mínima de solo texto si eso es lo que quieres).

  1. Se destaca por oponerse a las tendencias modernas en Linux de escritorio, evitando el uso de systemd, elogind, Wayland, y herramientas de empaquetado pesadas como Flatpak o Snap.
  2. En lugar de un escritorio integrado, antiX ofrece una variedad de herramientas que proporcionan todas las funciones necesarias, desde iniciadores de aplicaciones hasta administradores de archivos.
  3. A pesar de la ausencia de un entorno de escritorio estándar, la distribución es rápida y eficiente, con la edición de 64 bits con kernel 6.1 utilizando menos de 200 MB de memoria.
  4. antiX se compara favorablemente con otras distribuciones minimalistas contemporáneas, como Alpine Linux, Arch Linux, o Void Linux, destacando su facilidad de uso y configuración.
  5. La distribución incluye aplicaciones conocidas como Firefox ESR y LibreOffice, junto con alternativas menos conocidas pero más pequeñas y rápidas.
  6. A diferencia de Linux en los años 90, antiX proporciona un entorno gráfico completo con sonido, redes, etc., preconfigurado y funcionando tras la instalación estándar.
  7. antiX se basa en Debian y utiliza los comandos apt familiares para administrar el software.

Se abren antiX 23 con IceWM y un par de ventanas de ROX Filer. Parece una computadora de escritorio, funciona como una computadora de escritorio, pero más rápido

Lo que falta son las partes malas. Desde el Linux moderno, las múltiples herramientas enormes y pesadas, con demasiada frecuencia escritas en lenguajes de programación interpretados relativamente lentos, cada uno de los cuales genera un gigabyte de dependencias; y peor aún, supuestamente "aplicaciones locales" que en realidad son subprogramas web implementados en Javascript, por lo que cada herramienta arrastra consigo un navegador web integrado completo. Y del Linux de los años 90, las asperezas: esta es una distribución moderna, con soporte de hardware moderno, y la instalación estándar le brinda un entorno gráfico completo con sonido, redes, etc., todo preconfigurado y funcionando.

Contrasta con la mayoría de las otras distribuciones mínimas contemporáneas, como Alpine Linux , Arch Linux o Void Linux, por citar algunos ejemplos aleatorios. Si bien todas estas son distribuciones muy capaces, debe realizar una cantidad sustancial de instalación y configuración manual después de la instalación si desea un escritorio gráfico y la variedad habitual de editores de texto, reproductores multimedia, herramientas de comunicación, etc. También tienen sus propias herramientas de empaquetado idiosincrásicas, etc., por lo que para comenzar a personalizar su nueva distribución, probablemente tendrá que dedicar algo de tiempo a Google para encontrar los comandos y su sintaxis.

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;



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.



domingo, 4 de septiembre de 2022

Conky corriendo para un escritorio (minimalista) con Linux antix 4.9.0-264-antix.1-amd64 (con rox-icewm)

Conky ejecutándose para un escritorio minimalista 

con Linux antix 4.9.0-264-antix.1-amd64 (con rox-icewm) 

 

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)

Para el reloj digital utilice la fuente LCD2. La pueden descargar desde acá

Y para instalarla utilice font-manager 

esta es la  codificación para el reloj:


 
##################
##     TIME     ##
##################

${font LCD2:bold:size=48}${alignc 8}${color4}${time %k}${voffset -20}:${voffset 20}${time %M}${font}${color}

 

Para los datos meteorológicos utilizo wttr.in.

wttr.in es un servicio de pronóstico del tiempo orientado a consola que admite varios métodos de representación de información, como secuencias ANSI orientadas a terminal para clientes HTTP de consola (curl, httpie o wget), HTML para navegadores web o PNG para visores gráficos.
 

la llamadas las hago con curl:


 
##################
##    Weather   ##
##################

${alignc}Clima Rio Gallegos

${font :bold:size=12}${alignc}${color4}${texeci 3600 curl -s "wttr.in/RGL?lang=es&format=+%c+%t+%w"}${font}${color}
${alignc}${color4}${texeci 3600 curl -s "wttr.in/?lang=es&format=+%C+%h+%p"}${font}${color}

${alignc}Amanecer/Puesta de sol
${alignc}${color4}${texeci 3600 curl -s "wttr.in/?lang=es&format=+%S+%s"}${font}${color}

${alignc}Fase lunar
${font :bold:size=12}${alignc}${color4}${texeci 3600 curl -s "wttr.in/RGL?lang=es&format=+%m+%M"}${font}${color}


 El archivo .conkyrc de configuración lo pueden descargar acá

jueves, 19 de febrero de 2015

antiX

antiX es una distribución de linux en live CD rápida, ligera y fácil de instalar basada en Debian Testing para equipos Intel-AMD x86 compatibles. antiX ofrece a los usuarios la "Magia d'antiX" en un entorno apropiado para ordenadores viejos. ¡Así que no se tendrás que tirar a la basura tu viejo ordenador todavía! El objetivo de antiX es proporcionar un sistema operativo libre ligero pero totalmente funcional y flexible tanto para novatos como para usuarios experimentados de Linux. Debería funcionar en todos los ordenadores, desde un viejo PII 266 con 64MB y 128MB de swap hasta hasta los ordenadores más modernos y potentes. Se recomienda 128MB de RAM para antiX. También se puede usar antiX como un cd de recuperación con un arranque rápido.