Creando extensiones para Gnome Shell

Hace un tiempo atrás me pregunte cuan complejo seria hacer un extensión para Gnome Shell, así que mejor me decidí a hacer una. Tenia la motivación pero faltaba algo muy importante… una idea. Revolviendo un poco las neuronas surgió la idea de hacer una extensión que me mostrara un aliento diario de Daisaku Ikeda.

El esquema inicial era algo así:

Hay algunas cosas que debemos tener en cuenta antes de comenzar, como

  1. La extensiones son escritas en gjs (un binding de JavaScript para Gnome)
  2. Las extensiones serán guardadas en ~/.local/share/gnome-shell/extensions/

Manos a la obra:

$ cd ~/.local/share/gnome-shell/extensions/
$ gnome-shell-extension-tool --create-extension

Este comando crea un proyecto básico de extensión, este tiene dentro:

nuevaExtension@siddhartha.org
—- extension.js
—- metadata.json
—- stylesheet.css

Ahora es solo cosa de comenzar a editar extension.js y stylesheet.css. :)

Para dubugear nuestras aplicaciones debemos escribir al log

global.log('Hola');

Y para ver la salida del debug debemos leer el archivo log de GDM

$ tailf ~/.cache/gdm/session.log

Cada vez que hagamos modificaciones a nuestra extension debemos reiniciar Gnome Shell, esto lo hacemos ejecutando r, ALT+F2 r ENTER.

Una buena forma de comenzar a familiarizarse con las extensiones y aprender más del lenguaje, es descargar y leer extensiones y también leer la la documentación oficial de Gnome aquí.

Un screenshot de como quedo la extensión:

La pueden descargar de aquí para probarla.

Fuentes:
https://live.gnome.org/GnomeShell/Extensions/StepByStepTutorial
https://live.gnome.org/GnomeShell/Extensions/FAQ

De vuelta!

Han pasado casi 10 meses de que perdí mi blog, pero gracias a Carlos Albornoz ya está de vuelta (gracias amigo por guardar respaldos).

Para publicar algo les cuento que el día Martes 28 de Febrero a las 20:00 se llevara a cabo la primera cicletada nocturna en Talca, el punto de encuentro será en la plaza Cien Fuegos (1 sur 3 y 4 ote).


 Evento en Facebook: https://www.facebook.com/events/322470181124179/

Organiza: Ciclismo Urbano Talca

Saludos!

Reteneitor3000, the beginning

logoReteneitor3000_2

<–Explicación LOL–>

Señora, ¿Quiere que su hijo aprenda las tablas de multiplicar?, ahora con Reteneitor3000 se puede mientras su hijo escucha sus regetones y villeras favoritas!

<–Fin explicación LOL–>

Reteneitor es un software para mezclar pistas de audio con texto, ¿texto?, si, texto obviamente convertido a voz.
Esta herramienta puede ser utilizada para la enseñanza de niños a través de asimilación, o para tratar de aprender la latera materia del latero ramo de la universidad. Se espera que esta herramienta no sea usada para copiar en algún examen, todo queda a criterio del usuario.

Reteneitor3000 esta en versión alpha, si alguien quiere contribuir, bienvenido sea.

Si quieres probar Reteneitor3000 sigue estos sencillos pasos:

Continue reading

Sprites Pygame

Hace tiempo quería manejar un sprite en Pygame, pero por cuestiones de tiempo no lo había hecho. Hoy es noche de ocio así que a codear :D

Buscando en la documentación de Pygame encontré una función bien entretenida, subsurface, la cual sirve para obtener mediante coordenadas cierta parte de una imagen.

sprite.subsurface(Xi,Yi,Xf,Yf)

Lo que podemos hacer es guardar las los pedazos de la imagen en un vector

Ex:

movimiento=[]
movimiento.append(sprite.subsurface(1,1,53,71))
movimiento.append(sprite.subsurface(55,1,53,71))

