<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Disonancia Mental</title>
	<atom:link href="http://disonanciamental.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://disonanciamental.wordpress.com</link>
	<description>Elsenyordelcaos&#039;s Blog</description>
	<lastBuildDate>Tue, 16 Feb 2010 22:39:53 +0000</lastBuildDate>
	<language>ca</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='disonanciamental.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Disonancia Mental</title>
		<link>http://disonanciamental.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://disonanciamental.wordpress.com/osd.xml" title="Disonancia Mental" />
	<atom:link rel='hub' href='http://disonanciamental.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Touchpad synaptics en Debian: De HAL a udev.</title>
		<link>http://disonanciamental.wordpress.com/2010/02/16/touchpad-synaptics-en-debian-de-hal-a-udev/</link>
		<comments>http://disonanciamental.wordpress.com/2010/02/16/touchpad-synaptics-en-debian-de-hal-a-udev/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 22:39:53 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[HAL]]></category>
		<category><![CDATA[synaptics]]></category>
		<category><![CDATA[touchpad]]></category>
		<category><![CDATA[udev]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=96</guid>
		<description><![CDATA[La configuración del touchpad en los portátiles en Debian ha ido cambiando desde hace unos meses de forma drástica, primero lo configurábamos en nuestro xorg.conf, después llego la automagia de Lenny y pasamos a usar HAL para su configuración. Esto trajo bastante debate y nos toco aprender una nueva forma de configurar el driver synaptics [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=96&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>La configuración del touchpad en los portátiles en Debian ha ido cambiando desde hace unos meses de forma drástica, primero lo configurábamos en nuestro <tt>xorg.conf</tt>, después llego la automagia de Lenny y pasamos a usar HAL para su configuración. Esto trajo bastante debate y nos toco aprender una nueva forma de configurar el driver synaptics en nuestra distro preferida. En ese momento teníamos que crear un archivo de reglas debajo de <tt>/etc/hal/fdi/policy</tt> con nuestra configuración más o menos de esta forma:<br />
<span id="more-96"></span></p>
<p><code><br />
﻿&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;</p>
<p>&lt;deviceinfo version="0.2"&gt;</p>
<p>&lt;device&gt;</p>
<p>&lt;match key="info.capabilities" contains="input.touchpad"&gt;</p>
<p>&lt;match key="info.product" contains="Synaptics TouchPad"&gt;</p>
<p>&lt;merge key="input.x11_driver" type="string"&gt;synaptics&lt;/merge&gt;</p>
<p>&lt;!-- Arbitrary options can be passed to the driver using</p>
<p>the input.x11_options property since xorg-server-1.5. --&gt;</p>
<p>&lt;!-- EXAMPLE:</p>
<p>&lt;merge key="input.x11_options.LeftEdge" type="string"&gt;120&lt;/merge&gt;</p>
<p>--&gt;</p>
<p>&lt;merge key="input.x11_options.LeftEdge" type="string"&gt;1700&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.RightEdge" type="string"&gt;5300&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.TopEdge" type="string"&gt;1700&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.BottomEdge" type="string"&gt;4200&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.FingerLow" type="string"&gt;25&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.FingerHigh" type="string"&gt;30&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.MaxTapTime" type="string"&gt;180&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.MaxTapMove" type="string"&gt;220&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.VertScrollDelta" type="string"&gt;100&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.MinSpeed" type="string"&gt;0.40&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.MaxSpeed" type="string"&gt;1.10&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.AccelFactor" type="string"&gt;0.01500&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.SHMConfig" type="string"&gt;on&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.VertTwoFingerScroll" type="string"&gt;1&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.HorizTwoFingerScroll" type="string"&gt;1&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.VertEdgeScroll" type="string"&gt;1&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.HorizEdgeScroll" type="string"&gt;1&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.TapButton1" type="string"&gt;1&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.TapButton2" type="string"&gt;2&lt;/merge&gt;</p>
<p>&lt;merge key="input.x11_options.TapButton3" type="string"&gt;3&lt;/merge&gt;</p>
<p>&lt;/match&gt;</p>
<p>&lt;match key="info.product" contains="AlpsPS/2 ALPS"&gt;</p>
<p>&lt;merge key="input.x11_driver" type="string"&gt;synaptics&lt;/merge&gt;</p>
<p>&lt;/match&gt;</p>
<p>&lt;match key="info.product" contains="appletouch"&gt;</p>
<p>&lt;merge key="input.x11_driver" type="string"&gt;synaptics&lt;/merge&gt;</p>
<p>&lt;/match&gt;</p>
<p>&lt;match key="info.product" contains="bcm5974"&gt;</p>
<p>&lt;merge key="input.x11_driver" type="string"&gt;synaptics&lt;/merge&gt;</p>
<p>&lt;/match&gt;</p>
<p>&lt;/match&gt;</p>
<p>&lt;/device&gt;</p>
<p>&lt;/deviceinfo&gt;<br />
</code><br />
<span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Cambiaba un poco respecto a la antigua forma, pero no era demasiado complicada&#8230; pero ahora viene la historia que me ha hecho escribir esta entrada&#8230;</span></p>
<p>En una de la ultimas actualizaciones de squeeze se ha actualizado el xserver-xorg-core a una versión 1.7&#8230;, no le di importancia hasta que al cabo de unos días me di cuenta que el tapping del touchpad había dejado de funcionar. Mi primer pensamiento fue: Diablos, que coño a pasado con la configuración de HAL para synaptics. Así que me lié la manta a la cabeza y revise mi configuración sin observar ningún error. Todo estaba bien y empecé a mirar logs, descubrí unos errores sin importancia en el log de las X, ninguna mención a HAL y muchas a udev&#8230; una rápida mirada en nuestro amigo google y me di cuenta que udev es ahora el encargado de configurar las opciones de los touchpads synaptics.</p>
<p>Las reglas predefinidas de udev se crean en su instalación bajo el directorio: <tt>/lib/udev/rules.d/</tt>. Alli tenemos los guiones por defecto para que udev gestione correctamente una serie de dispositivos de hardware, incluyendo nuestro touchpad synaptics con este archivo:<br />
<tt>66-xorg-synaptics.rules</tt>.</p>
<p>Después de copiar nuestro archivo de reglas en un lugar donde lo podemos modificar en: <tt>/etc/udev/rules.d/</tt> vamos a pasar a personalizar el funcionamiento de nuestro touchpad. Para ello vamos a observar cual es el contenido del archivo por defecto:</p>
<p><code><br />
ACTION!="add|change", GOTO="xorg_synaptics_end"<br />
KERNEL!="event*", GOTO="xorg_synaptics_end"</code></p>
<p><code> </code></p>
<p><code>ENV{ID_INPUT_TOUCHPAD}!="1", GOTO="xorg_synaptics_end"</code></p>
<p><code>ENV{x11_driver}="synaptics"</p>
<p># model specific quirks<br />
ATTR{[dmi/id]product_name}=="Inspiron 1011|Inspiron 1012", \<br />
ENV{x11_options.JumpyCursorThreshold}="90", \<br />
ENV{x11_options.AreaBottomEdge}="4100"</p>
<p>ATTR{[dmi/id]product_name}=="HP MiniNote 1000", \<br />
ENV{x11_options.JumpyCursorThreshold}="20"</p>
<p></code></p>
<p><code>LABEL="xorg_synaptics_end"<br />
</code></p>
<p>Como podemos observar hay bastante diferencia&#8230; pero no deja de ser sencillo y muy potente. Para añadir nuestras opciones personalizadas solo hemos de traducirlas al nuevo formato y colocarlas como opción después de la linea que carga el driver, vamos a ver un ejemplo practico:</p>
<p>En en el <tt>xorg.conf</tt> la opción para activar el scroll horizontal usando dos dedos era algo así:</p>
<p><code><br />
Option  "HorizTwoFingerScroll"  "1"<br />
</code></p>
<p>Usando HAL quedaba una linea como esta:</p>
<p><code><br />
﻿&lt;merge key="input.x11_options.HorizTwoFingerScroll" type="string"&gt;1&lt;/merge&gt;</code></p>
<p><code><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;">Ahora en udev queda así:</span></code></p>
<p><code><br />
ENV{x11_options.HorizTwoFingerScroll}="1"<br />
</code></p>
<p>Como vemos la traducción es sencilla entre las diferentes formas de configurar estas opciones, simplemente cambiamos la palabra clave (en nuestro ejemplo HorizTwoFingerScroll) y le asignamos el valor deseado (en nuestro caso &#8220;1&#8243;). Colocamos estas opciones después de la linea que carga el driver quedando el archivo de reglas de esta forma:</p>
<p><code><br />
ACTION!="add|change", GOTO="xorg_synaptics_end"<br />
KERNEL!="event*", GOTO="xorg_synaptics_end"</code></p>
<p><code> </code></p>
<p><code>ENV{ID_INPUT_TOUCHPAD}!="1", GOTO="xorg_synaptics_end"</code></p>
<p><code>ENV{x11_driver}="synaptics"<br />
ENV{x11_options.TapButton1}="1"<br />
ENV{x11_options.TapButton2}="2"<br />
ENV{x11_options.TapButton3}="3"<br />
ENV{x11_options.HorizTwoFingerScroll}="1"</p>
<p># model specific quirks<br />
ATTR{[dmi/id]product_name}=="Inspiron 1011|Inspiron 1012", \<br />
ENV{x11_options.JumpyCursorThreshold}="90", \<br />
ENV{x11_options.AreaBottomEdge}="4100"</p>
<p>ATTR{[dmi/id]product_name}=="HP MiniNote 1000", \<br />
ENV{x11_options.JumpyCursorThreshold}="20"</p>
<p></code></p>
<p><code>LABEL="xorg_synaptics_end"<br />
</code></p>
<p>Reiniciamos udev y las X, para comprobar el éxito de nuestra configuración buscamos en log de las X algo como esto:</p>
<p><code><br />
(II) config/udev: Adding input device "SynPS/2 Synaptics TouchPad" (/dev/input/event8)<br />
(II) LoadModule: "synaptics"<br />
(II) Loading /usr/lib/xorg/modules/input/synaptics_drv.so<br />
(II) Module synaptics: vendor="X.Org Foundation"<br />
compiled for 1.7.3.902, module version = 1.2.1<br />
Module class: X.Org XInput Driver<br />
ABI class: X.Org XInput driver, version 7.0<br />
(II) Synaptics touchpad driver version 1.2.1<br />
(**) Option "Device" "/dev/input/event8"<br />
(II) "SynPS/2 Synaptics TouchPad": x-axis range 1472 - 5472<br />
(II) "SynPS/2 Synaptics TouchPad": y-axis range 1408 - 4448<br />
(II) "SynPS/2 Synaptics TouchPad": pressure range 0 - 255<br />
(II) "SynPS/2 Synaptics TouchPad": finger width range 0 - 0<br />
(II) "SynPS/2 Synaptics TouchPad": buttons: left right middle<br />
(**) Option "HorizTwoFingerScroll" "1"<br />
(**) Option "TapButton1" "1"<br />
(**) Option "TapButton2" "2"<br />
(**) Option "TapButton3" "3"<br />
(--) "SynPS/2 Synaptics TouchPad": touchpad found<br />
(**) "SynPS/2 Synaptics TouchPad": always reports core events<br />
(II) XINPUT: Adding extended input device ""SynPS/2 Synaptics TouchPad"" (type: TOUCHPAD)<br />
(**) "SynPS/2 Synaptics TouchPad": (accel) keeping acceleration scheme 1<br />
(**) "SynPS/2 Synaptics TouchPad": (accel) acceleration profile 0<br />
(--) "SynPS/2 Synaptics TouchPad": touchpad found<br />
(II) config/udev: Adding input device "SynPS/2 Synaptics TouchPad" (/dev/input/mouse1)<br />
(**) "SynPS/2 Synaptics TouchPad": always reports core events<br />
(**) "SynPS/2 Synaptics TouchPad": Device: "/dev/input/mouse1"<br />
</code></p>
<p>Como podemos observar, ahí están nuestros ajustes cargados y configurados.</p>
<p>Para terminar&#8230; si os fijáis no he incluido la clásica opción <tt>SHMConfig</tt> en mi configuración, esto solo es así porque ya no es necesaria, podemos cambiar de forma dinámica las opciones de nuestro touchpad con synclient y syndaemon sin esta opción.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=96&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2010/02/16/touchpad-synaptics-en-debian-de-hal-a-udev/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Battle of wesnoth a l&#8217;iphone.</title>
		<link>http://disonanciamental.wordpress.com/2010/02/03/battle-of-wesnoth-a-liphone/</link>
		<comments>http://disonanciamental.wordpress.com/2010/02/03/battle-of-wesnoth-a-liphone/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 22:47:35 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Català]]></category>
		<category><![CDATA[Battle for Wesnoth]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=92</guid>
		<description><![CDATA[Com diu el titul d&#8217;aquest post&#8230; podem jugar al millor joc fet per a GNU/linux en qualsevol lloc. Battle for Wesnoth es un joc d&#8217;estratègia per torns amb una gran comunitat darrere i molts anys d&#8217;èxit sent un dels jocs de referencia dins del programari lliure. Un joc lliure molt millor que molts privatius amb [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=92&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Com diu el titul d&#8217;aquest post&#8230; podem jugar al millor joc fet per a GNU/linux en qualsevol lloc. <a href="http://www.wesnoth.org/">Battle for Wesnoth</a> es un joc d&#8217;estratègia per torns amb una gran comunitat darrere i molts anys d&#8217;èxit sent un dels jocs de referencia dins del programari lliure. Un joc lliure molt millor que molts privatius amb una gran jugabilitat i quasi inacabable diversió.</p>
<p><span id="more-92"></span></p>
<p>Per al iphone el joc te dues versions, una de pagament completa i un altra gratuïta amb nomes una campanya i sense capacitat de joc online, el joc pese uns docents megues i funciona molt be, jo pensava que serie difícil jugar amb una pantalla tan xicoteta, però el joc es fa còmode, nomes es troba a faltar les tecles rapides que tot jugador amb el pc d&#8217;aquest meravellós joc.</p>
<p>El joc de vegades es relentitza perquè te un gran consum de recursos i per aquest motiu el mateix joc recomana reiniciar el telefon abans de jugar un bon rato (cosa que passara per el grau d&#8217;adició que provoca) però son problemes menors, he jugat molt de temps seguit i no he tingut cap problema.</p>
<p>Os deixe un vídeo que he trobat a youtube:</p>
<span class='embed-youtube' style='text-align:center; display:block;'><object width='497' height='310'><param name='movie' value='http://www.youtube.com/v/aJWejVTspYQ?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' /> <param name='allowfullscreen' value='true' /> <param name='wmode' value='opaque' /> <embed src='http://www.youtube.com/v/aJWejVTspYQ?version=3&rel=1&fs=1&showsearch=0&showinfo=1&iv_load_policy=1' type='application/x-shockwave-flash' allowfullscreen='true' width='497' height='310' wmode='opaque'></embed> </object></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/92/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=92&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2010/02/03/battle-of-wesnoth-a-liphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Mis iconos para los widgets de awesome.</title>
		<link>http://disonanciamental.wordpress.com/2010/01/08/mis-iconos-para-los-widgets-de-awesome/</link>
		<comments>http://disonanciamental.wordpress.com/2010/01/08/mis-iconos-para-los-widgets-de-awesome/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 22:34:54 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[iconos]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=84</guid>
		<description><![CDATA[Desde casi el primer momento en que me decidí a usar awesome empecé a añadir y crear widgets, al principio mis widgets solo tenían texto, pero poco a poco fui añadiendo iconos. Poco a poco los textos de los widgets fueron desapareciendo dejando a los iconos el papel protagonista, hubo un momento en que pensé [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=84&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Desde casi el primer momento en que me decidí a usar awesome empecé a añadir y crear widgets, al principio mis widgets solo tenían texto, pero poco a poco fui añadiendo iconos. Poco a poco los textos de los widgets fueron desapareciendo dejando a los iconos el papel protagonista, hubo un momento en que pensé en usar las barras de progreso que he visto en muchas configuraciones de este wm pero no me acaban de gustar, el texto ocupaba demasiado y los iconos se convirtieron en mi solución.</p>
<p><span id="more-84"></span></p>
<p>Por lo tanto, mi juego de iconos para los widgets tienen muchos para la misma función, ya que los cambio según las necesidades en mi <tt>rc.lua</tt> y reflejan el estado mediante una pequeña variación en el widget. </p>
<p>Muchos de mis iconos son variaciones (o directamente sin tocar nada más que el color y el formato xddd) de un juego de iconos llamados <a href="http://dzen.geekmode.org/dwl/dzen-xbm-pack.tar.gz">Thayer&#8217;s icon</a> del <a href="http://dzen.geekmode.org/wiki/wiki.cgi/-main/DzenIconPacks">dzen wiki</a> visto en <a href="http://awesome.naquadah.org/wiki/Nice_Icons">está</a> página del wiki de awesome. Mi set se compone de 44 iconos que voy a pasar a enumerarlos:</p>
<ul>
<li>Ocho iconos para el brillo, estos iconos son completamente originales mios</li>
<li>Un icono llamado blank que sirve para dar cuenta que algo no existe. Este icono también es mio original.</li>
<li>Dos iconos para el bluetooth. Esto también son mios</li>
<li>Cinco iconos para el wifi, estos iconos son derivados de uno de los iconos de Thayer.</li>
<li>Cuatro iconos para el volumen derivados de dos iconos de Thayer.</li>
<li>Dos iconos para el touchpad. Estos son originales mios.</li>
<li>Veintidós iconos para la batería basados en dos iconos de Thayer.</li>
</ul>
<p>Aquí tenéis una imagen con todos los iconos:</p>
<p><a href="http://disonanciamental.files.wordpress.com/2010/01/iconesnegre.png"><img src="http://disonanciamental.files.wordpress.com/2010/01/iconesnegre.png?w=186&#038;h=67" alt="" title="widget-icones-awesome" width="186" height="67" class="alignnone size-full wp-image-83" /></a></p>
<p>Y se puede descargar desde <a href="http://rapidshare.com/files/332386292/icons-widget-awesome.tar.gz">aquí</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=84&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2010/01/08/mis-iconos-para-los-widgets-de-awesome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>

		<media:content url="http://disonanciamental.files.wordpress.com/2010/01/iconesnegre.png" medium="image">
			<media:title type="html">widget-icones-awesome</media:title>
		</media:content>
	</item>
		<item>
		<title>Activar acceleració gràfica en una ati r600 amb el driver lliure radeon en Debian.</title>
		<link>http://disonanciamental.wordpress.com/2009/12/29/activar-acceleracio-grafica-en-una-ati-r600-amb-el-driver-lliure-radeon-en-debian/</link>
		<comments>http://disonanciamental.wordpress.com/2009/12/29/activar-acceleracio-grafica-en-una-ati-r600-amb-el-driver-lliure-radeon-en-debian/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:15:53 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Català]]></category>
		<category><![CDATA[acceleracio]]></category>
		<category><![CDATA[Ati]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[r600]]></category>
		<category><![CDATA[radeon]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=78</guid>
		<description><![CDATA[L&#8217;altre dia vaig tindre un problema amb el driver privatiu d&#8217;Ati, com tinc una HD 2400 el driver lliure no em donava acceleració en el meu Debian Squeeze, així que em vaig disposar a compilar la versió experimental de DRI per a gaudir de l&#8217;acceleració gràfica en el meu hardware. Abans de ficar-me en faena [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=78&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>L&#8217;altre dia vaig tindre un problema amb el driver privatiu d&#8217;Ati, com tinc una HD 2400 el driver lliure no em donava acceleració en el meu Debian Squeeze, així que em vaig disposar a compilar la versió experimental de DRI per a gaudir de l&#8217;acceleració gràfica en el meu hardware. Abans de ficar-me en faena vaig pegar una mirà en els repositoris de Debian i&#8230; sorpresa¡ no em calia compilar res&#8230;</p>
<p><span id="more-78"></span></p>
<p><strong>Requisits:</strong></p>
<ol>
<li>Un Debian squeeze actualitzat</li>
<li>Una targeta gràfica Ati r500 o r600</li>
<li>Ganes d&#8217;emmarranar el sistema</li>
</ol>
<p><strong>Procediment:</strong></p>
<p>Primer escomençarem activant els repositoris de Sid i d&#8217;Experimental i configurarém l&#8217;apt-pinning per a no tindre massa problemes. Una vegada fet això nomes tindrem que instal·lar els paquets necessaris després d&#8217;actualitzar la base de dades:</p>
<p><code>#aptitude update</code></p>
<p>Ara actualitzarem el paquet <a>libgl1-mesa-dri</a> desde Experimental:</p>
<p><code>#aptitude -t experimental install libgl1-mesa-dri</code></p>
<p>Instal·lem el <a>kernel de Sid</a> i el paquet de <a>firmware no-lliure</a> per a ell.</p>
<p><code># aptitude -t sid install linux-image-2.6.32-trunk-amd64 firmware-linux-nonfree</code></p>
<p>El paquet de firmware es necessari perquè inclou el blob binari necessari per al correcte funcionament de la nostra gràfica.</p>
<p>Ja ho tenim tot. No cal fer res al xorg.conf, l&#8217;automagia d&#8217;aquest farà tot el necessari.</p>
<p>Arranquem en el nou kernel i ja tenim acceleració gràfica amb el driver radeon&#8230;</p>
<p>Les meves observacions del rendiment d&#8217;aquest driver son molt esperançadores, funciona molt be amb programes con stellarium o els efectes de KDE 4 però el NWN funciona però molt lent, es jugable però no còmode.</p>
<p>El major problema que tinc es en la suspensió, però encara estic treballant en això. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=78&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/12/29/activar-acceleracio-grafica-en-una-ati-r600-amb-el-driver-lliure-radeon-en-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Widgets awesome 3.4 reloaded</title>
		<link>http://disonanciamental.wordpress.com/2009/12/15/widgets-awesome-3-4-reloaded/</link>
		<comments>http://disonanciamental.wordpress.com/2009/12/15/widgets-awesome-3-4-reloaded/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 22:40:11 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=67</guid>
		<description><![CDATA[Hace unos días publiqué esta entrada presentando mis widgets con vicious en awesome 3.4&#8230; Bueno han pasado unos días y ya ha quedado obsoleta. Este pasado fin de semana le he pegado un buen meneo a mis widgets, primero cree uno nuevo para controlar el brillo, al hacerlo me di cuenta que podía unir los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=67&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace unos días publiqué <a href="http://disonanciamental.wordpress.com/2009/12/06/mis-widgets-de-awesome/">esta </a>entrada presentando mis widgets con vicious en awesome 3.4&#8230; Bueno han pasado unos días y ya ha quedado obsoleta.</p>
<p>Este pasado fin de semana le he pegado un buen meneo a mis widgets, primero cree uno nuevo para controlar el brillo, al hacerlo me di cuenta que podía unir los tres widgets que usaban el módulo omnibook en uno solo y realice el cambio. Casi al mismo tiempo decidí usar las funciones predefinidas que trae vicious para la batería y el volumen, ya que eran muy parecidos a los mios propios. Dicho y hecho.</p>
<p><span id="more-67"></span></p>
<p>Primero hablare sobre el nuevo widget que unifica el del bluetooth, el del touchpad y el del brightness en uno. Todas estas funciones las controlo en mi portátil toshiba con el módulo <a href="http://sourceforge.net/projects/omnibook/">omnibook</a>, así que al tener el mismo origen y ser muy parecidos en la ejecución me ha parecido lógico unirlos:</p>
<p><strong>omnibook.lua</strong></p>
<p><code><br />
-- {{{ Grab environment<br />
local tonumber = tonumber<br />
local setmetatable = setmetatable<br />
local helpers = require("vicious.helpers")<br />
local string = {<br />
find = string.find,<br />
match = string.match<br />
}<br />
-- }}}</code></p>
<p><code>-- Omnibook vicious. Provides state of brightness, bluetooth and touchpad of omnibook module.<br />
module("vicious.omnibook")</p>
<p>function worker (format)<br />
local omnibook = helpers.pathtotable("/proc/omnibook")<br />
local touch = "N/A"<br />
local blue = "N/A"<br />
local bright = -1</p>
<p>if omnibook.touchpad then<br />
statustouch = omnibook.touchpad<br />
if string.find(statustouch, "enable", 0, true) then<br />
touch = "active"<br />
else<br />
touch = "noactive"<br />
end<br />
else<br />
touch = "N/A"<br />
end</p>
<p>if omnibook.bluetooth then<br />
statusblue = omnibook.bluetooth<br />
if string.find(statusblue, "enable", 0, true) then<br />
blue = "active"<br />
else<br />
blue = "noactive"<br />
end<br />
else<br />
blue = "N/A"<br />
end</p>
<p>if omnibook.lcd then<br />
statusbright = omnibook.lcd<br />
bright = tonumber(string.match(statusbright, "([%d])% %("))<br />
else<br />
bright = -1<br />
end</p>
<p>return {bright, touch, blue}<br />
end</p>
<p></code></p>
<p><code>setmetatable(_M, { __call = function(_, ...) return worker(...) end })<br />
</code></p>
<p>Como se puede observar esta función comprueba la existencia de cada uno de los archivos implicados situados en el <tt>/proc/omnibook</tt>, si no existe devuelve un valor para denotarlo: <tt>N/A</tt> para el bluetooth y el touchpad o <tt>-1</tt> en el caso del brightness.</p>
<p>Si los archivos existen obtiene el estado de cada uno de los archivos y devuelve un resultado con el que podemos trabajar:</p>
<p>En el caso del bluetooth y del touchpad:</p>
<ol>
<li><tt>active</tt>. En el caso de que este activo.</li>
<li><tt>noactive</tt>. En el caso de que no este activo.</li>
</ol>
<p>En el caso del brightness devuelve un valor numérico entre 0 y 7 con el valor actual del brillo de la pantalla.</p>
<p>Todos estos datos se devuelven en una tabla, primero el brillo, segundo el touchpad y tercero el bluetooth.</p>
<p>Con estos datos con un solo registro de vicious creo mis tres widgets para mostrar mediante iconos los tres estados. Aquí pongo el código que uso en mi <tt>rc.lua</tt> para realizar esto:</p>
<p><code><br />
-- {{{ Omnibook widget<br />
-- Touchpad icon<br />
touchicon = widget({ type = "imagebox", name = "touchicon"})<br />
-- Bluetooth icon<br />
blueicon = widget({ type = "imagebox", name = "blueicon"})<br />
-- Brightness icon<br />
brighticon = widget({ type = "imagebox", name = "brighticon"})<br />
-- Register widget<br />
vicious.register(touchicon,vicious.widgets.omnibook,<br />
function (widget, args)<br />
if args[2] == "active" then<br />
touchicon.image=image(confdir.."/icons/touch.png")<br />
elseif args[2] == "noactive" then<br />
touchicon.image  = image(confdir.."/icons/touchno.png")<br />
else<br />
touchicon.image = image(confdir.."/icons/blank.png")<br />
end<br />
if args[3] == "active" then<br />
blueicon.image=image(confdir.."/icons/blue.png")<br />
elseif args[3] == "noactive" then<br />
blueicon.image  = image(confdir.."/icons/blueno.png")<br />
else<br />
blueicon.image = image(confdir.. "/icons/blank.png")<br />
end<br />
if args[1] == 0 then<br />
brighticon.image=image(confdir.."/icons/brightness8.png")<br />
elseif args[1] == 1 then<br />
brighticon.image=image(confdir.."/icons/brightness7.png")<br />
elseif args[1] == 2 then<br />
brighticon.image=image(confdir.."/icons/brightness6.png")<br />
elseif args[1] == 3 then<br />
brighticon.image=image(confdir.."/icons/brightness5.png")<br />
elseif args[1] == 4 then<br />
brighticon.image=image(confdir.."/icons/brightness4.png")<br />
elseif args[1] == 5 then<br />
brighticon.image=image(confdir.."/icons/brightness3.png")<br />
elseif args[1] == 6 then<br />
brighticon.image=image(confdir.."/icons/brightness2.png")<br />
elseif args[1] == 7 then<br />
brighticon.image=image(confdir.."/icons/brightness1.png")<br />
else<br />
brighticon.image=image(confdir.."/icons/blank.png")<br />
end<br />
end, 11)<br />
</code></p>
<p>Como se puede observar el código es muy simple, simplemente comprobamos el valor de la variable y colocamos el icono correcto según el caso, los iconos que uso se pueden observar en mi git público <a href="http://senyorcaos.homelinux.org/git/?p=awesome34.git;a=tree;f=icons;h=da61bc1c5df8cb1b3f47d97d01e7e59f129305a7;hb=HEAD">aquí</a></p>
<p>Respecto a los otros dos widgets, el del volumen y el de la batería al usar las funciones de <a href="http://awesome.naquadah.org/wiki/Vicious">vicious</a> he tenido que adaptar mis widgets a los datos que estos nos da.</p>
<p>En el caso de la batería este es mí widget en el <tt>rc.lua</tt>:</p>
<p><code>-- {{{ Battery state<br />
-- Widget icon<br />
baticon       = widget({ type = "imagebox", name = "baticon" })<br />
-- Initialize widget<br />
batwidget     = widget({ type = "textbox", name = "batwidget" })<br />
-- Register widget<br />
vicious.register(batwidget, vicious.widgets.bat,<br />
function (widget, args)<br />
if   args[1] == "⌁" then<br />
baticon.image=image(confdir.. "/icons/power-ac.png")<br />
return ""<br />
elseif args[1] == "+" then<br />
baticon.image=image(confdir.. "/icons/power-ac.png")<br />
return "("..args[2]..")"<br />
else<br />
if args[2] &gt; 70 then<br />
baticon.image=image(confdir.. "/icons/power-bat-high.png")<br />
return "("..args[2]..")"<br />
elseif args[2] &gt; 40 and args[2]  10 and args[2]  5 and args[2] &lt;= 10 then<br />
baticon.image=image(confdir.. "/icons/power-bat-low.png")<br />
return "("..args[2]..")"<br />
else<br />
baticon.image=image(confdir.. "/icons/power-bat-low.png")<br />
naughty.notify({ title      = "Battery Warning"<br />
, text       = "Battery low! "..args[1].."% left!"<br />
, timeout    = 5<br />
, position   = "top_right"<br />
, fg         = beautiful.fg_focus<br />
, bg         = beautiful.bg_focus<br />
})<br />
return "("..args[2]..")"<br />
end<br />
end<br />
end,<br />
23, "BAT1")<br />
-- }}}</p>
<p></code></p>
<p>Como se puede observar la única diferencia significativa es que ahora tengo que hacer los tramos aquí para asignar el icono correcto, también inserto una notificación naughty cuando la batería baja al 5%.</p>
<p>El del volumen ha quedado así:</p>
<p><code><br />
-- {{{ Volume state<br />
-- Widget<br />
volicon	= widget({ type = "imagebox", name = "volicon" })<br />
-- Register widget<br />
vicious.register(volicon, vicious.widgets.volume,<br />
function (widget, args)<br />
if args[1] == 0 then<br />
volicon.image=image(confdir.."/icons/vol-mute.png")<br />
elseif args[1] &gt; 66 then<br />
volicon.image=image(confdir.."/icons/vol-hi.png")<br />
elseif args[1] &gt; 33 and args[1] &lt;= 66 then<br />
volicon.image=image(confdir.."/icons/vol-med.png")<br />
else<br />
volicon.image  = image(confdir.."/icons/vol-low.png")<br />
end<br />
end,<br />
2, "Master")<br />
</code></p>
<p>Al igual que con el anterior también he movido aquí los tramos para la elección del icono correcto, también es un código muy sencillo.</p>
<p>Ahora pongo unas cuantas imágenes de como han quedado mis widget en mi awesome:</p>
<p><img src="http://disonanciamental.files.wordpress.com/2009/12/widget1.png?w=497" alt="Widget1" /></p>
<p><img src="http://disonanciamental.files.wordpress.com/2009/12/widget2.png?w=497" alt="Widget2" /></p>
<p><img src="http://disonanciamental.files.wordpress.com/2009/12/widget3.png?w=497" alt="Widget3" /></p>
<p>Una captura de mi escritorio:</p>
<p><a href="http://disonanciamental.files.wordpress.com/2009/12/2009-12-12-005424_1280x800_scrot.png"><img src="http://disonanciamental.files.wordpress.com/2009/12/2009-12-12-005424_1280x800_scrot.png?w=520&#038;h=350" alt="Captura" width="520" height="350" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=67&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/12/15/widgets-awesome-3-4-reloaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>

		<media:content url="http://disonanciamental.files.wordpress.com/2009/12/widget1.png" medium="image">
			<media:title type="html">Widget1</media:title>
		</media:content>

		<media:content url="http://disonanciamental.files.wordpress.com/2009/12/widget2.png" medium="image">
			<media:title type="html">Widget2</media:title>
		</media:content>

		<media:content url="http://disonanciamental.files.wordpress.com/2009/12/widget3.png" medium="image">
			<media:title type="html">Widget3</media:title>
		</media:content>

		<media:content url="http://disonanciamental.files.wordpress.com/2009/12/2009-12-12-005424_1280x800_scrot.png" medium="image">
			<media:title type="html">Captura</media:title>
		</media:content>
	</item>
		<item>
		<title>Uzbl: Notificacions quant descarrega</title>
		<link>http://disonanciamental.wordpress.com/2009/12/07/uzbl-notificacions-quant-descarrega/</link>
		<comments>http://disonanciamental.wordpress.com/2009/12/07/uzbl-notificacions-quant-descarrega/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 22:57:41 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Català]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Software lliure]]></category>
		<category><![CDATA[uzbl]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=56</guid>
		<description><![CDATA[Fa uns dies vaig parlar del meu navegador preferit uzbl, fa temps que el gaste però no he fet cap modificació a la seua configuració predetermina ni els scripts que ens donen funcionalitats com la descarrega, els bookmarks o l&#8217;historia fins avui. He modificat el script encarregat de descarregar arxius d&#8217;exemple per a que ens [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=56&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Fa uns dies vaig parlar del meu navegador preferit <a href="http://www.uzbl.org/">uzbl</a>, fa temps que el gaste però no he fet cap modificació a la seua configuració predetermina ni els scripts que ens donen funcionalitats com la descarrega, els bookmarks o l&#8217;historia fins avui.</p>
<p>He modificat el script encarregat de descarregar arxius d&#8217;exemple per a que ens digui quant escomença una descarrega i quant acaba.<br />
<span id="more-56"></span><br />
Per a fer-lo he gastat les notificacions al desktop emprant dbus, hi ha una comanda anomenada <tt>notify-send</tt> per a fer de manera fàcil i còmoda aquestes notificacions. Per això primer escomençarem instal.lant aquesta ferramenta, en el cas de Debian farem:</p>
<p><tt>aptitude install libnotify-bin</tt></p>
<p>Una vegada fet açò modifiquem el nostre script (típicament situat a <tt>~/.config/uzbl/scripts</tt>) deixant-lo així:</p>
<p><code><br />
#!/bin/sh</p>
<p># Some sites block the default wget --user-agent..<br />
GET="wget --user-agent=Firefox"</p>
<p>dest="$HOME"<br />
url="$8"</p>
<p>http_proxy="$9"<br />
export http_proxy</p>
<p>test "x$url" = "x" &amp;#Correct url, only show name of archive<br />
urlc=`echo $url | sed -e 's/^.*\///'`</p>
<p># only changes the dir for the $get sub process<br />
if echo "$url" | grep -E '.*\.torrent' &gt;/dev/null;<br />
then<br />
    notify-send "Downloading:" "$urlc"<br />
    ( cd "$dest"; eval "$GET" "$url")<br />
    notify-send "Downloaded:" "$urlc"<br />
else<br />
    notify-send "Downloading:" "$urlc"<br />
    ( cd "$dest"; eval "$GET" "$url")<br />
    notify-send "Downloaded:" "$urlc"<br />
fi<br />
</code></p>
<p>Com vegem primer em modificat l&#8217;url per a que sigui més bonica amb aquesta rengló:</p>
<p><code><br />
urlc=`echo $url | sed -e 's/^.*\///'`<br />
</code></p>
<p>Encabant abans i després de la ordre amb <tt>wget</tt> llancem la notificació al nostre gestor de finestres.<br />
<code><br />
    notify-send "Downloading:" "$urlc"<br />
    ...<br />
    notify-send "Downloaded:" "$urlc"<br />
</code></p>
<p>Jo nomes he testejat en <a href="http://awesome.naquadah.org/">awesome</a> i funciona perfectament en la versió 3.4., si el teu entorn te suport per a aquest tipus de notificació funcionara sense cap problema.</p>
<p>En awesome la notificació acaba sent un popup naughty donam-nos l&#8217;informació pretesa.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=56&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/12/07/uzbl-notificacions-quant-descarrega/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Mis widgets de awesome 3.4 con vicious</title>
		<link>http://disonanciamental.wordpress.com/2009/12/06/mis-widgets-de-awesome/</link>
		<comments>http://disonanciamental.wordpress.com/2009/12/06/mis-widgets-de-awesome/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 00:10:26 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[vicious]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=46</guid>
		<description><![CDATA[Bueno, voy a continuar comentando cosas sobre awesome. Hoy hablare de los widgets que estoy usando en la versión estable de este. Son widgets creados por mi usando vicious. Cada widget consta de dos partes, la primera es el contenido del archivo lua que tenemos que declarar en el init.lua de vicious y la segunda [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=46&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, voy a continuar comentando cosas sobre <a href="http://awesome.naquadah.org/">awesome</a>. Hoy hablare de los widgets que estoy usando en la versión estable de este. Son widgets creados por mi usando <a href="http://awesome.naquadah.org/wiki/Vicious">vicious</a>.</p>
<p>Cada widget consta de dos partes, la primera es el contenido del archivo lua que tenemos que declarar en el <tt>init.lua</tt> de vicious y la segunda es la forma que tenemos de llamarlo en nuestro <tt>rc.lua</tt>.</p>
<p>No voy a explicar como funciona realmente los widgets en vicious, eso ya lo hice en <a href="http://elsenyordelcaos.esdebian.org/36043/notas-sobre-awesome-vicious">esta</a> entrada de mi anterior blog.<br />
<span id="more-46"></span></p>
<p>Voy a empezar por el widget del volumen, este es el contenido del archivo <tt>batterycontrol.lua</tt> el cual hemos declarado en el <tt>init.lua</tt>.</p>
<p><code><br />
-- {{{ Grab environment<br />
local tonumber = tonumber<br />
local io = { popen = io.popen }<br />
local setmetatable = setmetatable<br />
local math = { floor = math.floor }<br />
local string = {<br />
    find = string.find,<br />
    match = string.match,<br />
    format = string.format<br />
}<br />
-- }}}</p>
<p>-- Volumecontrol: provides a icon status of volume<br />
module("vicious.volumecontrol")</p>
<p>function worker (format,channel)<br />
     local cardid = 0<br />
     local icon = "mute"<br />
     local status = io.popen("amixer -c " .. cardid .. " -- sget " .. channel):read("*all")<br />
     local volume = tonumber(string.match(status, "(%d?%d?%d)%%"))<br />
     status = string.match(status, "%[(o[^%]]*)%]")<br />
     if string.find(status, "off", 0, true) then<br />
	icon = "mute"<br />
     elseif volume &gt;= 75 and volume  25 and volume  0 and volume &lt;= 25 then<br />
	icon = &quot;low&quot;<br />
     else<br />
	icon = &quot;mute&quot;<br />
     end<br />
     return {icon}<br />
end</p>
<p>setmetatable(_M, { __call = function(_, ...) return worker(...) end })<br />
</code></p>
<p>Y esta es la forma en que yo lo llamo en mi <tt>rc.lua</tt>.</p>
<p><code><br />
-- Widget<br />
volicon	= widget({ type = "imagebox", name = "volicon" })<br />
-- Register widget<br />
vicious.register(volicon, vicious.widgets.volumecontrol,<br />
      function (widget, args)<br />
	  if args[1] == "mute" then<br />
	    volicon.image=image(confdir.."/icons/vol-mute.png")<br />
	  elseif args[1] == "hi" then<br />
	    volicon.image=image(confdir.."/icons/vol-hi.png")<br />
	  elseif args[1] == "med" then<br />
	    volicon.image=image(confdir.."/icons/vol-med.png")<br />
	  else<br />
	    volicon.image  = image(confdir.."/icons/vol-low.png")<br />
	  end<br />
      end,<br />
      2, "Master")<br />
</code></p>
<p>Este widget nos devuelve el nivel de volumen en cuatro estados, con esto en el rc.lua cambiamos el icono para que refleje ese estado. Simplemente hay que configurar la id de la tarjeta de sonido en el propio widget y pasarle como argumento el canal. Ya en el <tt>rc.lua</tt> a cada estado le asignamos un icono diferente que ira cambiando de forma dinámica en cada actualización del widget.</p>
<p>El segundo widget que voy a tratar es el de la batería. El contenido del widget que llamamos <tt>battery.lua</tt> es:</p>
<p><code><br />
-- {{{ Grab environment<br />
local tonumber = tonumber<br />
local io = { open = io.open }<br />
local setmetatable = setmetatable<br />
local math = { floor = math.floor }<br />
local string = {<br />
    find = string.find,<br />
    match = string.match,<br />
    format = string.format<br />
}<br />
-- }}}</p>
<p>-- Battery: provides state and charge for a requested battery<br />
module("vicious.battery")</p>
<p>-- {{{ Battery widget type</p>
<p>function worker(format,adapter)<br />
     local fcur = io.open("/sys/class/power_supply/"..adapter.."/charge_now")<br />
     local fcap = io.open("/sys/class/power_supply/"..adapter.."/charge_full")<br />
     local fsta = io.open("/sys/class/power_supply/"..adapter.."/status")<br />
     local cur = fcur:read()<br />
     local cap = fcap:read()<br />
     local sta = fsta:read()<br />
     local battery = math.floor(cur * 100 / cap)<br />
     local spacer = " "<br />
     batimage  = "power"<br />
     if sta:match("Charging") then<br />
         battery = "("..battery..")"<br />
	 batimage  = "power"<br />
     elseif sta:match("Discharging") then<br />
         if tonumber(battery) &gt; 25 and tonumber(battery) &lt; 75 then<br />
             battery = &quot;(&quot;..battery..&quot;)&quot;<br />
             batimage  = &quot;batmed&quot;<br />
         elseif tonumber(battery)  10 then<br />
             battery = "("..battery..")"<br />
	     batimage  = "batlow2"<br />
	 elseif tonumber(battery) &lt; 11 then<br />
	     battery = &quot;(&quot;..battery..&quot;)&quot;<br />
	     batimage = &quot;batlow&quot;<br />
         else<br />
             battery = &quot;(&quot;..battery..&quot;)&quot;<br />
	     batimage  = &quot;bathigh&quot;<br />
         end<br />
     else<br />
         battery = &quot;&quot;<br />
	 batimage  = &quot;power&quot;<br />
     end<br />
     fcur:close()<br />
     fcap:close()<br />
     fsta:close()<br />
     return {battery,batimage}<br />
 end<br />
-- }}}</p>
<p>setmetatable(_M, { __call = function(_, ...) return worker(...) end })<br />
</code></p>
<p>Mi forma de llamarlo en mi <tt>rc.lua</tt> es la siguiente:</p>
<p><code><br />
-- Widget icon<br />
baticon       = widget({ type = "imagebox", name = "baticon" })<br />
-- Initialize widget<br />
batwidget     = widget({ type = "textbox", name = "batwidget" })<br />
-- Register widget<br />
vicious.register(batwidget, vicious.widgets.battery,<br />
     function (widget, args)<br />
	  if   args[2] == "bathigh" then<br />
	    baticon.image=image(confdir.. "/icons/power-bat-high.png")<br />
	    return args[1]<br />
	  elseif args[2] == "batmed" then<br />
	    baticon.image=image(confdir.. "/icons/power-bat.png")<br />
	    return args[1]<br />
	  elseif args[2] == "batlow2" then<br />
	    baticon.image=image(confdir.. "/icons/power-bat-low2.png")<br />
	    return args[1]<br />
	  elseif args[2] == "batlow" then<br />
	    baticon.image=image(confdir.. "/icons/power-bat-low.png")<br />
	    naughty.notify({ title      = "Battery Warning"<br />
                                , text       = "Battery low! "..args[1].."% left!"<br />
                                , timeout    = 5<br />
                                , position   = "top_right"<br />
                                , fg         = beautiful.fg_focus<br />
                                , bg         = beautiful.bg_focus<br />
                           })<br />
	    return args[1]<br />
	  else<br />
	    baticon.image=image(confdir.. "/icons/power-ac.png")<br />
	    return args[1]<br />
	  end<br />
      end,<br />
      23, "BAT1")<br />
</code></p>
<p>El widget necesita que le pasemos la batería como un argumento.</p>
<p>La función devuelve dos valores, primero nos devuelve el estado cambia entre cinco (ac, batería llena, batería media, batería baja y batería critica) y luego nos devuelve la carga de la batería si no esta al 100%.</p>
<p>En el <tt>rc.lua</tt> cambio un icono según el estado y muestro la carga cuando se esta descargando o cargando.</p>
<p>El tercer y cuarto widget son prácticamente iguales, así que trataré los dos a la vez, estos widgets solo muestran el estado del bluetooth interno y el touchpad integrado, si están activos o no.</p>
<p>El bluetooth.lua:</p>
<p><code><br />
-- {{{ Grab environment<br />
local tonumber = tonumber<br />
local io = { popen = io.popen }<br />
local setmetatable = setmetatable<br />
local math = { floor = math.floor }<br />
local string = {<br />
    find = string.find,<br />
}<br />
-- }}}</p>
<p>-- Bluetooth state, provide state of bluetooth (plug/unplug)<br />
module("vicious.bluetooth")</p>
<p>function worker (format,channel)<br />
     local icon = "active"<br />
     local status = io.popen("cat /proc/omnibook/bluetooth"):read("*all")<br />
     if string.find(status, "enable", 0, true) then<br />
	icon = "active"<br />
     else<br />
	icon = "noactive"<br />
     end<br />
     return {icon}<br />
end</p>
<p>setmetatable(_M, { __call = function(_, ...) return worker(...) end })<br />
</code></p>
<p>touch.lua:</p>
<p><code><br />
-- {{{ Grab environment<br />
local tonumber = tonumber<br />
local io = { popen = io.popen }<br />
local setmetatable = setmetatable<br />
local math = { floor = math.floor }<br />
local string = {<br />
    find = string.find,<br />
}<br />
-- }}}</p>
<p>-- Touchpad state. Provide state of touchpad (active/noactive)<br />
module("vicious.touch")</p>
<p>function worker (format,channel)<br />
     local icon = "active"<br />
     local status = io.popen("cat /proc/omnibook/touchpad"):read("*all")<br />
     if string.find(status, "enable", 0, true) then<br />
	icon = "active"<br />
     else<br />
	icon = "noactive"<br />
     end<br />
     return {icon}<br />
end</p>
<p>setmetatable(_M, { __call = function(_, ...) return worker(...) end })<br />
</code></p>
<p>Las llamadas son estas:</p>
<p><code><br />
-- {{{ Bluetooth widget<br />
-- Icon<br />
blueicon = widget({ type = "imagebox", name = "blueicon"})<br />
--blueicon.image  = image(confdir.."/icons/blue.png")<br />
-- Register widget<br />
vicious.register(blueicon,vicious.widgets.bluetooth,<br />
      function (widget, args)<br />
	  if args[1] == "active" then<br />
	    blueicon.image=image(confdir.."/icons/blue.png")<br />
	  else<br />
	    blueicon.image  = image(confdir.."/icons/blueno.png")<br />
	  end<br />
      end, 2)<br />
blueicon:buttons(awful.util.table.join(<br />
                           awful.button({ }, 1, function () awful.util.spawn("stopbluetooth", false) end)))<br />
-- }}}</p>
<p>-- {{{ Touchpad widget<br />
-- Icon<br />
touchicon = widget({ type = "imagebox", name = "touchicon"})<br />
-- Register widget<br />
vicious.register(touchicon,vicious.widgets.touch,<br />
      function (widget, args)<br />
	  if args[1] == "active" then<br />
	    touchicon.image=image(confdir.."/icons/touch.png")<br />
	  else<br />
	    touchicon.image  = image(confdir.."/icons/touchno.png")<br />
	  end<br />
      end, 2)<br />
-- }}}<br />
</code></p>
<p>Como se puede observar estos widgets solo funcionan en un portátil que soporte el módulo <tt>omnibook</tt>. Solo devuelve el estado del hardware y cambio el icono en el <tt>rc.lua</tt>.</p>
<p>Tengo habilitado un repositorio git para poder ver y clonar la configuración:</p>
<p><a href="http://senyorcaos.homelinux.org/git/?p=awesome34.git;a=tree">Repositorio via web</a></p>
<p>y para clonarlo:</p>
<p><tt>$ git clone git://senyorcaos.homelinux.org/awesome34.git</tt></p>
<p>No tiene ningún misterio pero si tenéis duda solo tenéis que comentar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=46&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/12/06/mis-widgets-de-awesome/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Manifiesto &#8220;En defensa de los derechos fundamentales en internet&#8221;</title>
		<link>http://disonanciamental.wordpress.com/2009/12/02/manifiesto-en-defensa-de-los-derechos-fundamentales-en-internet/</link>
		<comments>http://disonanciamental.wordpress.com/2009/12/02/manifiesto-en-defensa-de-los-derechos-fundamentales-en-internet/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 21:29:43 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[censura]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[manifiesto]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=43</guid>
		<description><![CDATA[Manifiesto “En defensa de los derechos fundamentales en internet” Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=43&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Manifiesto “En defensa de los derechos fundamentales en internet”</strong></p>
<p>Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que&#8230;</p>
<p>1.- <strong>Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos</strong>, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.</p>
<p>2.- <strong>La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial</strong>. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial – un organismo dependiente del ministerio de Cultura -, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.</p>
<p>3.- <strong>La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español</strong>, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.</p>
<p>4.- <strong>La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural.</strong> Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.</p>
<p>5.- <strong>Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones.</strong> Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.</p>
<p>6.- <strong>Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas</strong>, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.</p>
<p>7.- <strong>Internet debe funcionar de forma libre y sin interferencias políticas</strong> auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.</p>
<p>8.- <strong>Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España</strong>, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.</p>
<p>9.- <strong>Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.</strong></p>
<p>10.-<strong> En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas.</strong> No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.</p>
<p>Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=43&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/12/02/manifiesto-en-defensa-de-los-derechos-fundamentales-en-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Millenium II. Per a oblidar.</title>
		<link>http://disonanciamental.wordpress.com/2009/11/08/millenium-ii-per-a-oblidar/</link>
		<comments>http://disonanciamental.wordpress.com/2009/11/08/millenium-ii-per-a-oblidar/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 23:01:19 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Català]]></category>
		<category><![CDATA[cinema]]></category>
		<category><![CDATA[millenium]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=37</guid>
		<description><![CDATA[Ahir vaig anar a veure Millenium II i vaig eixir molt decebut. Soc un seguidor dels llibres de Larsson, unes bones novel.les negres amb personatges notables i sobre tot que l&#8217;acció i emoció no depenen d&#8217;amuntonar aconteciments sinó de canvis de ritme en la narració i en la descripció. Tot això es perd en la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=37&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ahir vaig anar a veure Millenium II i vaig eixir molt decebut. Soc un seguidor dels llibres de Larsson, unes bones novel.les negres amb personatges notables i sobre tot que l&#8217;acció i emoció no depenen d&#8217;amuntonar aconteciments sinó de canvis de ritme en la narració i en la descripció.<br />
<span id="more-37"></span><br />
Tot això es perd en la pel.lícula, es un telefilm de desprès de dinar en antena 3, una seqüència de imatges agarrades del llibre al tun tun i sense cap sentit. Realment es roïna amb ganes. </p>
<p>No es salva res de res, el guio patètic, la direcció inexistent, els actors plans. Nomes es salven Lisbeth i Paolo Roberto&#8230; els demès molt malament, no entenc perquè amb obviat personatges tan importants com els policies. Els llibres son un fresc de la societat sueca molt present en els secundaris&#8230; tots eliminats del film.</p>
<p>I això que jo anava amb molt bona predisposició i no em vaig adormir de miracle, la primera part en va agradar molt, sent diferent al llibre el guio es defenia i no es perdia el retrate de la societat marca de la casa, els actors ben triats i molt encertats fent justícia a l&#8217;historia que vol contar l&#8217;escriptor&#8230; tot això s&#8217;ha perdut en aquesta segona part, menció a part mereix Blomquist&#8230; realment patètic, però tampoc es la seua falta, simplement el guio es molt roin.</p>
<p>Realment em vaig sentir estafat i això farà que no vege la tercera part perpetra per els mateixos assassins d&#8217;aquesta caguera de mes de dos hores&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=37&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/11/08/millenium-ii-per-a-oblidar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
		<item>
		<title>Git, gitosis, gitweb en Debian Lenny</title>
		<link>http://disonanciamental.wordpress.com/2009/11/07/git-gitosis-gitweb-en-debian-lenny/</link>
		<comments>http://disonanciamental.wordpress.com/2009/11/07/git-gitosis-gitweb-en-debian-lenny/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 14:49:46 +0000</pubDate>
		<dc:creator>elsenyordelcaos</dc:creator>
				<category><![CDATA[Castellà]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[gitweb]]></category>
		<category><![CDATA[lenny]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://disonanciamental.wordpress.com/?p=21</guid>
		<description><![CDATA[Voy a intentar explicar la configuración de un pequeño server publico git, utilizando gitosis, apache y gitweb para ello. Yo lo tengo implementado en un pequeño servidor que uso entre otras cosas como servidor de descargas montado en un portátil Toshiba satellite pro m30 estropeado. Primero vamos a dejar claro que es git según la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=21&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Voy a intentar explicar la configuración de un pequeño server publico git, utilizando gitosis, apache y gitweb para ello. Yo lo tengo implementado en un pequeño servidor que uso entre otras cosas como servidor de descargas montado en un portátil Toshiba satellite pro m30 estropeado.</p>
<p>Primero vamos a dejar claro que es git según la wikipedia:</p>
<blockquote><p>Git es un software de sistema de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando estas tienen un gran numero archivos de código fuente. Al principio, Git se pensó como un motor de bajo nivel sobre el cual otros pudieran escribir el interfaz de usuario o front end como Cogito (software) o StGIT. 1 Sin embargo, Git se ha convertido desde entonces en un sistema de control de versiones con funcionalidad plena. 2 Hay algunos proyectos de mucha relevancia que ya usan Git, en particular, el grupo de programación del núcleo del sistema operativo GNU/Linux.<br />
El mantenimiento del software Git esta actualmente(2009) supervisado por Junio Hamano, quien recibe contribuciones al código de alrededor de 280 programadores</p></blockquote>
<p><span id="more-21"></span><br />
Como se puede ver, es un sistema de control de versiones, yo personalmente lo uso para gestionar mis configuraciones de awesome.</p>
<p>El entorno en el que vamos a instalarlo es un Debian Lenny base, sin entorno gráfico, al que accederemos utilizando el servidor SSH que debemos tener instalado primero.</p>
<p>Empezaremos instalando gitosis (el cual nos instalará git como dependencia).</p>
<p><code><br />
# aptitude install gitosis<br />
</code></p>
<p>Por defecto git utiliza esta ubicación para hospedar nuestros proyectos: <tt> /var/cache/git </tt>.</p>
<p>Después de la instalación de gitosis vamos a crear un usuario llamado git que es que va a usar gitosis:</p>
<p>Antes de crearlo eliminaremos el directorio que git nos ha creado porque sino nos dará error la creación del usuario <code>rmdir /var/cache/git</code></p>
<p>Ahora ya creamos el usuario:</p>
<p><code><br />
# adduser --system --shell /bin/sh --gecos 'git version control' --group --disabled-password --home /var/cache/git git<br />
</code></p>
<p>Una vez hecho esto, en nuestro ordenador local (o en el propio sistema que hospeda git si coinciden) creamos nuestras claves SSH y copiamos la publica en nuestro servidor, por ejemplo en el tmp:</p>
<p><code><br />
scp id-rsa.pub user@ip-servidor:/tmp<br />
</code></p>
<p>Una vez ya en nuestro servidor git inicializamos gitosis con esta clave pública que hemos copiado (hemos de ejecutar esta orden como el usuario git):</p>
<p><code><br />
# su -c 'gitosis-init &lt; /tmp/id-rsa.pub' git<br />
</code></p>
<p>Esto inicializará el repositorio git y realmente ya tenemos funcionando este y asegurado con gitosis. Para configurar gitosis y crear nuevos repositorios en nuestro ordenador local ejecutamos esto (tenemos que tener instalado git en él):</p>
<p><code><br />
git clone git@ip/hostname-server:gitosis-admin.git<br />
</code></p>
<p>Como se puede observar la configuración de gitosis no es más que un repositorio git <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Entramos en él y observamos que tenemos un archivo de configuración llamado <tt>gitosis.conf</tt> y un directorio donde almacenar las claves públicas de los usuarios.</p>
<p>Si vemos el contenido de nuestro gitosis.conf por defecto encontramos esto:</p>
<p><code><br />
[gitosis]<br />
[group gitosis-admin]<br />
writable = gitosis-admin<br />
members = user<br />
</code></p>
<p>Ahora ya podemos crear nuevos repositorios y añadir nuevos usuarios, pare ello tenemos que modificar nuestro gitosis.conf con nuestro editor preferido.</p>
<p>Añadimos algo como esto:</p>
<p><code><br />
[group equipo1]<br />
members = user<br />
writable = prueba<br />
</code></p>
<p>Y realizamos el commit y el push:</p>
<p><code><br />
git commit -a -m 'Repositorio de prueba'<br />
git push<br />
</code></p>
<p>Una vez hemos hecho esto, siempre en nuestro ordenador local, creamos el directorio y entramos en él:</p>
<p><code><br />
mkdir prueba<br />
cd prueba<br />
</code></p>
<p>Inicializamos el repositorio git:</p>
<p><code><br />
git init<br />
</code></p>
<p>Añadimos el origen del repositorio:</p>
<p><code><br />
git remote origin git@ig/hostaname-server:prueba.git<br />
</code></p>
<p>Copiamos o creamos los archivos que deben haber en el repositorio:</p>
<p><code><br />
touch README<br />
</code></p>
<p>Añadimos estos archivos y creamos el commit inicial:</p>
<p><code><br />
git add *<br />
git commit -a -m 'commit inicial'<br />
</code></p>
<p>Y por último hacemos el push inicial:</p>
<p><code><br />
git push git@ip/hostname-server:prueba.git master<br />
</code></p>
<p>Y ya hemos creado el repositorio, para añadir nuevos usuarios solo tenemos que modificar la configuración del git, volvemos al repositorio de gitosis-admin y copiamos la claves publicas del nuevo usuario en el directorio <tt>keychains</tt> y modificamos el archivo de configuración <tt>gitosis.conf</tt> para dejarlo así­:</p>
<p><code><br />
[group equipo1]<br />
members = user user2<br />
writable = prueba<br />
</code></p>
<p>Ahora añadimos los nuevos archivos, creamos el commit y lo sincronizamos:</p>
<p><code><br />
git add *<br />
git commit -a -m 'Añadimos a user2'<br />
git push<br />
</code></p>
<p>Hecho esto ya tenemos nuestro repositorio git privado en funcionamiento&#8230; pero claro todos tenemos nuestra vena exhibicionista y queremos compartir al mundo nuestro trabajo, ahora toca hacer nuestro repositorio git público, para ello usaremos dos métodos, el git-daemon y una pequeña página web con gitweb.</p>
<p>Para compartir nuestros repositorios git con git daemon solo tenemos que ejecutar en nuestro servidor algo como esto:</p>
<p><code><br />
# git daemon --base-path=/var/cache/git --detach --syslog --export-all<br />
</code></p>
<p>Y modificar nuestra configuración de gitosis con algo como esto:</p>
<p><code><br />
[repo prueba]<br />
daemon = yes<br />
owner = user<br />
description = Probando git<br />
</code></p>
<p>Sincronizamos nuestro repositorio y ya esta&#8230; pero claro, hasta que reiniciemos el server, para evitar esto solo tenemos que crear un servicio en el init.d y añadirlo a nuestro runlevel, este es un servicio de ejemplo que saque de la web (no recuerdo la página):</p>
<p><code><br />
#! /bin/sh</code></p>
<p><code>PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br />
NAME=git-daemon<br />
PIDFILE=/var/run/$NAME.pid<br />
DESC="the git daemon"<br />
DAEMON=/usr/bin/git-daemon<br />
DAEMON_OPTS="--base-path=/var/cache/git/repositories/ --verbose --syslog --detach --pid-file=$PIDFILE --user=git --group=nogroup"</p>
<p>test -x $DAEMON || exit 0</p>
<p>[ -r /etc/default/git-daemon ] &amp;&amp; . /etc/default/git-daemon</p>
<p>. /lib/lsb/init-functions</p>
<p>start_git() {<br />
start-stop-daemon --start --quiet --pidfile $PIDFILE \<br />
--startas $DAEMON -- $DAEMON_OPTS<br />
}</p>
<p>stop_git() {<br />
start-stop-daemon --stop --quiet --pidfile $PIDFILE<br />
rm -f $PIDFILE<br />
}</p>
<p>status_git() {<br />
start-stop-daemon --stop --test --quiet --pidfile $PIDFILE &gt;/dev/null 2&gt;&amp;1<br />
}</p>
<p>case "$1" in<br />
start)<br />
log_begin_msg "Starting $DESC"<br />
start_git<br />
log_end_msg 0<br />
;;<br />
stop)<br />
log_begin_msg "Stopping $DESC"<br />
stop_git<br />
log_end_msg 0<br />
;;<br />
status)<br />
log_begin_msg "Testing $DESC: "<br />
if status_git<br />
then<br />
log_success_msg "Running"<br />
exit 0<br />
else<br />
log_failure_msg "Not running"<br />
exit 1<br />
fi<br />
;;<br />
restart|force-reload)<br />
log_begin_msg "Restarting $DESC"<br />
stop_git<br />
sleep 1<br />
start_git<br />
log_end_msg 0<br />
;;<br />
*)<br />
echo "Usage: $0 {start|stop|restart|force-reload|status}" &gt;&amp;2<br />
exit 1<br />
;;<br />
esac</p>
<p></code></p>
<p><code>exit 0<br />
</code></p>
<p>Lo modificamos según la configuración elegida y lo guardamos dentro de init.d, lo hacemos ejecutable y lo añadimos a nuestros runlevels y cada vez que reiniciemos nuestro git escuchara por el puerto 9418 las peticiones para que algo así se pueda hacer:</p>
<p><code><br />
git clone git://ip-hostname-server/prueba.git<br />
</code></p>
<p>Ahora ya pasamos a configurar nuestro servidor web con gitweb.</p>
<p>Primero instalamos este y apache (o el servidor web elegido):</p>
<p><code><br />
# aptitude install apache2 gitweb<br />
</code></p>
<p>Y pasamos a configurar gitweb, para ello copiamos los archivos de este en el directorio <tt>/var/www/git</tt> (si no existe lo creamos):</p>
<p><code><br />
# cp -a /usr/share/gitweb/* /var/www/git<br />
# cp -a /usr/lib/cgi-bin/gitweb.cgi /var/www/git<br />
</code></p>
<p>Y creamos un archivo de configuración para el apache llamado <tt>/etc/apache2/conf.d/git</tt> con el siguiente contenido:</p>
<p><code><br />
&lt;Directory /var/www/git&gt;<br />
Allow from all<br />
AllowOverride all<br />
Order allow,deny<br />
Options ExecCGI<br />
&lt;Files gitweb.cgi&gt;<br />
SetHandler cgi-script<br />
&lt;/Files&gt;<br />
&lt;/Directory&gt;<br />
DirectoryIndex gitweb.cgi<br />
SetEnv	GITWEB_CONFIG	/etc/gitweb.conf<br />
</code></p>
<p>Ahora pasamos a configurar el gitweb usando su archivo de configuración <tt>/etc/gitweb.conf</tt>, lo editamos con nano y lo dejamos algo como esto:</p>
<p><code><br />
# path to git projects (.git)<br />
$projectroot = "/var/cache/git/repositories";</code></p>
<p><code># directory to use for temp files<br />
$git_temp = "/tmp";</p>
<p># target of the home link on top of all pages<br />
#$home_link = $my_uri || "/";</p>
<p>$site_name = "my git repositorie";</p>
<p># html text to include at home page<br />
$home_text = "indextext.html";</p>
<p># file with project list; by default, simply scan the projectroot dir.<br />
#$projects_list = $projectroot;<br />
$projects_list = "/var/cache/git/gitosis/projects.list";</p>
<p>$export_ok = "";<br />
$strict_export = "true";<br />
#$export_ok = "git-daemon-export-ok";</p>
<p># stylesheet to use<br />
$stylesheet = "/git/gitweb.css";</p>
<p>$projects_list_description_width = 50;</p>
<p># logo to use<br />
$logo = "/git/git-logo.png";</p>
<p></code></p>
<p><code># the 'favicon'<br />
$favicon = "/git/git-favicon.png";<br />
</code></p>
<p>El archivo habla por si mismo pero voy a comentar las opciones configuradas para que gitosis funcione.</p>
<p>Para empezar hemos de decirle a gitweb donde están nuestros repositorios, es decir dentro de <tt>/var/cache/git/repositories</tt></p>
<p><code>$projectroot = "/var/cache/git/repositories"</code></p>
<p>Otra cosa importante es de donde tiene que sacar la lista de proyectos (gitosis nos la deja aquí­ <tt>/var/cache/git/gitosis/projects.list</tt>, esto se hace con la siguiente linea:</p>
<p><code>$projects_list = "/var/cache/git/gitosis/projects.list";</code></p>
<p>Para que gitosis controle que proyectos exportar (hacer visibles) y cuales no también debemos añadir estas lineas que nos permiten decírselo a gitosis desde su archivo de configuración:</p>
<p><code><br />
$export_ok = "";<br />
$strict_export = "true";<br />
</code></p>
<p>Y no hay mucho más que decir sobre la configuración de gitweb, pero para que funcione, debemos todavía­ modificar nuestra configuración de gitosis dejando la configuración de nuestro repositorio así­:</p>
<p><code><br />
[repo prueba]<br />
gitweb = yes<br />
daemon = yes<br />
owner = user<br />
description = Probando git<br />
</code></p>
<p>Esto añade al archivo <tt>project.list</tt> nuestro proyecto y permite a gitweb la publicación de este.</p>
<p>Ahora solo hemos de recargar la configuración de apache y ya debería funcionar:</p>
<p><code><br />
# /etc/init.d/apache2 reload<br />
</code></p>
<p>Si no funcinara será por un problema de permisos, así­ que los modificamos en el servidor para nuestro proyecto:</p>
<p><code><br />
# chmod -R 775 /var/cache/git/repositories/prueba.git<br />
</code></p>
<p>Es una manera rápida e eficiente de compartir nuestro trabajo y de acceder a él desde cualquier lugar para modificarlo, por supuesto los puertos implicados deben abrirse en nuestro firewall, nuestro puerto ssh, el 9418 para el git-daemon y el 80 para el servidor web. También podemos darle más seguridad metiendo a apache en una jaula, pero eso es tema para otra entrada.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/disonanciamental.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/disonanciamental.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/disonanciamental.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=disonanciamental.wordpress.com&amp;blog=10068609&amp;post=21&amp;subd=disonanciamental&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://disonanciamental.wordpress.com/2009/11/07/git-gitosis-gitweb-en-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2d6fa7a1e8b0e71fa86f1691b11228a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsenyordelcaos</media:title>
		</media:content>
	</item>
	</channel>
</rss>
