lunes, 2 de diciembre de 2013

Usb tethering con android

# ip route show

Mostrará algunas líneas, la primera dirá algo así como default via xxx.xxx.xxx.xxx dev interfaz0.

# iptables -t nat POSTROUTING -o interfaz0 -j MASQUERADE
# iptables -P FORWARD ACCEPT

Y con esto debería funcionar.

Fuente http://www.3vium.com/index.php/blogs/67-fix-for-non-working-usb-tethering-in-android-phones-iptables-routing-issue

Como siempre Ajustes - Más ajustes - Zona Wifi y módem USB

Si no funciona puede que sea necesario

# echo 1 > /proc/sys/net/ipv4/ip_forward
# ifconfig usb0 up
# dhclient -v usb0

domingo, 10 de noviembre de 2013

Extender el escritorio con xrandr

No he encontrado la manera de extender el escritorio desde XFCE como lo haría desde gnome o kde, tan sólo podía duplicar la pantalla en los dos monitores. Pero xrandr es muy útil.
#!/bin/bash
xrandr --newmode "1280x1024" 109 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
xrandr --addmode VGA1 1280x1024
xrandr --output VGA1 --mode 1280x1024
xrandr --output LVDS1 --auto --rotate normal --pos 0x0 --output VGA1 --auto --left-of LVDS1
para generar la nueva Modeline utilicé esto
cvt 1280 1024 60

El programa arand también puede ser útil

Televisión con mplayer

Ubuntu ya está haciendo de las suyas. 

Avermedia AverTV volar green HD no está soportada por un núcleo menor del 3.10.0, pero para eso están los backports. 

Los canales se sintonizan con w_scan y un fichero de configuración es-localidad y se genera un archivo ~/.mplayer/channels.conf.ter 

 Mplayer es un programa majestuoso.

#!/bin/bash

#############################
# Para grabar
#
# tzap -c .mplayer/channels.conf -r "La 1"
#
# cat /dev/dvb/adapter0/dvr0 > pelicula.ts
#
# mplayer pelicula.ts
#
# Para editar el archivo se puede hacer con avidemux.
#
#############################


echo -n " 1 ONDA CERO"
echo -n " 2 EUROPA FM"
echo " 3 ONDA MELODÍA"
echo -n " 4 NITRO"
echo -n " 5 Antena3 HD"
echo " 6 13 TV"
echo -n " 7 COPE"
echo -n " 8 TVE-HD Pruebas"
echo " 9 TDP"
echo -n " 10 Radio Clasica HQ"
echo -n " 11 Radio 3"
echo " 12 Canal Ingenieria"
echo -n " 13 Boing"
echo -n " 14 Telecinco HD"
echo " 15 MTV"
echo -n " 16 Paramount Channel"
echo -n " 17 La 1"
echo " 18 La 2"
echo -n " 19 24h"
echo -n " 20 Clan"
echo " 21 Radio Nacional CyL"
echo -n " 22 Radio 5"
echo -n " 23 laSexta"
echo " 24 CUATRO"
echo -n " 25 DIVINITY"
echo -n " 26 NUEVE"
echo " 27 Telecinco"
echo -n " 28 FDF"
echo -n " 29 LaSiete"
echo " 30 Disney Channel"
echo -n " 31 Intereconomía"
echo -n " 32 esRadio"
echo " 33 Radio Intereconomía"
echo -n " 34 Radio Inter"
echo -n " 35 ABC Punto Radio"
echo " 36 ANTENA 3"
echo -n " 37 NEOX"
echo -n " 38 NOVA"
echo " 39 Discovery MAX"
echo -n " 40 AXN"
echo -n " 41 GUIDE PLUS+"
echo " 42 RADIO MARCA"
echo " 43 Vaughan Radio"

echo -n " CANAL SELECCIONADO: "

read canal

case $canal in
1)
mplayer dvb://"ONDA CERO" -framedrop -autosync 30 -cache 1024
;;
2)
mplayer dvb://"EUROPA FM" -framedrop -autosync 30 -cache 1024
;;
3)
mplayer dvb://"ONDA MELODÍA" -framedrop -autosync 30 -cache 1024
;;
4)
mplayer dvb://"NITRO" -framedrop -autosync 30 -cache 1024
;;
5)
mplayer dvb://"Antena3 HD" -framedrop -autosync 30 -cache 1024
;;
6)
mplayer dvb://"13 TV" -framedrop -autosync 30 -cache 1024
;;
7)
mplayer dvb://"COPE" -framedrop -autosync 30 -cache 1024
;;
8)
mplayer dvb://"TVE-HD Pruebas" -framedrop -autosync 30 -cache 1024
;;
9)
mplayer dvb://"TDP" -framedrop -autosync 30 -cache 1024
;;
10)
mplayer dvb://"Radio Clasica HQ" -framedrop -autosync 30 -cache 1024
;;
11)
mplayer dvb://"Radio 3" -framedrop -autosync 30 -cache 1024
;;
12)
mplayer dvb://"Canal Ingenieria" -framedrop -autosync 30 -cache 1024
;;
13)
mplayer dvb://"Boing" -framedrop -autosync 30 -cache 1024
;;
14)
mplayer dvb://"Telecinco HD" -framedrop -autosync 30 -cache 1024
;;
15)
mplayer dvb://"MTV" -framedrop -autosync 30 -cache 1024
;;
16)
mplayer dvb://"Paramount Channel" -framedrop -autosync 30 -cache 1024
;;
17)
mplayer dvb://"La 1" -framedrop -autosync 30 -cache 1024
;;
18)
mplayer dvb://"La 2" -framedrop -autosync 30 -cache 1024
;;
19)
mplayer dvb://"24h" -framedrop -autosync 30 -cache 1024
;;
20)
mplayer dvb://"Clan" -framedrop -autosync 30 -cache 1024
;;
21)
mplayer dvb://"Radio Nacional CyL" -framedrop -autosync 30 -cache 1024
;;
22)
mplayer dvb://"Radio 5" -framedrop -autosync 30 -cache 1024
;;
23)
mplayer dvb://"laSexta" -framedrop -autosync 30 -cache 1024
;;
24)
mplayer dvb://"CUATRO" -framedrop -autosync 30 -cache 1024
;;
25)
mplayer dvb://"DIVINITY" -framedrop -autosync 30 -cache 1024
;;
26)
mplayer dvb://"NUEVE" -framedrop -autosync 30 -cache 1024
;;
27)
mplayer dvb://"Telecinco" -framedrop -autosync 30 -cache 10240 -menu
;;
28)
mplayer dvb://"FDF" -framedrop -autosync 30 -cache 1024
;;
29)
mplayer dvb://"LaSiete" -framedrop -autosync 30 -cache 1024
;;
30)
mplayer dvb://"Disney Channel" -framedrop -autosync 30 -cache 1024
;;
31)
mplayer dvb://"Intereconomía" -framedrop -autosync 30 -cache 1024
;;
32)
mplayer dvb://"esRadio" -framedrop -autosync 30 -cache 1024
;;
33)
mplayer dvb://"Radio Intereconomía" -framedrop -autosync 30 -cache 1024
;;
34)
mplayer dvb://"Radio Inter" -framedrop -autosync 30 -cache 1024
;;
35)
mplayer dvb://"ABC Punto Radio" -framedrop -autosync 30 -cache 1024
;;
36)
mplayer dvb://"ANTENA 3" -framedrop -autosync 30 -cache 1024
;;
37)
mplayer dvb://"NEOX" -framedrop -autosync 30 -cache 1024
;;
38)
mplayer dvb://"NOVA" -framedrop -autosync 30 -cache 1024
;;
39)
mplayer dvb://"Discovery MAX" -framedrop -autosync 30 -cache 1024
;;
40)
mplayer dvb://"AXN" -framedrop -autosync 30 -cache 1024
;;
41)
mplayer dvb://"GUIDE PLUS+" -framedrop -autosync 30 -cache 1024
;;
42)
mplayer dvb://"RADIO MARCA" -framedrop -autosync 30 -cache 1024
;;
43)
mplayer dvb://"Vaughan Radio" -framedrop -autosync 30 -cache 1024
;;
*)
echo -n "No tenemos ese canal"
;;
esac
exit 0


