miércoles 21 de octubre de 2009

Avant Window Navigator en Acer Aspire One

Avant Window Navigator es una aplicación que permite dar a nuestro sistema linux la funcionalidad del SO de mac, entre otras cosas nos permite tener lanzadores de aplicaciones animados y sustituye la lista de ventanas en el panel de gnome.

Si lo que deseamos es hacer que nuestro escritorio en linux parezca mac os en nuestra Acer Aspire One con debian lo primero que debemos hacer es instalar avant y xcompmgr (este último es necesario en caso de no tener algun otro gestor composite como beryl), esto lo hacemos con el siguiente comando siendo root:

# apt-get install avant-window-navigator xcompmgr

Ahora configuremos nuestro xorg para activar las opciones de composite y aceleración 3d. Abrimos el archivo /etc/X11/xorg.conf y modificamos las sección Device para que quede como a continuación:

Section "Device"
Identifier "Configured Video Device"
Driver "intel"
Option "XAANoOffscreenPixmaps" "True"
EndSection


Y agregamos lo siguiente al final del archivo:

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "Composite" "Enabled"
EndSection


Guardamos y vamos al menú Sistema->Preferencias->Sesiones

Y agregamos avant y xcompmgr como Programas al Inicio.

Listo reiniciamos nuestro servidor X (ctr+alt+backspace) y tendremos nuestro sistema estilo mac, solo resta jugar con la configuración de avant.

Les dejo una captura de pantalla de como se ve en mi Netbook.

domingo 9 de noviembre de 2008

Nuevo banner

Bueno como ya pudieron notar estamos estrenando banner.
Esta vez fue diseñando usando herramientas libres:

inkscape el cual es una excelente herramienta para creación de imágenes vectoriales.
gimp que es un poderoso software para retoque de imágenes (y en este caso fue el que me permitió animar el banner)


Así desmentimos nuevamente aquello de que en linux no hay buenas herramientas para diseño, además del hecho de que flash no fue necesario.

PD. Tal vez el banner no sea perfecto, pero yo no soy diseñador ;)

domingo 14 de septiembre de 2008

Pidgin pop

Esta vez lo que me dejó un fin de semana de programación fue un nuevo plugin para mi pidgin, resulta que experimentando un poco comencé a desvariar ideas y después de un rato se me ocurrió darle soporte a pidgin para conectarse a un servidor pop3 de modo que me avise cuando tenga correos nuevos.

Fue algo muy entretenido, lo primero que hice fue leerme un poco sobre la documentación de pidgin en el siguiente enlace http://developer.pidgin.im/wiki/CHowTo de ese modo comprendí la metodología para crear plugins.

En seguida me di cuenta que necesitaba algo para conectarme con el servidor pop, así que buscando un poco me encontré con esta librería bastante útil http://savannah.nongnu.org/projects/libspopc/ así que me puse a descargarla e instalarla, después solo fue cuestión de leer su documentación, y listo hasta ese momento ya tenía un plugin que me avisaba cada cierto tiempo que tenía correo, pero los datos de configuración estaban fijos así que decidí que la mejor manera de configurarlo era por medio de un archivo XML.

Así que a buscar la documentación de libxml http://xmlsoft.org/html/index.html y listo aprendiendo como manejar un xml desde C pude hacer que mi plugin fuera configurable, desafortunadamente el archivo lo edito a mano, pero pronto haré una interfaz para esta tarea.

Bueno esa fue mi experiencia de desarrollo de plugins, el código lo listo a continuación, como pueden observar es algo muy simple:


#define PURPLE_PLUGINS

#include
#include
#include
#include
#include

#include"debug.h"
#include "notify.h"
#include "plugin.h"
#include "version.h"

PurplePlugin *poppidgin_plugin = NULL;
char *server;
char *username;
char *password;
int port;


void getSettings(){
xmlNodePtr root;
xmlDocPtr doc;
doc = xmlParseFile(".purple/pop/pop.xml");
root = xmlDocGetRootElement (doc);
username=xmlGetProp (root, "username");
password=xmlGetProp (root, "password");
server=xmlGetProp (root, "server");
port=atoi(xmlGetProp (root, "port"));
}


static void
get_mail(PurplePluginAction *action)
{

pop3sock_t mysock;
char* srvdata=NULL;
struct hostent myserver;
struct sockaddr_in myconnection;

mysock=pop3_prepare(server,port,&myconnection,&myserver);
if(BAD_SOCK==mysock){
purple_notify_message(poppidgin_plugin, PURPLE_NOTIFY_MSG_INFO,
"error", "no network",
NULL, NULL, NULL);
exit(1);
}
srvdata=pop3_connect(mysock,&myconnection);
if (!srvdata){
purple_notify_message(poppidgin_plugin, PURPLE_NOTIFY_MSG_INFO,
"error", "no connection",
NULL, NULL, NULL);
exit(1);
}
free(srvdata);
srvdata=pop3_user(mysock,username);
free(srvdata);
srvdata=pop3_pass(mysock,password);
free(srvdata);

srvdata=pop3_stat(mysock);
if(stat2last(srvdata)>0){
gchar *msg = g_strdup_printf(("You have %d mail(s)"),stat2last(srvdata));
purple_notify_message(poppidgin_plugin, PURPLE_NOTIFY_MSG_INFO,
"new mail", msg,
NULL, NULL, NULL);
}
}


static GList *
plugin_actions(PurplePlugin *plugin, gpointer context)
{
GList *list = NULL;
PurplePluginAction *action = NULL;
action = purple_plugin_action_new("get mail(s)", get_mail);
list = g_list_append(list, action);
return list;
}