Con un poco de imaginación y unos Sprites robados de http://www.losersjuegos.com.ar llegaremos a:

Pueden descargar la imagen desde aquí
El código desde acá
O si no pueden descargar el pack desde here!

Saludos!
dientes

Arkathon 0.5.0

logosombra

Después de tiempos libres de programación hemos logrado llegar a la versión 0.5.0 de Arkathon, esperamos llegar pronto a la versión 1.

En esta nueva versión de Arkathon podemos encontrar:
- Implementación de High Score con ConfigParser.
- Solucion a uno que otro bug :P

Descarga:
Arkathon 0.5.0

¿Como jugar?
Primero debemos instalar la librería pygame

# apt-get install python-pygame

Y para correrlo:

$ python arkathon.py

Saludos!
dientes

Doctor, me olvido de tomar la pastilla D:

En entradas anteriores habrán visto que el doctor me receto Clorpromazina, la cosa es que me olvido de tomármela. Así que pensé… y llegue a esto:

Ingredientes:
- Un poco de script (poco)
- Zenity
- Mpg123
- Cron
- Sonido, azúcar, flores y muchos colores :D

Descargamos mpg123

# apt-get install mpg123

Creamos un pequeño scrip para que nos avise tomar la pastilla

#!/bin/bash
mpg123 /home/brutalchrist/Música/soundsfx/videobeep.wav.mp3 2&gt;/dev/null &amp;
if $(zenity --question --text "Te acordaste de la pastilla") ; then
DISPLAY=":0" zenity --info --text "Bakán                            "
else
mpg123 --loop 30 /home/brutalchrist/Música/alarm.mp3 2&gt;/dev/null &amp;
DISPLAY=":0" zenity --notification --text "Que estas esperando, tomatela!"
killall mpg123
fi

Agregamos el script a /usr/bin y le damos permisos de ejecución:

# cp pastilla /usr/bin/pastilla
# chmod +x /usr/bin/pastilla

Ahora solo debemos hacer se que se ejecute a cierta hora, para esto usaremos cron. Editamos el crontab ubicado en /etc/crontab, esta imagen gráfica el formato del crontab:
cron

Si queremos que el script se ejecute todos los días a las 23:00 se verá algo así:

# m h dom mon dow user  command
00 23   * * *   root    DISPLAY=":0" /usr/bin/pastilla

El DISPLAY=”:0″ es importante ya que se necesita esto para ejecutar aplicaciones gráficas, ¿ahora entiendes por que lo tenia en el script? ;D

Un pequeño vídeo demostrativo:

Saludos!
:B

Doctor! Ahora mi PC esta cantando, ¿es hora de la Clorpromazina? D:

No conforme con que me hablara me pregunte si seria posible hacer que cantara. Recordé esos días jugando Wolfestein 3D, ellos hacían los sonidos con el speaker del PC, ¿por que yo no podía componer un tema con ese Speaker?
Buscando, buscando llegue a un paquete que se llama beep, era todo lo que necesitaba.

# apt-get install beep

Al aplicarle al man de beep veremos que es muy fácil de utilizar -f la frecuencia, -l la duración, etc.

Un buen tema es Vela, Together We Await The Storm de Human Abstract, para hacer la intro de este tema este tema hice un pequeño script en Python.

import os
#Vela, Together We Await An The Storm - The Human Abstract

intro=[(150,300), (170,300), (180,700), (170,600), (150,100), (170,100), (150,100), (120,1400), (115,1300)]
salida='beep -f70 -l1300 '
k = 1

while k <= 4:
    for i,j in intro:
        salida = salida + ' -n -f'+ str(i) +' -l'+ str(j)
    salida = salida + ' -D300 -n -f70 -l1300 '
    k = k+1

os.system(salida)

Y después simplemente lo agregué en el startup (~/.fluxbox/startup) de Fluxbox.

$ python ~/ocio/vela.py &

Un bello vídeo demostrativo (perdonen la calidad, solo tenia a mano el celular)

Saludos!