domingo, 3 de noviembre de 2013

Instalar windows xp desde una memoria usb. Linux.

Hay mucha información por la red y algunos programas que te permiten poner una iso en el pendrive. Luego nunca arrancan o se cuelgan o lo que sea. No funciona ningún método... ¿ninguno?

Desde linux es complicado, porque aunque hay por lo menos un método válido este es un programa para windows basado en grub4dos que no tiene equivalente en linux. Una pista, estudiando el archivo menu.lst se puede comprobar que desde linux se podría hacer perfectamente (creo que requeriría un poco de trabajo extra).

Al grano,
VBoxManage internalcommands createrawvmdk -filename /home/user/VirtualBox/sda.vmdk -rawdisk /dev/sda
me ha permitido acceder al disco duro desde una máquina virtual, con lo que he podido instalar sin problemas el XP en la partición que tenía reservada para él.

Antes de reiniciar hay que acordarse de reinstalar el grub de linux por la razón que ya sabemos.

¿Qué ocurre al reiniciar? Que tenemos una bonita "blue screen of death" diciéndonos que hemos cambiado algún hardware y que no puede arrancar. Lógico, hemos sustituído el hardware virtual por uno real, y windows no está preparado para esos disgustos.

Entonces, ¿la instalación "virtual" de win XP no sirve para nada? Pues sí que sirve, sirve para preparar el pendrive (hay que habilitarlo en virtualbox).

Sólo hay que leer atentamente esta página:


Los drivers para este peazo equipo aquí:


Y ahora voy a ver si me pongo a estudiar un poco porque llevo todo el puente haciendo el calamar. ;)

Ubuntu 13.10

La culpa la ha tenido una tarjeta DVB-T que no he conseguido hacer funcionar con Debian. 

He compilado el módulo del kernel, he descargado el firmware e incluso he sido capaz de editar un archivo genérico es-miciudad para generar un channels.conf con w_scan. 

 Ni me-tv ni kaffeine ni VLC (que no tengo ni idea de cómo coño se ha de configurar) ni siquiera mplayer quieren reproducir todos los canales. Parece como si no llegara la señal con suficiente potencia y he perdido un montón de tiempo revisando cables y conectores. ¿Para qué? para nada, algo se me ha escapado y no sé lo que es. 

 Así que, aprovechando la reciente salida de la última versión de Ubuntu (ya me había olvidado de él, todo hay que decirlo) me he acordado de su proverbial soporte de hardware y le he dado un tiento. En buena hora. 

La mejor versión de Ubuntu que he probado ( a excepción de aquella 10.04, creo, para Netbooks ). 

Rápido como nunca y bastante estable (el reloj de la barra desaparece de vez en cuando y cosas así, es un Debian sid). El escritorio pulidito y los lanzadores muy bien, el menú de Unity la misma mierda de siempre pero, en general, lo han dejado niquelao. Una agradable sorpresa.

martes, 22 de octubre de 2013

No pierdas los apuntes

#####################################################
# #
# #
# ¡NO PIERDAS LOS APUNTES, JODÍO! #
# #
# #
#####################################################


#!/bin/bash

###Guárdalo todo en el mismo directorio.

fecha=`date +%F`
mkdir /mnt/sda7/bckp-APUNTES-$fecha

### Haz unos backups incrementales.

rsync -av --delete /mnt/sda7/home/jorge/APUNTES/ /mnt/sda7/jorge/bckp-APUNTES-$fecha/

### Comprímelos en condiciones.

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on bckp-APUNTES-$fecha.7z bckp-APUNTES-$fecha
rm -rf /mnt/sda7/jorge/bckp-APUNTES-$fecha/

### y lo subes a tu nube como te parezca.

### También puedes respaldar todo tu sistema operativo.

### Puppy Linux es tu amigo.

rsync -av --delete /mnt/sda7/ /mnt/sdb4/
rsync -av --delete /mnt/sda6/ /mnt/sdb3/

### Y otro disco duro externo y ya lo bordas, salao.
Espero que no se me olvide XD.

martes, 3 de septiembre de 2013

Flashear Galaxy mini 2 (GT-S5600D) desde Linux

No tengo windows, no puedo usar Odín y Heimdall parece ser que no funciona con este dispositivo.

No hace falta descargarse todo el SDK ni nada de eso. He estado dando muchas vueltas por la red y he encontrado que:

 - Me leo esto http://esausilva.com/2010/05/13/setting-up-adbusb-drivers-for-android-devices-in-linux-ubuntu y me descargo esto http://esausilva.com/misc/android/platform-tools-linux.tar.gz porque no me voy a poner a desarrollar en android ya que no tengo ni puta idea.

Ni modifico el $PATH ni nada porque ejecuto adb desde su directorio. fastboot tampoco reconoce el device. Pero ya tengo el adb configurado y funcionando.