static gboolean
plugin_load(PurplePlugin *plugin) {
getSettings();
get_mail(NULL);
g_timeout_add(600000, get_mail, NULL);
return TRUE;
}


static PurplePluginInfo info = {
PURPLE_PLUGIN_MAGIC,
PURPLE_MAJOR_VERSION,
PURPLE_MINOR_VERSION,
PURPLE_PLUGIN_STANDARD,
NULL,
0,
NULL,
PURPLE_PRIORITY_DEFAULT,

"core-pop",
"POP pidgin!",
"1.1",

"POP pidgin Plugin",
"POP pidgin Plugin",
"raag ",
"http://raagpc.blogspot.com",

plugin_load,
NULL,
NULL,

NULL,
NULL,
NULL,
plugin_actions,
NULL,
NULL,
NULL,
NULL
};

static void
init_plugin(PurplePlugin *plugin)
{
}

PURPLE_INIT_PLUGIN(pop_pidgin, init_plugin, info)



ahora pongo un par de capturas de mi pequeño experimento:







Bueno, eso es todo por hoy, si alguién está interesado ya saben en donde encontrarme

Saludos y hasta la próxima

miércoles 20 de agosto de 2008

Diferencias

Dicen que una imagen dice mas que mil palabras, así que aquí los dejo con un par de imagenes para que encuentran las diferencias entre 2 sistemas operativos.


Primero, "GNU/Debian Linux" un Sistema Operativo estable y perfecto para cualquier tarea.




Bueno, el siguiente creo que todos lo conocen "windows" XD

lunes 4 de agosto de 2008

Cucú


El reloj cucú, ¿quién no recuerda aquellos relojes de los que cada hora o media hora salía un pajarito que cantaba el famoso "cucú"?

Pues cuando yo era pequeño me gustaba mucho ir a casa de mis bisabuelos por que tenían un cucú muy bonito en el cual además del canto del cucú salían unas muñequitas bailando muy chistosamente, así que nostálgicamente me puse a hacer mi propio cucú moderno.

Dicho cucú conciste en un pequeño shellscript y un archivo de audio wav (ja ja ja, ¿que pensaron? ¿Que había hecho algo con electrónica? no tengo el tiempo para eso).

A continuación comparto con ustedes la manera de implementar un reloj cucú en su distribución favorita de linux sin nececidad de hardware extra.

Primero creamos el script; tecleamos:

$ nano cucu.sh

Y agregamos las siguientes lineas de código:


#!/bin/bash
#Este es un relojito cucú diseñado para bash
while true
do
d=`date +%M%S`;
if [ $d == "0000" ]
then
for I in $(seq 1 `date +%I`); do
play /usr/bin/cucu.wav &
sleep 1;
done
fi
done


Sencillo ¿no? guardamos el archivo y le damos permisos de ejecución:


$ chmod +x cucu.sh


Ahora descargamos este archivo
cucu.wav


Listo, ya tenemos lo necesario, ahora como root los movemos al directorio /usr/bin para que nuestro path los tome en cuenta:

$ mv cucu.sh /usr/bin/cucu
$ mv cucu.wav /usr/bin


Y listo ahora ya podemos ejecutar nuestro cucú:


$ cucu &


Ahora cada hora va a sonar nuestro cucú diciendonos que hora es, ja ja ja, que chistoso ¿no?

Si quieres que tu cucu suene siempre que estés usando tu computadora solo agrega la instrucción "cucu" a tus aplicaciones de autoarranque de tu escritorio.

sábado 26 de julio de 2008

Opera




Bueno, pues debido a que últimamente me eh dedicado al desarrollo web tengo que asegurarme que mis aplicaciones funcionen en distintos navegadores, así que hoy me di a la tarea de instalar opera en mi debian, lo cual resulta muy sencillo.

Lo primero que hice fue agregar un nuevo repositorio:

$ nano /etc/apt/sources.list

Yo uso nano por comodidad, pero cada quien lo que guste. Agregamos el repositorio en el archivo:


deb http://deb.opera.com/opera/ etch non-free

Guardamos y pasamos a agregar la llave pública del repositorio:

$ wget -O - http://deb.opera.com/archive.key | sudo apt-key add -

Ahora simplemente hacemos lo que ya conocemos:

$ apt-get update

$ apt-get install opera flashplayer-mozilla

De paso instalamos el plugin de flash (sino no podríamos ver videos en youtube ;) ja ja ja)

Descargamos el siguiente paquete http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&P2_Platform=Linux&P3_Browser_Version=Netscape4

Lo descomprimimos:

$ tar xvfz install_flash_player_9_linux.tar.gz

nos movemos al directorio que descomprimimos:

$ cd install_flash_player_9_linux

Y copiamos el plugin:

$ cp install_flash_player_9_linux/libflashplayer.so /usr/lib/opera/plugins
$ cp install_flash_player_9_linux/libflashplayer.so /usr/lib/opera/9.27-20080331.6


Listo!!!

Ahora podemos abrir nuestro navegador opera.

Espero a alguién le sea útil este pequeño COMO, ya se que opera no es libre, pero a veces es necesario usar aplicaciones propietarias si queremos que nuestro trabajo sea universal, especialmente si hablamos de diseño web.

Otro día que no tenga tanta flojera les contaré que hice para poder probar mis aplicaciones en IE :S ja ja ja

martes 15 de julio de 2008

Estrategia



Debian army regresa.