-Para rotear el cacharro he leído algo sobre modificar los archivos build.prop y default.prop o no se qué líos, pero parece ser que también hace falta el fastboot u odin, así que me leo esto http://galaxy-mini-2.blogspot.com.es/2012/12/rootear-galaxy-mini-2_22.html y roteo con el método 1 (sin clockworkmod). La app poot ha tardado mucho en instalarse, pero ha funcionado bien.

-Lo de instalar el recovery cwm es lo más entretenido.

    * Lo renombro quitándole el md5, lo descomprimo con tar -xvvf cwm-6-blah.tar y obtengo un archivo recovery.img


:~/Downloads/adb/platform-tools> ./adb devices  -> Lo reconoce
:~/Downloads/adb/platform-tools> ./adb push ../../recovery.img /sdcard/
:~/Downloads/adb/platform-tools> ./adb shell
$ su -> Aquí hay que autorizarlo desde el mismo teléfono
# mount -> Y echamos un vistazo a lo que hay por ahí.
# fdisk /dev/block/mmcblk0
Command (m for help):p
Disk /dev/block/mmcblk0: 3909 MB, 3909091328 bytes
1 heads, 16 sectors/track, 477184 cylinders
Units = cylinders of 16 * 512 = 8192 bytes

Device Boot Start End Blocks Id System
/dev/block/mmcblk0p1 * 1 3 20 4d Unknown
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2 3 22 150 45 Unknown
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3 22 2582 20480 c Win95 FAT32
(LBA)
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4 2582 477184 3796821+ 5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5 3073 3197 1000 46 Unknown
/dev/block/mmcblk0p6 3198 3322 1000 47 Unknown
/dev/block/mmcblk0p7 3323 3572 2000 5d Unknown
/dev/block/mmcblk0p8 3573 5108 12288 48 Unknown
/dev/block/mmcblk0p9 5109 5492 3072 4a Unknown
/dev/block/mmcblk0p10 5493 5876 3072 4b Unknown
/dev/block/mmcblk0p11 5877 6900 8192 90 Unknown
/dev/block/mmcblk0p12 6901 8436 12288 91 Unknown
/dev/block/mmcblk0p13 8437 8948 4096 92 Unknown
/dev/block/mmcblk0p14 8949 9460 4096 93 Unknown
/dev/block/mmcblk0p15 9461 9524 512 95 Unknown
/dev/block/mmcblk0p16 9525 73524 512000 82 Linux swap
/dev/block/mmcblk0p17 73525 92724 153600 94 Unknown
/dev/block/mmcblk0p18 92725 212276 956416 83 Linux
/dev/block/mmcblk0p19 212277 213812 12288 65 Unknown
/dev/block/mmcblk0p20 213813 216884 24576 9a Unknown
/dev/block/mmcblk0p21 216885 217396 4096 63 GNU HURD or
SysV
/dev/block/mmcblk0p22 217397 223796 51200 67 Unknown
/dev/block/mmcblk0p23 223797 464363 1924534 64 Unknown
/dev/block/mmcblk0p24 464363 464875 4096 58 Unknown
/dev/block/mmcblk0p25 464875 477184 98474 a0 Thinkpad
hibernation
Command (m for help): q -> ¿Cual será la partición recovery?

# find / -name recovery
/cache/recovery
/system/bin/recovery
# ls /cache/recovery
last_log
# vi last_log -> Este es el comando mágico, ¿te acuerdas de busybox?
# dd if=/sdcard/recovery.img of=/dev/block/mmcblk0pXX -> Y este el que puede arruinarlo todo.

Por suerte todo ha salido bien y ha quedado el cwm perfectamente instalado con  lo que ya he podido flashear alguna que otra rom. Pero esa es otra historia, al final me he quedado con una stock, roteada y con cwm. Perfecto. Hay que decir que el aparato era libre.

Para terminar hay que aclarar que todo esto lo hago bajo mi responsabilidad y que si me cargo el teléfono es por mi culpa, no por lo que he leído en la internet.
También que para tener un log de recovery habrá que hacer algo con el stock recovery antes.

martes, 6 de agosto de 2013

Información meteorológica en conky

Lo primero será conseguir datos fiables. Para mi localización geográfica creo que los más adecuados serán los de http://www.aemet.es. Esta web proporciona los datos en un archivo xml con la predicción para siete días.

Suponiendo que sea Horcajuelo de la sierra (Madrid) descargaré este fichero:

wget http://www.aemet.es/xml/municipios/localidad_28071.xml

Para hacerlo más fácilmente legible he filtrado el archivo con este comando:

sed -e '1,/\/origen/d;s/<\/[^>]*>//g;s/<//g;s/>/ /g;s/elaborado //' localidad_28071.xml

Ahora vamos a ver que pone.

- la fecha y hora en la que se ha generado el archivo
- la localidad
- la provincia
- la predicción para hoy en intervalos de 6 horas
- la de mañana y pasado en intervalos de 12 horas
- la de los cuatro días siguientes en un formato menos detallado

Bien, creo que será suficiente descargar este archivo únicamente una vez al día por lo cual crearé una tarea cron para obtenerlo.

Para conseguir los datos actuales en tiempo real (cada hora) escogeré la estación meteorológica que más me conviene desde esta dirección:


En este caso, la estación más cercana a Horcajuelo es la de Buitrago de Lozoya así que descargaré este archivo:

wget "http://www.aemet.es/es/eltiempo/observacion/ultimosdatos?k=mad&l=3110C&w=0&datos=img&x=h24&f=Todas" -O ultimosdatos

ponemos la dirección entre comillas porque si no se va quedar en el primer ampersand ( & ).

Una vez más, hay que filtrar el archivo. Estudiándolo un poquito se ve que resulta suficiente ejecutar el siguiente comando:

grep "\[23 ,[^ ]" ultimosdatos | sed -e 's/\[23 ,//g;s/\]//g'

para obtener los últimos datos de 

-Temperatura
-Viento
-Rachas
-Precipitaciones
-Presión
-Humedad

Así que podemos también crear otra tarea cron que se ejecute cada hora para descargar los datos.

Creo que usaré los iconos /usr/share/icons/gnome/48x48/status

domingo, 4 de agosto de 2013

Montar imágenes .vdi

La herramienta vditool no está disponible. Dándole unas cuantas vueltas y gracias a esta información:

http://www.vicente-navarro.com/blog/2008/07/27/montar-imagenes-de-disco-vdi-de-virtualbox/

https://www.virtualbox.org/ticket/4843


# VBoxManage internalcommands dumphdinfo reactos.vdi


Con lo cual ya se puede montar tranquilamente
# mount -t vfat -o loop,offset=$((12288+63*512)) reactos.vdi /mnt

¿De dónde sale ese 63? De aquí:
# aptitude install qemu kvm
# modprobe nbd 
# qemu-nbd -c /dev/nbd0 VirtualBox\ VMs/reactos/reactos.vdi
# sfdisk -d /dev/nbd0

jueves, 18 de julio de 2013

Screenshots matchbox-window-manager

No entiendo cómo se murió este proyecto aunque algo queda por ahí Estuve buscando algo como maemo o meego para mi netbook de 9", algo que no fuera android. Buscaba una optimización de la pantalla para poder hacer lo que haría en una pantalla más grande sin las restricciones de esos sistemas operativos enfocados a la nube. Bueno, como siempre, Debian, que es lo que conozco un poquitín. 

Matchbox no es para desktop, según dicen, pero a mí me hace el apaño fenomenal. Aquí unas capturas (todo GTK, nada de NOKIA, no jodamos, que ahora están con el windor, pf). 

GTK= Gimp Tool Kit. Para el que no lo sepa se escribió para desarrollar el GIMP, luego ya vinieron GNOME y todo eso. Lo que venía a ser software libre. (GIMP=Gnu Image Manipulation Program).







Y ahora me voy a ver si consigo la trifuerza XDDD, no está fácil.

martes, 9 de julio de 2013

Archivos de configuración de matchbox (II)

~/.conkyrc


#==============================================================================
# conkyrc_seamod_modification
# Date : 22/04/2012
# Author : atareao
# Version : v0.1
# License : Distributed under the terms of GNU GPL version 2 or later
#
# This version is a modification of conkyrc_seamode which is a modification of conkyrc_lunatico which is modification of conkyrc_orange -> Y yo también lo he modificao XDDD
#
# conkyrc_orange: http://gnome-look.org/content/show.php?content=137503&forumpage=0
# conkyrc_lunatico: http://gnome-look.org/content/show.php?content=142884
# conkyrc_seamod: http://miragesoft.deviantart.com/#/d4orjxy
#==============================================================================

background no
update_interval 1

cpu_avg_samples 1
net_avg_samples 2
temperature_unit celsius

double_buffer yes
no_buffers yes
text_buffer_size 2048

gap_x 20
gap_y 50
minimum_size 924 600
maximum_width 925
own_window no
own_window_type override
own_window_transparent yes
own_window_argb_visual yes
own_window_type normal
own_window_class conky-semi
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below
border_inner_margin 0
border_outer_margin 0
alignment tl


draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no

override_utf8_locale yes
use_xft yes
xftfont caviar dreams:size=10
xftalpha 0.5
uppercase no

# Defining colors
default_color FFFFFF
# Shades of Gray
color1 444444
color2 AAAAAA
color3 888888
# Orange
color4 000000
# Green
color5 000000
# Loading lua script for drawning rings
lua_load ~/.conky/conky_rings.lua
lua_draw_hook_post main

## System information using conky capabilities

# Header with base system info
TEXT
${offset 700}${font Ubuntu:size=10,weight:bold}${color2}SISTEMA ${hr 2}
${offset 715}${font Ubuntu:size=10,weight:normal}${color2}$sysname $kernel
${offset 715}${font Ubuntu:size=10,weight:normal}${color2}$nodename
${offset 715}${font Ubuntu:size=10,weight:normal}${color2}Uptime: $uptime

${voffset 15}
${goto 815}${color2}${font ubuntu:size=22}${time %e}
${goto 815}${color1}${voffset -15}${font ubuntu:size=10}${time %A}
${goto 815}${color2}${voffset 1}${font ubuntu:size=9}${time %b}${voffset -2} ${color3}${font ubuntu:size=12}${time %Y}${font}

# Showing CPU Graph
${voffset -30}
${offset 780}${cpugraph 40,227 666666 666666}${voffset -27}
${offset 730}${font Ubuntu:size=10,weight:bold}${color2}CPU
# Showing TOP 5 CPU-consumers

${offset 745}${font Ubuntu:size=10,weight:normal}${color2}${top name 1}${alignr}${top cpu 1}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color3}${top name 2}${alignr}${top cpu 2}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color3}${top name 3}${alignr}${top cpu 3}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color1}${top name 4}${alignr}${top cpu 4}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color1}${top name 5}${alignr}${top cpu 5}%

#Showing memory part with TOP 5
${voffset 40}
${offset 730}${font Ubuntu:size=10,weight:bold}${color2}MEMORIA

${offset 745}${font Ubuntu:size=10,weight:normal}${color2}${top_mem name 1}${alignr}${top_mem mem 1}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color3}${top_mem name 2}${alignr}${top_mem mem 2}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color3}${top_mem name 3}${alignr}${top_mem mem 3}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color1}${top_mem name 4}${alignr}${top_mem mem 4}%
${offset 745}${font Ubuntu:size=10,weight:normal}${color1}${top_mem name 4}${alignr}${top_mem mem 5}%

# Showing disk partitions: root, home and Data
${voffset -338}
${offset 180}${font Ubuntu:size=10,weight:bold}${color2}DISCOS ${voffset -20}${diskiograph 33,121 666666 666666}
${voffset -32}

${offset 180}${font Ubuntu:size=9,weight:bold}${color1}Free: ${color2}${font Ubuntu:size=9,weight:normal}${fs_free /}${font Ubuntu:size=9,weight:bold} ${color1}Used: ${color2}${font Ubuntu:size=9,weight:normal}${fs_used /}
${offset 180}${font Ubuntu:size=9,weight:bold}${color1}Free: ${color2}${font Ubuntu:size=9,weight:normal}${fs_free /home}${font Ubuntu:size=9,weight:bold} ${color1}Used: ${color2}${font Ubuntu:size=9,weight:normal}${fs_used /home}
${offset 180}${font Ubuntu:size=9,weight:bold}${color1}Free: ${color2}${font Ubuntu:size=9,weight:normal}${fs_free /mnt}${font Ubuntu:size=9,weight:bold} ${color1}Used: ${color2}${font Ubuntu:size=9,weight:normal}${fs_used /mnt}

# Network data (my desktop have only LAN). ETHERNET ring is mostly useless but looks pretty, main info is in the graphs

${offset 180}${font Ubuntu:size=10,weight:bold}${color2}RED
${voffset 50}
${offset 180}${color1}${font Ubuntu:size=9,weight:bold}Up: ${font Ubuntu:size=9,weight:normal}$color2${upspeed wlan0} / ${totalup wlan0}
${offset 180}${voffset -80}${upspeedgraph wlan0 40,183 4B1B0C FF5C2B }
${voffset 80}
${offset 180}${color1}${font Ubuntu:size=9,weight:bold}Down: ${font Ubuntu:size=9,weight:normal}$color2${downspeed wlan0} / ${totaldown wlan0}
${voffset -80}
${offset 180}${downspeedgraph wlan0 40,183 324D23 77B753 }


${offset 40}${font Ubuntu:size=10,weight:bold}${color2}BATERÍA

${offset 40}${battery BAT0} ${color1} ${battery_time}${if_match ${battery_percent BAT0} >= 80}${color 77B753}${endif}${if_match ${battery_percent BAT0} <= 79}${color CDC959}${endif}${if_match ${battery_percent BAT0} <= 49}${color FF5C2B}${endif}${if_match ${battery_percent BAT0} <= 19}${color B32319}${endif}
${offset 40}${battery_bar 10,203 BAT0}



${offset 400}${voffset -230}${color2}CONEXIÓN

${offset 420}${color1}IP local: ${color2}${addr wlan0}
${offset 420}${color1}IP externa: ${color2}${execi 3600 wget -O - http://ip.tupeux.com | tail}
${offset 420}${color1}ESSID: ${color2}${wireless_essid wlan0} ${wireless_link_qual_perc wlan0}%


${offset 400}${color2}MOC:

${offset 420}${color1}Artista: ${color2}${exec mocp -Q %artist}
${offset 420}${color1}Album: ${color2}${exec mocp -Q %album}
${offset 420}${color1}Canción: ${color2}${exec mocp -Q %song}

${voffset -380}
${offset 400}${color2}CALENDARIO

${offset 410}${font Monospace:size=12}${color1}${exec cal| head -n -6 | tail -n -1}
${offset 410}${font Monospace:size=12}${color2}${exec cal| head -n -5 | tail -n -1}
${offset 410}${font Monospace:size=12}${color2}${exec cal| head -n -4 | tail -n -1}
${offset 410}${font Monospace:size=12}${color2}${exec cal| head -n -3 | tail -n -1}
${offset 410}${font Monospace:size=12}${color2}${exec cal| head -n -2 | tail -n -1}
${offset 410}${font Monospace:size=12}${color2}${exec cal| head -n -1 | tail -n -1}
~/.conky/conky_rings.lua

--==============================================================================
-- seamod_rings.lua
--
-- Date : 05/02/2012
-- Author : SeaJey -> También lo he modificado ligeramente.
-- Version : v0.1
-- License : Distributed under the terms of GNU GPL version 2 or later
--
-- This version is a modification of lunatico_rings.lua wich is modification of conky_orange.lua
--
-- conky_orange.lua: http://gnome-look.org/content/show.php?content=137503&forumpage=0
-- lunatico_rings.lua: http://gnome-look.org/content/show.php?content=142884
--==============================================================================

require 'cairo'

--------------------------------------------------------------------------------
-- clock DATA
-- HOURS
clock_h = {
{
name='time', arg='%H', max_value=12,
x=930, y=145,
graph_radius=53,
graph_thickness=3,
graph_unit_angle=30, graph_unit_thickness=30,
graph_bg_colour=0xffffff, graph_bg_alpha=0.0,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
txt_radius=34,
txt_weight=1, txt_size=10.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=53,
graduation_thickness=6, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- MINUTES
clock_m = {
{
name='time', arg='%M', max_value=60,
x=930, y=145,
graph_radius=57,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=6,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
txt_radius=70,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.6,
graduation_radius=57,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=30,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
},
}
-- SECONDS
clock_s = {
{
name='time', arg='%S', max_value=60,
x=930, y=145,
graph_radius=50,
graph_thickness=2,
graph_unit_angle=6, graph_unit_thickness=2,
graph_bg_colour=0xffffff, graph_bg_alpha=0.0,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.2,
txt_radius=40,
txt_weight=0, txt_size=12.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0.3,
graduation_radius=0,
graduation_thickness=0, graduation_mark_thickness=0,
graduation_unit_angle=0,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.0,
},
}
--------------------------------------------------------------------------------
-- gauge DATA
gauge = {
{
name='cpu', arg='cpu0', max_value=100,
x=730, y=230,
graph_radius=54,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=64,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=9.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='cpu', arg='cpu1', max_value=100,
x=730, y=230,
graph_radius=48,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=40,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='',
caption_weight=1, caption_size=9.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='memperc', arg='', max_value=100,
x=730, y=410,
graph_radius=48,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=40,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5,
caption='',
caption_weight=1, caption_size=10.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='swapperc', arg='', max_value=100,
x=730, y=410,
graph_radius=54,
graph_thickness=5,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=64,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.5,
caption='',
caption_weight=1, caption_size=10.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='fs_used_perc', arg='/mnt', max_value=100,
x=125, y=230,
graph_radius=54,
graph_thickness=7,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=64,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='Mount',
caption_weight=1, caption_size=12.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='fs_used_perc', arg='/home/', max_value=100,
x=125, y=230,
graph_radius=42,
graph_thickness=7,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=32,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='Home',
caption_weight=1, caption_size=12.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='fs_used_perc', arg='/', max_value=100,
x=125, y=230,
graph_radius=30,
graph_thickness=7,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=1.0,
txt_radius=22,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=23,
graduation_thickness=0, graduation_mark_thickness=2,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='Root',
caption_weight=1, caption_size=12.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='downspeedf', arg='wlan0', max_value=100,
x=125, y=410,
graph_radius=54,
graph_thickness=7,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=0,
txt_radius=64,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='Down',
caption_weight=1, caption_size=12.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
{
name='upspeedf', arg='wlan0', max_value=100,
x=125, y=410,
graph_radius=42,
graph_thickness=7,
graph_start_angle=180,
graph_unit_angle=2.7, graph_unit_thickness=2.7,
graph_bg_colour=0xffffff, graph_bg_alpha=0.1,
graph_fg_colour=0xFFFFFF, graph_fg_alpha=0.3,
hand_fg_colour=0xEF5A29, hand_fg_alpha=0,
txt_radius=30,
txt_weight=0, txt_size=9.0,
txt_fg_colour=0xEF5A29, txt_fg_alpha=1.0,
graduation_radius=28,
graduation_thickness=0, graduation_mark_thickness=1,
graduation_unit_angle=27,
graduation_fg_colour=0xFFFFFF, graduation_fg_alpha=0.3,
caption='Up',
caption_weight=1, caption_size=12.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.5,
},
}
-------------------------------------------------------------------------------
-- draw_clock_ring
-- displays clock
--
function draw_clock_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']

-- background ring
cairo_arc(display, x, y, graph_radius, 0, 2 * math.pi)
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)

-- arc of value
local val = (value % max_value)
local i = 1
while i <= val do
cairo_arc(display, x, y, graph_radius,( ((graph_unit_angle * i) - graph_unit_thickness)*(2*math.pi/360) )-(math.pi/2),((graph_unit_angle * i) * (2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graph_fg_colour,graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = (graph_unit_angle * i) - graph_unit_thickness

-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = 360 / graduation_unit_angle
local i = 1
while i <= nb_graduation do
cairo_set_line_width(display, graduation_thickness)
cairo_arc(display, x, y, graduation_radius, (((graduation_unit_angle * i)-(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2),(((graduation_unit_angle * i)+(graduation_mark_thickness/2))*(2*math.pi/360))-(math.pi/2))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end

-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * (math.cos((angle * 2 * math.pi / 360)-(math.pi/2)))
local movey = txt_radius * (math.sin((angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight);
cairo_set_font_size (display, txt_size);
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha));
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3);
cairo_show_text (display, value);
cairo_stroke (display);
end
-------------------------------------------------------------------------------
-- rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end

-------------------------------------------------------------------------------
-- angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
local pos = current_angle + start_angle
return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end


-------------------------------------------------------------------------------
-- draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
local max_value = data['max_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_start_angle = data['graph_start_angle']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
local graph_end_angle = (max_value * graph_unit_angle) % 360

-- background ring
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)

-- arc of value
local val = value % (max_value + 1)
local start_arc = 0
local stop_arc = 0
local i = 1
while i <= val do
start_arc = (graph_unit_angle * i) - graph_unit_thickness
stop_arc = (graph_unit_angle * i)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = start_arc

-- hand
start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
stop_arc = (graph_unit_angle * val)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
cairo_stroke(display)

-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = graph_end_angle / graduation_unit_angle
local i = 0
while i < nb_graduation do
cairo_set_line_width(display, graduation_thickness)
start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end

-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
cairo_set_font_size (display, txt_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
cairo_show_text (display, value)
cairo_stroke (display)

-- caption
local caption = data['caption']
local caption_weight, caption_size = data['caption_weight'], data['caption_size']
local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
cairo_set_font_size (display, caption_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
cairo_move_to (display, x + tox + 5, y + toy + 1)
-- bad hack but not enough time !
if graph_start_angle < 105 then
cairo_move_to (display, x + tox - 30, y + toy + 1)
end
cairo_show_text (display, caption)
cairo_stroke (display)
end


-------------------------------------------------------------------------------
-- go_clock_rings
-- loads data and displays clock
--
function go_clock_rings(display)
local function load_clock_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_clock_ring(display, data, value)
end

for i in pairs(clock_h) do
load_clock_rings(display, clock_h[i])
end
for i in pairs(clock_m) do
load_clock_rings(display, clock_m[i])
end
for i in pairs(clock_s) do
load_clock_rings(display, clock_s[i])
end
end
-------------------------------------------------------------------------------
-- go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
local function load_gauge_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
value = tonumber(str)
draw_gauge_ring(display, data, value)
end

for i in pairs(gauge) do
load_gauge_rings(display, gauge[i])
end
end

-------------------------------------------------------------------------------
-- MAIN
function conky_main()
if conky_window == nil then
return
end

local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
local display = cairo_create(cs)

local updates = conky_parse('${updates}')
update_num = tonumber(updates)

if update_num > 5 then
go_clock_rings(display)
go_gauge_rings(display)
end

cairo_surface_destroy(cs)
cairo_destroy(display)

end



Está montado sobre matchbox-desktop ya que no hay un escritorio propiamente dicho. Ctrl-D y lo tenemos todo a mano, más el task-switcher, Alt-Tab también funciona pero en la carpeta "Active Tasks" tenemos a la vista todas las ventanas abiertas ya que no nos caben en el panel. Tiembla un poquillo al cambia de carpeta,

Me está dando trabajo el jodío, pero está quedando muy cómodo,

lunes, 1 de julio de 2013

Archivos de configuración de matchbox

~/.matchbox/session
#!/bin/sh
#matchbox-desktop --icon-size 24 --icon-padding 24 &
synclient tapbutton1=1
setxkbmap es &
sleep 2 && xfce4-panel --disable-wm-check --sm-client-disable &
#sleep 2 && matchbox-panel --orientation north &
sleep 2 && dbus-launch tomboy &
sleep 2 && orage &
sleep 2 && wicd-client -t &
fbsetbg /usr/share/backgrounds/gnome/Aqua.jpg &
exec matchbox-window-manager -use_dialog_mode free -use_titlebar no $@
~/.matchbox/kdbconfig
#
# This is an example keyboard config file for matchbox
#
# You can edit this file or change per user by copying to
# ~/.matchbox/kbdconfig
#
# Se the matchbox manual for more info ( http://projects.o-hand.com/matchbox )

### Window operation short cuts

<Alt>n=next
<Alt>p=prev
<Alt>c=close
<Alt>d=desktop
<Alt>m=!matchbox-remote -mbmenu

### App launching.

<alt>g=!/usr/bin/geany
<alt>r=!/usr/bin/roxterm

### windows style key shortcuts

<alt>Tab=next
<alt><shift>Tab=prev

<alt>space=taskmenu
<alt>escape=!matchbox-remote -mbmenu

f11=fullscreen

### super should be a 'window' key, uncomment '#' if you have one.

#<super>d=desktop
#<super>r=!xterm
#<super>e=!!nautilus

### Special keys, likely probably only available on extended keyboards.

#App=!matchbox-remote -mbmenu
#Menu=!matchbox-remote -mbmenu

~/.matchbox/keyboard.xml
<?xml version="1.0" encoding="UTF-8"?>

<keyboard>

<options>
<!-- not yet implemented -->
</options>

<layout id="keyboard-es">

<!--
<row>
<key>
<default display="ヂ" />
</key>
<key>
<default display="Ӫ" />
</key>
<key width="1500">
<default display="Ω" />
</key>
<space width="1500" />
<key fill="true">
<default display="⠿" />
</key>
</row>
-->

<row>

<space width="500" extended="true"/>

<key fill="true">
<default display="Esc" action="escape" />
</key>
<!--
<key>
<default display="image:/usr/share/pixmaps/sync_icon.png" action="a"/>
</key>
-->
<key>
<default display="º" />
<shifted display="ª" />
<mod1 display="\" />
</key>
<key>
<default display="1" />
<shifted display="!" />
<mod1 display="|" />
</key>
<key>
<default display="2" />
<shifted display='"' />
<mod1 display="@" />
</key>
<key>
<default display="3" />
<shifted display="·" />
<mod1 display="@" />
</key>
<key>
<default display="4" />
<shifted display="$" />
<mod1 display="~" />
</key>
<key>
<default display="5" />
<shifted display="%" />
<mod1 display="½" />
</key>
<key>
<default display="6" />
<!-- shifted display="&amp" / -->
<mod1 display="¬" />
</key>
<key>
<default display="7" />
<shifted display="/" />
<mod1 display="{" />
</key>
<key>
<default display="8" />
<shifted display="(" />
<mod1 display="[" />
</key>
<key>
<default display="9" />
<shifted display=")" />
<mod1 display="]" />
</key>
<key>
<default display="0" />
<shifted display="=" />
<mod1 display="}" />
</key>
<key>
<default display="'" />
<shifted display="?" />
<mod1 display="\" />
</key>
<key>
<default display="¡" />
<shifted display="¿" />
<mod1 display="~" />
</key>

<key fill="true">
<!-- <default display="⌫" action="backspace"/> -->
<default display="Bksp" action="backspace"/>
</key>

<space width="500" extended="true"/>

<key width="4000" extended="true">
<default display="Home" action="home"/>
</key>
<key width="4000" extended="true">
<default display="PgUp" action="pageup"/>
</key>

<space width="500" extended="true"/>


</row>

<row>

<space width="500" extended="true"/>

<key fill="true">
<!-- <default display="↹" action="tab"/> -->
<default display="Tab" action="tab"/>
</key>
<key obey-caps='true'>
<default display="q" />
<shifted display="Q" />
<mod1 display="@" />
</key>
<key obey-caps='true'>
<default display="w" />
<shifted display="W" />
<mod1 display="ł" />
</key>
<key obey-caps='true'>
<mod1 display="€" />
<default display="e" />
<shifted display="E" />
</key>
<key obey-caps='true'>
<default display="r" />
<shifted display="R" />
<mod1 display="¶" />
</key>
<key obey-caps='true'>
<default display="t" />
<shifted display="T" />
<mod1 display="ŧ" />
</key>
<key obey-caps='true'>
<default display="y" />
<shifted display="Y" />
<mod1 display="←" />
</key>
<key obey-caps='true'>
<default display="u" />
<shifted display="U" />
<mod1 display="↓" />
</key>
<key obey-caps='true'>
<default display="i" />
<shifted display="I" />
<mod1 display="→" />
</key>
<key obey-caps='true'>
<default display="o" />
<shifted display="O" />
<mod1 display="ø" />
</key>
<key obey-caps='true'>
<default display="p" />
<shifted display="P" />
<mod1 display="þ" />
</key>
<key>
<default display="`" />
<shifted display="^" />
<mod1 display="[" />
</key>
<key>
<default display="+" />
<shifted display="*" />
<mod1 display="]" />
</key>
<key fill="true">
<default display="ç" />
<shifted display="Ç" />
<mod1 display="}" />
</key>

<space width="500" extended="true"/>

<key width="4000" extended="true">
<default display="End" action="end"/>
</key>
<key width="4000" extended="true">
<default display="PgDn" action="pagedown"/>
</key>

<space width="500" extended="true"/>

</row>
<row>

<space width="500" extended="true"/>

<key fill="true">
<default display="Caps" action="modifier:caps"/>
</key>
<key obey-caps='true'>
<default display="a" />
<shifted display="A" />
<mod1 display="æ" />
</key>
<key obey-caps='true'>
<default display="s" />
<shifted display="S" />
<mod1 display="ß" />
</key>
<key obey-caps='true'>
<default display="d" />
<shifted display="D" />
<mod1 display="ð" />
</key>
<key obey-caps='true'>
<default display="f" />
<shifted display="F" />
<mod1 display="đ" />
</key>
<key obey-caps='true'>
<default display="g" />
<shifted display="G" />
<mod1 display="ŋ" />
</key>
<key obey-caps='true'>
<default display="h" />
<shifted display="H" />
<mod1 display="ħ" />
</key>
<key obey-caps='true'>
<default display="j" />
<shifted display="J" />
<mod1 display="j" />
</key>
<key obey-caps='true'>
<default display="k" />
<shifted display="K" />
<mod1 display="ĸ" />
</key>
<key obey-caps='true'>
<default display="l" />
<shifted display="L" />
<mod1 display="ł" />
</key>
<key obey-caps='true'>
<default display="ñ" />
<shifted display="Ñ" />
<mod1 display="~" />
</key>
<key>
<default display="´" />
<shifted display="¨" />
<mod1 display="{" />
</key>
<key fill="true">
<!-- <default display="◀┛" action="return"/> -->
<default display="Ret" action="return"/>
</key>

<space width="500" extended="true"/>

<space width="4000" extended="true" />

<space width="4000" extended="true" />

<space width="500" extended="true"/>


</row>
<row>

<space width="500" extended="true"/>

<key fill="true">
<default display="Shift" action="modifier:shift"/>
</key>

<key obey-caps='true'>
<default display="<" />
<shifted display=">" />
<mod1 display="|" />
</key>

<key obey-caps='true'>
<default display="z" />
<shifted display="Z" />
<mod1 display="«" />
</key>

<key obey-caps='true'>
<default display="x" />
<shifted display="X" />
<mod1 display="»" />
</key>

<key obey-caps='true'>
<default display="c" />
<shifted display="C" />
<mod1 display="¢" />
</key>

<key obey-caps='true'>
<default display="v" />
<shifted display="V" />
<mod1 display="“" />
</key>

<key obey-caps='true'>
<default display="b" />
<shifted display="B" />
<mod1 display="”" />
</key>

<key obey-caps='true'>
<default display="n" />
<shifted display="N" />
<mod1 display="n" />
</key>

<key obey-caps='true'>
<default display="m" />
<shifted display="M" />
<mod1 display="µ" />
</key>

<key>
<default display="," />
<shifted display=";" />
</key>
<key>
<default display="." />
<shifted display=":" />
<mod1 display="·" />
</key>
<key>
<default display="-" />
<shifted display="_" />
<mod1 display="̣" />
</key>


<key fill="true">
<default display="Shift" action="modifier:shift"/>
</key>

<space width="500" extended="true"/>

<space width="4000" extended="true" />

<space width="4000" extended="true" />

<space width="500" extended="true"/>



</row>
<row>

<space width="500" extended="true"/>

<key>
<default display="äëö" action="modifier:mod1"/>
</key>

<key fill="true">
<default display="Ctrl" action="modifier:ctrl"/>
</key>

<key>
<default display="Alt" action="modifier:alt"/>
</key>


<key width="12000">
<default display=" " action="space" />
</key>

<key>
<default display="AltGr" action="modifier:mod1" />
</key>

<key>
<default display="↑" action="up" />
</key>
<key>
<default display="↓" action="down" />
</key>
<key>
<default display="←" action="left" />
</key>
<key>
<default display="→" action="right" />
</key>

<space width="500" extended="true"/>

<space width="4000" extended="true" />

<space width="4000" extended="true" />

<space width="500" extended="true"/>

</row>

</layout>


</keyboard>


Y queda pues muy requetebién, aprovechando la pantalla.




lunes, 17 de junio de 2013

Montar particiones minix

A la vista de esto (http://minix1.woodhull.com/faq/mxfromlx.html).

#!/bin/sh
# mxmount
# asw 21.12.97

# >Hi,
# >
# > I tried to mount a Minix partition(/dev/hda2 in Linux,
# >/dev/hd2 in Minix) as a Minix file system in Linux with command,
# >
# >mount -t minix /dev/hda2 /mnt
# >
# >but failed. My Minix is installed from Tanenbaum's 1997 book CD.
# >
# > Then I investigated how Minix file system is installed. I
# >found that the Minix primary partition(/dev/hd2) consists of 2
# >subpartitions(/dev/hd2a and /dev/hd2c) which are separately mounted as
# >/ and /usr. I guess that Linux mount cannot resolve such partition
# >organization.
# >
#
#
# Well, yes and no. There was a discussion on this topic a while ago in this
# newsgroup. You can set things up so linux can "see" minix logical partitions
# by treating the entire minix partition as a file and mounting it on the
# loop device. A loop device is a driver that allows the linux kernel to treat
# a file as a filessytem -- quite handy in certain situations. Support for
# the loop device must be selected during make config. It has been available
# since 2.0.0.
#
# The following is a shell script I use to make my minix filesystem with
# its two logical subpartitions available from minix. (I also have two
# other minix partitions which are not sub-partitioned.) It gives the main
# idea-- you will need to adapt it for your own situation of course:
#
# (Terry's original script begins here)
#
# Mounts minix directorys so that they can be accessed from linux
# Based on tips from Alan M. Alpert as posted on comp.os.minix
# (More on loopback under linux)


# setup loop back devices. I guess the 512 offset in the first one
# gets us past the boot sector. This is for the first (minix) logical
# partition in /dev/hda3 ( = minix's /dev/hd3a ). The second one is
# for the second logical partition in /dev/hda3 which begins at 512 +
# 1440 x 1024 = 1475072 -- since there are 1440 blocks in the first
# logical partition.


# Terry's example:
# /sbin/losetup /dev/loop0 /dev/hda3 -o 512
# /sbin/losetup /dev/loop1 /dev/hda3 -o 1475072


# asw system: minix root is hd4a at offset 512
# usr is hd4c at 512 + 2x1024x1440=2949632. The "2x" is needed
# because there are two 1440 block subpartitions before the usr partition
/sbin/losetup /dev/loop0 /dev/hda4 -o 512
/sbin/losetup /dev/loop1 /dev/hda4 -o 2949632


# mount the minix root fs on /minix
/bin/mount -t minix /dev/loop0 /minix


# mount the minix usr fs on /minix/usr
/bin/mount -t minix /dev/loop1 /minix/usr

he corrido esto

root@debian:/home/jorge# fdisk /dev/sda3

Command (m for help): p

Disk /dev/sda3: 4235 MB, 4235309056 bytes
255 heads, 63 sectors/track, 514 cylinders, total 8272088 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sda3p1 * 250836276 250869043 16384 81 Minix / old Linux
/dev/sda3p2 250869044 254965043 2048000 81 Minix / old Linux
/dev/sda3p3 254965044 259108362 2071659+ 81 Minix / old Linux

Command (m for help):

he hecho "la cuenta la vieja"

>>> 16384*1024+512
16777728
>>> (16384+2048000)*1024+512
2113929728
>>> exit(0)

y luego he ejecutado esto otro

root@debian:/home/jorge# /sbin/losetup /dev/loop0 /dev/sda3 -o 512
root@debian:/home/jorge# /sbin/losetup /dev/loop1 /dev/sda3 -o 16777728
root@debian:/home/jorge# /sbin/losetup /dev/loop2 /dev/sda3 -o 2113929728

y esto

root@debian:/home/jorge# mount -t minix /dev/loop0 /mnt/MINIX/
root@debian:/home/jorge# mount -t minix /dev/loop1 /mnt/MINIX/home
root@debian:/home/jorge# mount -t minix /dev/loop2 /mnt/MINIX/usr

No me ha llevado nada más que toda la tarde. XD

martes, 21 de mayo de 2013

Fluxbox startup


#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Change your keymap:
#xmodmap "/home/jorge/.Xmodmap"
synclient tapbutton1=1
setxkbmap es &
fbsetbg ~/Imágenes/Debian-Dark-2.jpg
xfce4-panel --disable-wm-check --sm-client-disable &
#sleep 2 && fbpanel &
sleep 2 && tilda &
sleep 2 && conky -q -c ~/.conkyrc2 &
sleep 2 && conky -q &
sleep 2 && wbar -pos left -vbar -balfa 0 -idist 0 -isize 36 -zoomf 1.2 -nanim 1 -nofont -jumpf 0 -falfa 100 -above-desk &
sleep 4 && dbus-launch tomboy &
sleep 4 && orage &
# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.
#
# unclutter -idle 2 &
# wmnd &
# wmsmixer -w &
# idesk &
#
# Debian-local change:
# - fbautostart has been added with a quick hack to check to see if it
# exists. If it does, we'll start it up by default.
which fbautostart > /dev/null
if [ $? -eq 0 ]; then
fbautostart
fi

# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.

#exec fluxbox
# or if you want to keep a log:
exec fluxbox -log "/home/jorge/fluxbox.log"




Y vuelta la burra al trigo.