<?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/"
	>

<channel>
	<title>El rincón de Zerial &#187; GNU/Linux</title>
	<atom:link href="http://blog.zerial.org/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Tue, 03 Jan 2012 00:13:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Tip: Destrucción de archivos y datos en GNU/Linux</title>
		<link>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/</link>
		<comments>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/#comments</comments>
		<pubDate>Sun, 01 May 2011 20:03:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[destruccion]]></category>
		<category><![CDATA[eliminacion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[shred]]></category>
		<category><![CDATA[wipe]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2108</guid>
		<description><![CDATA[Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: dd, shred y wipe. La primera, nos ayudará a zero-izar un sector de nuestro disco [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2207" style="margin: 3px;" title="data-loss" src="http://blog.zerial.org/wp-content/uploads/2011/05/data-loss.jpg" alt="" width="107" height="108" />Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: <strong>dd</strong>, <strong>shred</strong> y <strong>wipe</strong>. La primera, nos ayudará a zero-izar un sector de nuestro disco duro, memoria o lo que sea. Las otras dos son herramientas que nos permitiran sobreescribir y eliminar definitivamente un archivo para que sea irrecuperable. <strong>shred</strong> viene por defecto en <em>casi</em> todas las distribuciones unixlike, <strong>wipe</strong> se puede instalar en cualquiera.</p>
<p>Según los <em>manpages</em>,</p>
<blockquote><p><strong>wipe:</strong><br />
Wipe  is  a  secure file wiping utility. There are some low level issues that must be taken into consideration. One of these is that there must be some sort of write barrier between passes. Wipe uses fdatasync(2) (or fsync(2)) as a write barrier, or if fsync(2) isn&#8217;t available, the file is opened with the O_DSYNC or O_SYNC flag. For wipe to be effective, each pass must be completely  written.  To ensure this, the drive must support some form of a write barrier, write cache flush, or write cache disabling. SCSI supports ordered command tags, has a force media access bit for commands, and write cache can be disable on mode page 8. IDE/ATA drives support write cache flushes and write cache disabling. Unfortunetly, not all drives actually disable write cache when asked to.  Those  drives  are broken. Write caching should always be disabled, unless your system is battery backed and always powers down cleanly.</p></blockquote>
<blockquote><p><strong>shred:</strong><br />
Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.</p></blockquote>
<blockquote><p><strong>dd: </strong><br />
Copy a file, converting and formatting according to the operands</p></blockquote>
<p>Vamos a lo practico.</p>
<p><span id="more-2108"></span></p>
<h3>dd</h3>
<p>Nos servirá cuando queramos eliminar información de un sector del disco, partición o disco completo, llenandolo de <em>zeros</em>. Es muy simple, basta con ejecutar:<br />
<code># dd if=/dev/zero of=/dev/sda</code><br />
En este caso, llenaremos de <em>zeros</em> el disco <strong>sda</strong>, eliminando el mbr, tabla de particiones, data, etc. Tambien podemos aplicarlo a una partición especifica<br />
<code># dd if=/dev/zero of=/dev/sdb1</code><br />
O bien a un archivo,<br />
<code># dd if=/dev/zero of=my_file.iso</code><br />
Podemos jugar con los parametros <strong>bs</strong>, <strong>count</strong>, <strong>seek</strong>, etc.</p>
<h3>wipe &#038; shred</h3>
<p>La ejecución de estas dos herramientas es sencilla, basta con ejecutar el comando y luego el nombre del archivo:<br />
<code># shred file.jpg</code><br />
o<br />
<code># wipe file.jpg</code></p>
<p>Ambos comando son bien personalizables, puedes decirle que al terminar lo complete con zeros, que los elimina, que los sobre escriba una cantidad X de veces y luego lo elimine, o que no lo elimine, etc.</p>
<p>Para más detalles recomiendo leer el manpage de cada uno.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ftip-destruccion-de-archivos-y-datos-en-gnulinux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"  data-text="Tip: Destrucción de archivos y datos en GNU/Linux" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Tip] Limitar el uso de ancho de banda con Trickle</title>
		<link>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/</link>
		<comments>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:01:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[limitar ancho de banda]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[trickle]]></category>
		<category><![CDATA[utilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1876</guid>
		<description><![CDATA[trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode. Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong><a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a></strong> is a portable lightweight userspace bandwidth shaper. It can run  in collaborative mode (together with <em>trickled</em>) or in stand alone mode.</p></blockquote>
<p>Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:</p>
<p><code>trickled -d 150 -u 20</code><br />
 Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con <strong>trickle</strong> tendran esa configuración, por ejemplo:</p>
<p><code>trickle axel http://domain.com/download.tbz2</code><br />
Limitará la bajada a 150kb/s.</p>
<p>Podemos pasarle parametros a trickle directamente, por ejemplo <strong>trickle -d 100 -u 100 wget http://domain.com/file.tbz2</strong>, de esta forma se limitara a wget solo descargar a 100kb/s.</p>
<p>Aunque <strong>wget</strong> tiene la opción <strong>&#8211;limit-rate</strong> que nos permite limitar el RATE, y <strong>&#8211;max-speed</strong> que nos permite limitar la máxima velocidad en <strong>axel</strong>, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-limitar-el-uso-de-ancho-de-banda-con-trickle%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"  data-text="[Tip] Limitar el uso de ancho de banda con Trickle" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Ver y modificar los parametros de tu tarjeta de red</title>
		<link>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/</link>
		<comments>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:42:14 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ethtool]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mii-tool]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1818</guid>
		<description><![CDATA[Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas mii-tool y ethtool, aunque la primera herramienta está obsoleta (deprecated), aún sirve para sistemas con instalaciones antiguas. mii-tool &#8211; view, manipulate media-independent interface status ethtool &#8211; Display or change ethernet card settings Para modificar la velocidad de transferencia [...]]]></description>
			<content:encoded><![CDATA[<p>Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas <strong>mii-tool</strong> y <strong>ethtool</strong>, aunque la primera herramienta está obsoleta (<em>deprecated</em>), aún sirve para sistemas con instalaciones antiguas.</p>
<blockquote><p><strong>mii-tool</strong> &#8211; view, manipulate media-independent interface status<br />
<strong>ethtool</strong> &#8211; Display or change ethernet card settings</p></blockquote>
<p>Para modificar la velocidad de transferencia de las tarjetas usamos el siguiente comando:</p>
<p><code>ethtool eth1 speed 1000 duplex full</code></p>
<p>Para dejarla a 1Gbps full duplex. Podemos setear la tarjeta a 10, 100 o 1000mbps según su capacidad, tambien  decirle si es <em>half</em> o <em>full</em> duplex, activar y desactivar la autonegociación, modiicar el tamaño de los Jumbo Frames, etc.</p>
<p>Para conocer la configuración actual de la tarjeta de red sólo debemos ejecutar <strong>ethtool</strong> y especificarle el dispositivo:</p>
<p><img class="aligncenter size-full wp-image-1821" title="ethtool_ss" src="http://blog.zerial.org/wp-content/uploads/2010/08/ethtool_ss.png" alt="" width="400" height="459" /></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"  data-text="Tip: Ver y modificar los parametros de tu tarjeta de red" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Emulación de consolas en GNU/Linux: NeoGeo, MAME, SNES y PSX</title>
		<link>http://blog.zerial.org/linux/emulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx/</link>
		<comments>http://blog.zerial.org/linux/emulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 01:55:11 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Mis cosas]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[emuladores]]></category>
		<category><![CDATA[gngeo]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[mame]]></category>
		<category><![CDATA[neogeo]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[playstation]]></category>
		<category><![CDATA[ps1]]></category>
		<category><![CDATA[psx]]></category>
		<category><![CDATA[qmc2]]></category>
		<category><![CDATA[snes]]></category>
		<category><![CDATA[super nintendo]]></category>
		<category><![CDATA[xgngeo]]></category>
		<category><![CDATA[zsnes]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1387</guid>
		<description><![CDATA[No soy muy amante de los juegos pero debo reconocer que hay algunos que si me gustan, especialmente los de consola como NeoGeo, Súper Nintendo y Play 1. En busca de entretención y de distracción, el otro día me compré un joystick que me costó CLP$1.600 (unos USD$3) Y luego me puse a probar distintos [...]]]></description>
			<content:encoded><![CDATA[<p>No soy muy amante de los juegos pero debo reconocer que hay algunos que si me gustan, especialmente los de consola como <a href="http://es.wikipedia.org/wiki/Neogeo" target="_blank">NeoGeo</a>, <a href="http://es.wikipedia.org/wiki/Snes" target="_blank">Súper Nintendo</a> y <a href="http://es.wikipedia.org/wiki/PSX" target="_blank">Play 1</a>. En busca de entretención y de distracción, el otro día me compré un <em>joystick</em> que me costó CLP$1.600 (unos USD$3)</p>
<p><img class="aligncenter size-full wp-image-1390" title="joystick" src="http://blog.zerial.org/wp-content/uploads/2010/01/joystick1.png" alt="" width="400" height="303" /></p>
<p>Y luego me puse a probar distintos emuladores y juegos de consolas: NeoGeo, MAME, SNES, N64, PSX, etc.</p>
<p>Para emular juegos de <strong>NeoGeo</strong> tenemos el <em>gngeo</em> y el <em>mame-sdl</em>, para <strong>snes</strong> el famoso <em>zsnes</em>, para <strong>n64</strong> <em>mupen64</em> y para <strong>psx</strong> el <em>epsxe</em>.<br />
A continuación, una pequeña muestra de cada emulador corriendo algún juego en especial.</p>
<p><span id="more-1387"></span></p>
<p><strong>Primero </strong>les voy a mostrar gngeo con su frontend XGngeo</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo.png"><img class="aligncenter size-full wp-image-1393" title="xgngeo" src="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo.png" alt="" width="376" height="245" /></a></p>
<p>Para descargarlo pueden encontarlo en su sitio oficial <a href="http://gngeo.berlios.de/" target="_blank">http://gngeo.berlios.de/</a> o bien buscarlo en los repositorios de la distribución que estén usando. Pueden descargar el frontend XGnGeo desde aquí: <a href="http://www.choplair.org/?XGngeo" target="_blank">http://www.choplair.org/?XGngeo</a></p>
<p>Con el emulador de MAME puedes jugar tambien los juegos de neogeo. Para emular mame tienes el emulador por línea de comando &#8220;<strong>mame-sdl</strong>&#8221; y el frontend llamado <strong>qmc2</strong>.</p>
<p><center><a href="http://blog.zerial.org/wp-content/uploads/2010/01/qmc2.png"><img class="alignnone size-medium wp-image-1408" title="qmc2" src="http://blog.zerial.org/wp-content/uploads/2010/01/qmc2-300x197.png" alt="" width="300" height="197" /></a> <a href="http://blog.zerial.org/wp-content/uploads/2010/01/qmc21.png"><img class="alignnone size-medium wp-image-1409" title="qmc2" src="http://blog.zerial.org/wp-content/uploads/2010/01/qmc21-300x197.png" alt="" width="300" height="197" /></a></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo_kof.png"><img class="size-medium wp-image-1395 alignnone" title="xgngeo_kof" src="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo_kof-300x187.png" alt="" width="300" height="187" /></a> <a href="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo_kof2.png"><img class="size-medium wp-image-1396 alignnone" title="xgngeo_kof2" src="http://blog.zerial.org/wp-content/uploads/2010/01/xgngeo_kof2-300x187.png" alt="" width="300" height="187" /></a></center></p>
<p><strong>Para emular</strong> súper nintendo, uso el conocido zsnes (muuuuy antiguo), que está en la mayoría de los repositorios de las distribuciónes GNU/Linux y también lo podemos encontrar en <a href="http://www.zsnes.com/" target="_blank">zsnes.com</a>.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes.png"><img class="aligncenter size-full wp-image-1399" title="zsnes" src="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes.png" alt="" width="512" height="448" /></a></p>
<p>Yo recuerdo haber usado este mismo emulador hace muchos años atrás, era uno de mis preferidos, con zsnes pasé varias horas frente al pc jugando. El emulador permite configurar hasta 5 players y además, permite jugar en línea.</p>
<p><center><a href="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_dkc1.png"><img class="alignnone size-medium wp-image-1400" title="zsnes_dkc1" src="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_dkc1-300x187.png" alt="" width="300" height="187" /></a> <a href="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_dkc2.png"><img class="alignnone size-medium wp-image-1401" title="zsnes_dkc2" src="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_dkc2-300x187.png" alt="" width="300" height="187" /></a></center></p>
<p><center><a href="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_killer1.png"><img class="alignnone size-medium wp-image-1402" title="zsnes_killer1" src="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_killer1-300x187.png" alt="" width="300" height="187" /></a> <a href="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_killer2.png"><img class="alignnone size-medium wp-image-1403" title="zsnes_killer2" src="http://blog.zerial.org/wp-content/uploads/2010/01/zsnes_killer2-300x187.png" alt="" width="300" height="187" /></a></center></p>
<p><strong>Para</strong> PlayStation 1 (PSOne, PSX) uso el <strong>epsxe</strong>. Este emulador es un poco complicado de instalar, necesita un plugin para cada cosa. Por ejemplo, un plugin de video y otro de sonido, aunque generalmente puedes encontrar el emulador con todos sus restos dentro del mismo repositorio. Por ejemplo, en Archlinux lo puedes descargar e instalar <a href="http://aur.archlinux.org/packages.php?O=0&amp;K=epsxe&amp;do_Search=Ir" target="_blank">directamente de AUR</a>. Luego debes <em>intrusear</em> un poco la configuración hasta llegar a la más óptima para tu hardware. En mi caso, me uso este emulador simplemente para jugar <a href="http://en.wikipedia.org/wiki/Silent_Hill_1" target="_blank">Silent Hill 1</a>.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe.png"><img class="aligncenter size-full wp-image-1405" title="epsxe" src="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe.png" alt="" width="288" height="236" /></a></p>
<p><center><a href="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe_silenthill1.png"><img class="alignnone size-medium wp-image-1406" title="epsxe_silenthill1" src="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe_silenthill1-300x187.png" alt="" width="300" height="187" /></a> <a href="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe_silenthill2.png"><img class="alignnone size-medium wp-image-1407" title="epsxe_silenthill2" src="http://blog.zerial.org/wp-content/uploads/2010/01/epsxe_silenthill2-300x187.png" alt="" width="300" height="187" /></a></center></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Femulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/emulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/emulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx/"  data-text="Emulación de consolas en GNU/Linux: NeoGeo, MAME, SNES y PSX" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/emulacion-de-consolas-en-gnulinux-neogeo-mame-snes-y-psx/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bottom Stack en Dynamic Window Manager (DWM)</title>
		<link>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/</link>
		<comments>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:10:49 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[dwm]]></category>
		<category><![CDATA[dynamic window manager]]></category>
		<category><![CDATA[gnu/linux]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1358</guid>
		<description><![CDATA[Hace meses que me decidí por usar DWM y de a poco voy teniendo distintas necesidades, por lo que he ido configurando poco a poco el gestor. Ultimamente, me dieron ganas de querer ordenar las ventanas de forma horizontal y revisando el sitio de DWM he encontrado el llamado &#8220;Bottom Stack&#8221;, que me ayudará a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1359" style="margin: 4px;" title="dwm" src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm.png" alt="" width="96" height="40" />Hace meses que me decidí por usar DWM y de a poco voy teniendo distintas necesidades, por lo que he ido configurando poco a poco el gestor. Ultimamente, me dieron ganas de querer ordenar las ventanas de forma horizontal y revisando el sitio de DWM he encontrado el llamado &#8220;Bottom Stack&#8221;, que me ayudará a cumplir mi propósito.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_ad.png"><img class="aligncenter size-full wp-image-1361" title="dwm_ad" src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_ad.png" alt="" width="519" height="158" /></a></p>
<p>Para lograrlo, simplemente tenemos que agregar un par de líneas al <em>config.h</em> y volver a compilarlo.</p>
<p><span id="more-1358"></span></p>
<p>Debemos descargar los ficheros <a href="http://dwm.suckless.org/patches/bstack.c">bstack.c</a> y <a href="http://dwm.suckless.org/patches/bstackhoriz.c">bstackhoriz.c</a> y agregar las siguientes líneas a nuestro fichero de configuración <em>config.h</em>, despues de la definición de la variable <strong>mfact</strong> y antes de la definición de <strong>layouts</strong>:</p>
<pre name="code" class="c">
#include "bstack.c"
#include "bstackhoriz.c"
</pre>
<p>Y dentro de la definición de <strong>layouts</strong> debemos agregar:</p>
<pre name="code" class="c">
{ "TTT",      bstack },
{ "===",      bstackhoriz },
</pre>
<p>El fichero <em>config.h</em> se debería ver mas o menos así:</p>
<pre name="code" class="c">
[...]

/* layout(s) */
static const float mfact      = 0.55; /* factor of master area size [0.05..0.95] */
static const Bool resizehints = True; /* False means respect size hints in tiled resizals */

#include "bstack.c"
#include "bstackhoriz.c"

static const Layout layouts[] = {
        /* symbol     arrange function */
        { "TTT",      bstack },
        { "[]=",      tile },    /* first entry is default */
        { "><>",      NULL },    /* no layout function means floating behavior */
        { "[M]",      monocle },
        { "===",      bstackhoriz },
};

/* key definitions */
#define MODKEY Mod1Mask
#define TAGKEYS(KEY,TAG) \

[...]
</pre>
<p><strong>Imágenes:</strong></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTILE.png"><img src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTILE-300x187.png" alt="" title="dwm_showTILE" width="300" height="187" class="aligncenter size-medium wp-image-1366" /></a></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTTT.png"><img src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTTT-300x187.png" alt="" title="dwm_showTTT" width="300" height="187" class="aligncenter size-medium wp-image-1367" /></a></p>
<p>Pueden encontrar el artículo original en el siguiente link:<br />
<a target="_blank" href="http://dwm.suckless.org/patches/bottom_stack">http://dwm.suckless.org/patches/bottom_stack</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fbottom-stack-en-dynamic-window-manager-dwm%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/"  data-text="Bottom Stack en Dynamic Window Manager (DWM)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>El que usa software privativo no está respetando su libertad</title>
		<link>http://blog.zerial.org/software-libre/el-que-usa-software-privativo-no-esta-respetando-su-libertad/</link>
		<comments>http://blog.zerial.org/software-libre/el-que-usa-software-privativo-no-esta-respetando-su-libertad/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 22:39:12 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[libertades]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[richard stallman]]></category>
		<category><![CDATA[rms]]></category>
		<category><![CDATA[sl]]></category>
		<category><![CDATA[stallman]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1219</guid>
		<description><![CDATA[Siempre ha sido un tema de discusión el tema de la propiedad intelectual, derechos de autor, etc, pero esta véz quiero referirme a algo más allá de eso: el Software Libre. No hay que confundir el concepto de Software Libre con Open Source, el primero corresponde a toda una filosofía relacionada a las libertades de [...]]]></description>
			<content:encoded><![CDATA[<p>Siempre ha sido un tema de discusión el tema de la propiedad intelectual, derechos de autor, etc, pero esta véz quiero referirme a algo más allá de eso: el <strong>Software Libre</strong>.<br />
<img class="alignleft size-full wp-image-1221" style="margin: 4px;" title="gnu" src="http://blog.zerial.org/wp-content/uploads/2009/12/gnu.jpg" alt="gnu" width="150" height="139" />No hay que confundir el concepto de <em>Software Libre</em> con <em>Open Source</em>, el primero corresponde a toda una filosofía relacionada a las libertades de las personas y lo segundo, simplemente, a código abierto. Una aplicación puede ser <em>open source</em> sin ser libre. La gran diferencia entre uno y el otro es el tema de las licencias. Para que el software sea libre es necesario que se permita compartir, modificar y adaptar el código.</p>
<p>Usar software libre es bueno porque permite, entre otras cosas, manejar y controlar algo que es tuyo: tu computador y es por éste motivo que nace el dilema entre el hardware y los famosos drivers propietarios/privativos v/s los libres. Para muchas personas el hecho de no poder aprovechar los recursos de su hardware gracias a los drivers libres significa un problema y entonces es cuando deciden usar el driver propietario o privado. El otro día, pensaba que la única forma de promover y mejorar el desarrollo de drivers (o firmwares) libres desde las propios fabricantes es usar los drivres libres ya existentes. Estamos en un proceso de educación y difusión del software libres y de nuestras libertades, si queremos lograr que éste proceso avance debemos sacrificarnos un poco. Imaginemos un mundo ideal, donde todas las personas usan drivers libres y los fabricantes no encuentran qué hacer para que los usuarios compren sus productos, como no se puede exprimir al máximo los recursos del hardware, el usuario no va a <em>necesitar</em> continuar comprando y por ende, los fabricantes se verían obligados a desarrollar ellos mismos un driver que sea libre y que cumpla con todo lo necesario para poder funcionar correctamente. Obviamente, es una utopía.</p>
<p><span id="more-1219"></span></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2009/12/IMG_0331.jpg"><img class="alignleft size-medium wp-image-1246" style="margin: 4px;" title="IMG_0331" src="http://blog.zerial.org/wp-content/uploads/2009/12/IMG_0331-300x200.jpg" alt="" width="300" height="218" /></a> Hace un par de días tuvimos a Richard M. Stallman de visita en <a href="http://kernelhouse.org">Kernelhouse</a> y en el <a href="http://hacklab.cl" target="_blank">Hacklab</a> y me quedó dando vueltas una frase que nos dijo: &#8220;<strong>Las personas que usan software privado no están respetando su libertad</strong>&#8220;.</p>
<p>Si bien las personas son libres de usar software privado o libre, creo que la diferencia está simplemente en cuando te <strong>obligan</strong> a usar uno u el otro. Cuando una persona <strong>decide</strong> usar software libre, entonces está haciendo uso de su libertad de hacerlo. El problema, para mi, es cuando no tienes opción o bien, te obligan. Generalmente estás obligado a usar software privado, compras un iPod y viene con software privado y hasta es ilegal &#8220;<em>desbloquearlo</em>&#8221; siendo que es <strong>tuyo</strong>.  Cuando compras un portatil o un computador de escritorio, éste viene con M$ Windows, de una u otra forma te están obligando a usarlo. En el precio se incluye el precio de la licencia y para evitar pagarla, hay que hacer miles de trámites que aveces no valen la pena. Pasa hasta en el gobierno, existen muchos planes para disminuir la brecha digital, <em>tecnologizar</em> a personas de escasos recursos, pero detrás de éstos métodos, siempre está Microsoft por detrás. Microsoft siempre ofrece ofertas que, debido a la ignorancia de quienes toman las decisiones, es imposible rechazar. Por ejemplo, para el colegio de escasos recursos donde existen 40 mil nños que jamás han tocado un cumputador, ésta monopólica empresa, decide &#8220;donar&#8221; 1000 computadores con licencias para usar Windows &#8220;especialmente&#8221; adaptada para esta ocasión, por ejemplo la típica &#8220;<a href="http://www.microsoft.com/latam/windowsxp/starter/informacion.aspx" target="_blank">Starter Edition</a>&#8220;. Con este tipo de metodologías, lo único que estamos logrando es crear una <strong>dependencia a un producto de una empresa privada</strong>. Para exáctamente lo mismo cuando el gobierno decide &#8220;auspiciar&#8221; y &#8220;becar&#8221; a sientos de personas de tercera edad o personas analfabetas tecnologicamente a cursar un taller o curso de &#8220;Microsoft Office&#8221;, hacen que éstas personas dependan de un producto de Microsoft, por ésto mismo, lo que se debería promover son cursos de &#8220;ofimática&#8221; que servirían para que un usuario sepa usar <strong>cualquier</strong> suite de herramientas de oficina, ya sea de MS Office, Open Office, Koffice, etc. Para que la educación de resultado, hay que enseñar a la persona a elegir, hay que demostrarle que tiene libertades que él mismo puede aprovechar. Windows no llegó a ser tan popular porque era un buen producto o porque era la única opción existente en el mercado, simplemente porque la ignorancia de las personas, gracias a la manipulación de las grandes empresas y el gobierno, hizo que así fuera.</p>
<p><img title="nano_zerial_rms_leo" src="http://blog.zerial.org/wp-content/uploads/2009/12/nano_zerial_rms_leo1.jpg" alt="" width="670" height="324" /></p>
<p>Un proceso de educación tiene un bien final cuando el usuario logra, por si mismo, <strong>decidir</strong> qué sistema operativo usar (MS Windows, GNU/Linux, Mac, etc) y por ejemplo, en el caso que use GNU/Linux, que su conocimiento le permita decidir que distribución usar. El motivo de mi odio a Windows es similar al por qué odio a Ubuntu, sus políticas de marketing y sus filosofías no me gustan, Ubuntu de una u otra forma está haciendo lo mismo que Microsoft, no se hizo popular por su funcionalidad sino que por el dinero. Actualmente, me atrevería a decir que el 90% de los usuarios de Ubuntu  no tienen idea que existen más distribuciones, frente a (según yo) un 70% de usuarios Windows que si sabe que existen varias distribuciones de GNU/Linux.<br />
En conclusión, estoy completamente de acuerdo en que cuando una persona usa software privado, no está respetando su libertad, ya que se está sometiendo, voluntaria o involuntariamente, a usar el producto (software o hardware) como el fabricante lo dice, aún pagando por él.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fsoftware-libre%2Fel-que-usa-software-privativo-no-esta-respetando-su-libertad%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/software-libre/el-que-usa-software-privativo-no-esta-respetando-su-libertad/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/software-libre/el-que-usa-software-privativo-no-esta-respetando-su-libertad/"  data-text="El que usa software privativo no está respetando su libertad" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/software-libre/el-que-usa-software-privativo-no-esta-respetando-su-libertad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Useless: Cosas ociosas e inútiles que puedes hacer en GNU/Linux</title>
		<link>http://blog.zerial.org/linux/useless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux/</link>
		<comments>http://blog.zerial.org/linux/useless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 20:38:34 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Useless]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[inutil]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[ocio]]></category>
		<category><![CDATA[pasatiempos]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=854</guid>
		<description><![CDATA[Aveces nos encontramos en el trabajo o en la universidad frente a la pantalla sin nada que hacer y empezamos a inventar cosas para hacer, probamos comandos, nos mandamos alguna cagadita, en fín, intentamos ocupar nuestro tiempo de ocio en algo. A continuación les mostraré unos cuantos tips para cuando esten aburridos. Les enseñaré a [...]]]></description>
			<content:encoded><![CDATA[<p>Aveces nos encontramos <del datetime="2009-09-12T19:57:32+00:00">en el trabajo o en la universidad</del> frente a la pantalla sin nada que hacer y empezamos a inventar cosas para hacer, probamos comandos, nos mandamos alguna <em>cagadita</em>, en fín, intentamos ocupar nuestro tiempo de ocio en algo. A continuación les mostraré unos cuantos <em>tips</em> para cuando esten aburridos.<br />
Les enseñaré a escuchar como trabaja su disco duro, jugar con el <em>speaker</em>, ver los movimientos -en binario- del mouse y algo más.</p>
<p><strong>La guía del ocio, índice:</strong></p>
<ol>
<li>Ver los movimientos del mouse</li>
<li>Escuchar como trabaja nuestro disco duro</li>
<li>Jugar con el speaker</li>
</ol>
<p><span id="more-854"></span></p>
<p><strong>Contenido</strong></p>
<ul>
<li><strong>Ver los movimientos del mouse</strong></li>
<p>Podemos visualizar los movimientos que hacemos con el mouse, dependiendo del dispositivo que usemos. Por ejemplo yo, con un mouse usb o con el touchpad de mi portatil usaré el dispositivo <em>/dev/input/mice</em>. Es simple, sólo debemos ejecutar el comando (como root):<br />
<code># cat /dev/input/mice</code><br />
Y comenzar a mover el mouse.<br />
Resultado:</p>
<p style="text-align: center;"><a href="http://blog.zerial.org/wp-content/uploads/2009/09/cat_dev_mouse.png"><img class="aligncenter size-medium wp-image-866" title="cat_dev_mouse" src="http://blog.zerial.org/wp-content/uploads/2009/09/cat_dev_mouse-300x89.png" alt="cat_dev_mouse" width="300" height="89" /></a></p>
<li><strong>Escuchar como trabaja nuestro disco duro</strong></li>
<p>Esto va depende de cómo tengamos distribuido nuestros discos, en mi caso, corresponde al dispositivo <em>/dev/sda</em> y para &#8220;escuchar&#8221; cómo suena, sólo ejecuto este comando (root):</p>
<p><code># cat /dev/sda &gt;&gt; /dev/audio</code><br />
Y sentiremos como si estuviesemos escuchando ruido extraterrestre&#8230;</p>
<li><strong>Jugar con el speaker</strong></li>
<p>Esto es un poco más divertido, para esto necesitaremos instalar el paquete &#8220;beep&#8221; y cargar el módulo <strong>pcspkr</strong> en el caso que no esté cargado. Para hacer sonar el speaker basta con ejecutar el comando:<br />
<code># beep</code></p>
<p>Podemos jugar con las frecuencias y duración de cada beep (ver <em>man beep</em>) y lograr cosas como estas:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re3">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.33</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">415.3</span>; </div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">sleep</span> <span class="nu0">0.165</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span>; </div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span> -l <span class="nu0">170</span>; </div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">466.2</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li2">
<div class="de2">beep -f <span class="nu0">349</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">311.1</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span>; </div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">sleep</span> <span class="nu0">0.33</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">523.2</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.165</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span>; </div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span> -l <span class="nu0">170</span>; </div>
</li>
<li class="li2">
<div class="de2">beep -f <span class="nu0">550</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">523.2</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">415.3</span>; </div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">523.2</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li2">
<div class="de2">beep -f <span class="nu0">698.4</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.03</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">349</span> -l <span class="nu0">170</span>; </div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">311.1</span> ; </div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">311.1</span> -l <span class="nu0">170</span>; </div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">sleep</span> <span class="nu0">0.05</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">261.6</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.03</span></div>
</li>
<li class="li1">
<div class="de1">beep -f <span class="nu0">392</span>; </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sleep</span> <span class="nu0">0.03</span></div>
</li>
<li class="li2">
<div class="de2">beep -f <span class="nu0">349</span> -l <span class="nu0">750</span>;</div>
</li>
</ol>
</div>
<p>Por ejemplo, este &#8220;beep&#8221; lo hicimos junto a <a href="http://p0ns.org/" target="_blank">Pons</a> y a otros compañeros en la Universidad, cuando estabamos muy aburridos y no teniamos cosas que hacer.
</ul>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fuseless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/useless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/useless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux/"  data-text="Useless: Cosas ociosas e inútiles que puedes hacer en GNU/Linux" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/useless-cosas-ociosas-e-inutiles-que-puedes-hacer-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dymamic Window Manager (DWM): Mi nuevo gestor de ventanas</title>
		<link>http://blog.zerial.org/linux/dymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas/</link>
		<comments>http://blog.zerial.org/linux/dymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 15:04:15 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Mis cosas]]></category>
		<category><![CDATA[dwm]]></category>
		<category><![CDATA[dynamic window manager]]></category>
		<category><![CDATA[window maganer]]></category>
		<category><![CDATA[wm]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=819</guid>
		<description><![CDATA[El otro día leí en irc que hablaban sobre ScrotWM y lo probé. En un principio me gustó mucho, demasiado sencillo y ligero, luego de usarlo un par de minutos ya me estába dando problemas con algunas ventanas flotantes y para no quedarme con las ganas entonces lo cambié por Dynamic Window Manager (DWM). La [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día leí en irc que hablaban sobre <a href="http://scrotwm.org">ScrotWM</a> y lo probé. En un principio me gustó mucho, demasiado sencillo y ligero, luego de usarlo un par de minutos ya me estába dando problemas con algunas ventanas <em>flotantes</em> y para no quedarme con las ganas entonces lo cambié por <a href="http://dwm.suckless.org/">Dynamic Window Manager (DWM)</a>.</p>
<p><img src="http://blog.zerial.org/wp-content/uploads/2009/08/dwm.gif" alt="dwm" title="dwm" width="192" height="80" class="aligncenter size-full wp-image-818" /></p>
<p>La gracia de este gestor de ventanas es que es <strong>demasiado</strong> simple, tiene no mas de 2 mil líneas de código, no usa archivos de configuración y claro, para configurarlo hay que editar directamente el código fuente y volver a compilarlo y re-ejecutarlo para que tome los cambios. </p>
<p><span id="more-819"></span></p>
<p><code>[zerial@daila dwm-5.6.1]$ wc -l dwm.c<br />
1959 dwm.c<br />
[zerial@daila dwm-5.6.1]</code></p>
<p>Esto último, a muchos les puede provocar un trauma pero no es tan dificil como parece, aunque yo vengo de un entorno fluxbox por lo que cambiarme a dwm no me costó tanto.</p>
<p>Algunos screenshots:</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2009/08/dwm.png"><img src="http://blog.zerial.org/wp-content/uploads/2009/08/dwm-300x187.png" alt="dwm" title="dwm" width="300" height="187" class="aligncenter size-medium wp-image-820" /></a><br />
<a href="http://blog.zerial.org/wp-content/uploads/2009/08/dwm2.png"><img src="http://blog.zerial.org/wp-content/uploads/2009/08/dwm2-300x187.png" alt="dwm2" title="dwm2" width="300" height="187" class="aligncenter size-medium wp-image-821" /></a></p>
<p>Todavía no lo modifico mucho, sólo configuré los <em>workspaces</em>, algunas aplicaciones y los atajos de teclado, pero acá les dejo mi configuración (fichero config.h).</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/* See LICENSE file for copyright and license details. */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* appearance */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> font<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= <span class="st0">&quot;-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> normbordercolor<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="st0">&quot;#cccccc&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> normbgcolor<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp; &nbsp; = <span class="st0">&quot;#cccccc&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> normfgcolor<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp; &nbsp; = <span class="st0">&quot;#000000&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> selbordercolor<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp;= <span class="st0">&quot;green&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> selbgcolor<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp;= <span class="st0">&quot;black&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> selfgcolor<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp; &nbsp; &nbsp;= <span class="st0">&quot;green&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">unsigned</span> <span class="kw4">int</span> borderpx &nbsp;= <span class="nu0">1</span>; &nbsp; &nbsp; &nbsp; &nbsp;<span class="coMULTI">/* border pixel of windows */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">unsigned</span> <span class="kw4">int</span> snap &nbsp; &nbsp; &nbsp;= <span class="nu0">32</span>; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* snap pixel */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> Bool showbar &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = <span class="kw2">True</span>; &nbsp; &nbsp; <span class="coMULTI">/* False means no bar */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> Bool topbar &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= <span class="kw2">True</span>; &nbsp; &nbsp; <span class="coMULTI">/* False means bottom bar */</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* tagging */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *tags<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;www&quot;</span>, <span class="st0">&quot;mail&quot;</span>, <span class="st0">&quot;media&quot;</span>, <span class="st0">&quot;terms1&quot;</span>, <span class="st0">&quot;terms2&quot;</span>, <span class="st0">&quot;terms3&quot;</span>, <span class="st0">&quot;terms4&quot;</span>, <span class="st0">&quot;terms5&quot;</span>, <span class="st0">&quot;apps&quot;</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> Rule rules<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* class &nbsp; &nbsp; &nbsp;instance &nbsp; &nbsp;title &nbsp; &nbsp; &nbsp; tags mask &nbsp; &nbsp; isfloating &nbsp; monitor */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;Gimp&quot;</span>, &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="nu0">1</span> &lt; &lt; <span class="nu0">8</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">True</span>, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">-1</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;Pidgin&quot;</span>, &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="nu0">1</span> &lt;&lt; <span class="nu0">8</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">True</span>, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">-1</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;psi&quot;</span>, &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="nu0">1</span> &lt;&lt; <span class="nu0">8</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">True</span>, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">-1</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;X-Chat&quot;</span>, &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="nu0">1</span> &lt;&lt; <span class="nu0">8</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">True</span>, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">-1</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;Zenity&quot;</span>, &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="kw2">NULL</span>, &nbsp; &nbsp; &nbsp; <span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw2">True</span>, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">-1</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* layout(s) */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">float</span> mfact &nbsp; &nbsp; &nbsp;= <span class="nu0">0.55</span>; <span class="coMULTI">/* factor of master area size [0.05..0.95] */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">static</span> <span class="kw4">const</span> Bool resizehints = <span class="kw2">True</span>; <span class="coMULTI">/* False means respect size hints in tiled resizals */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> Layout layouts<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* symbol &nbsp; &nbsp; arrange function */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;[]=&quot;</span>, &nbsp; &nbsp; &nbsp;tile <span class="br0">&#125;</span>, &nbsp; &nbsp;<span class="coMULTI">/* first entry is default */</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;&gt;&lt;&gt;&quot;</span>, &nbsp; &nbsp; &nbsp;<span class="kw2">NULL</span> <span class="br0">&#125;</span>, &nbsp; &nbsp;<span class="coMULTI">/* no layout function means floating behavior */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> <span class="st0">&quot;[M]&quot;</span>, &nbsp; &nbsp; &nbsp;monocle <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* key definitions */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co2">#define MODKEY Mod1Mask</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define TAGKEYS(KEY,TAG) \</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; KEY, &nbsp; &nbsp; &nbsp;view, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">ui</span> = <span class="nu0">1</span> &lt; &lt; TAG<span class="br0">&#125;</span> <span class="br0">&#125;</span>, \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ControlMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; KEY, &nbsp; &nbsp; &nbsp;toggleview, &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">ui</span> = <span class="nu0">1</span> &lt;&lt; TAG<span class="br0">&#125;</span> <span class="br0">&#125;</span>, \</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; KEY, &nbsp; &nbsp; &nbsp;tag, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">ui</span> = <span class="nu0">1</span> &lt;&lt; TAG<span class="br0">&#125;</span> <span class="br0">&#125;</span>, \</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ControlMask|ShiftMask, KEY, &nbsp; &nbsp; &nbsp;toggletag, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">ui</span> = <span class="nu0">1</span> &lt;&lt; TAG<span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* helper for spawning shell commands in the pre dwm-5.0 fashion */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">#define SHCMD(cmd) { .v = (const char*[]){ &quot;/bin/sh&quot;, &quot;-c&quot;, cmd, NULL } }</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="coMULTI">/* commands */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *dmenucmd<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;dmenu_run&quot;</span>, <span class="st0">&quot;-fn&quot;</span>, font, <span class="st0">&quot;-nb&quot;</span>, normbgcolor, <span class="st0">&quot;-nf&quot;</span>, normfgcolor, <span class="st0">&quot;-sb&quot;</span>, selbgcolor, <span class="st0">&quot;-sf&quot;</span>, selfgcolor, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *termcmd<span class="br0">&#91;</span><span class="br0">&#93;</span> &nbsp;= <span class="br0">&#123;</span> <span class="st0">&quot;urxvt&quot;</span>, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *webcmd<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;firefox&quot;</span>, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *mailcmd<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;thunderbird&quot;</span>, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *gimpcmd<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;gimp&quot;</span>, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> <span class="kw4">const</span> <span class="kw4">char</span> *twitcmd<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> <span class="st0">&quot;twitsh&quot;</span>, <span class="kw2">NULL</span> <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw4">static</span> Key keys<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* modifier &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key &nbsp; &nbsp; &nbsp; &nbsp;function &nbsp; &nbsp; &nbsp; &nbsp;argument */</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask,&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_f,&nbsp; &nbsp;spawn,&nbsp; <span class="br0">&#123;</span>.<span class="me1">v</span> = webcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask,&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_m,&nbsp; &nbsp;spawn,&nbsp; <span class="br0">&#123;</span>.<span class="me1">v</span> = mailcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask,&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_g,&nbsp; &nbsp;spawn,&nbsp; <span class="br0">&#123;</span>.<span class="me1">v</span> = gimpcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask,&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_s,&nbsp; &nbsp;spawn,&nbsp; <span class="br0">&#123;</span>.<span class="me1">v</span> = twitcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_p, &nbsp; &nbsp; &nbsp;spawn, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = dmenucmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_x, spawn, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = termcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_b, &nbsp; &nbsp; &nbsp;togglebar, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_j, &nbsp; &nbsp; &nbsp;focusstack, &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">+1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_k, &nbsp; &nbsp; &nbsp;focusstack, &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">-1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_h, &nbsp; &nbsp; &nbsp;setmfact, &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">f</span> = <span class="nu0">-0.05</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_l, &nbsp; &nbsp; &nbsp;setmfact, &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">f</span> = <span class="nu0">+0.05</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_Return, zoom, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_Tab, &nbsp; &nbsp;view, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_c, &nbsp; &nbsp; &nbsp;killclient, &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_t, &nbsp; &nbsp; &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = &amp;layouts<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_f, &nbsp; &nbsp; &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = &amp;layouts<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_m, &nbsp; &nbsp; &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = &amp;layouts<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_space, &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_space, &nbsp;togglefloating, <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_0, &nbsp; &nbsp; &nbsp;view, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">ui</span> = ~<span class="nu0">0</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_0, &nbsp; &nbsp; &nbsp;tag, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">ui</span> = ~<span class="nu0">0</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_comma, &nbsp;focusmon, &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">-1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_period, focusmon, &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">+1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_comma, &nbsp;tagmon, &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">-1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_period, tagmon, &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>.<span class="me1">i</span> = <span class="nu0">+1</span> <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F1, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F2, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F3, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F4, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">3</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F5, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">4</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F6, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">5</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F7, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">6</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F8, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">7</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; TAGKEYS<span class="br0">&#40;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XK_F9, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">8</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> MODKEY|ShiftMask, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; XK_q, &nbsp; &nbsp; &nbsp;quit, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* button definitions */</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* click can be a tag number (starting at 0),</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;* ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw4">static</span> Button buttons<span class="br0">&#91;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* click &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;event mask &nbsp; &nbsp; &nbsp;button &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;function &nbsp; &nbsp; &nbsp; &nbsp;argument */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkLtSymbol, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button1, &nbsp; &nbsp; &nbsp; &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkLtSymbol, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button3, &nbsp; &nbsp; &nbsp; &nbsp;setlayout, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = &amp;layouts<span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkWinTitle, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button2, &nbsp; &nbsp; &nbsp; &nbsp;zoom, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkStatusText, &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button2, &nbsp; &nbsp; &nbsp; &nbsp;spawn, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span>.<span class="me1">v</span> = termcmd <span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkClientWin, &nbsp; &nbsp; &nbsp; &nbsp; MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; Button1, &nbsp; &nbsp; &nbsp; &nbsp;movemouse, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkClientWin, &nbsp; &nbsp; &nbsp; &nbsp; MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; Button2, &nbsp; &nbsp; &nbsp; &nbsp;togglefloating, <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkClientWin, &nbsp; &nbsp; &nbsp; &nbsp; MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; Button3, &nbsp; &nbsp; &nbsp; &nbsp;resizemouse, &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkTagBar, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button1, &nbsp; &nbsp; &nbsp; &nbsp;view, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkTagBar, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span>, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Button3, &nbsp; &nbsp; &nbsp; &nbsp;toggleview, &nbsp; &nbsp; <span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkTagBar, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; Button1, &nbsp; &nbsp; &nbsp; &nbsp;tag, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span> ClkTagBar, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MODKEY, &nbsp; &nbsp; &nbsp; &nbsp; Button3, &nbsp; &nbsp; &nbsp; &nbsp;toggletag, &nbsp; &nbsp; &nbsp;<span class="br0">&#123;</span><span class="nu0">0</span><span class="br0">&#125;</span> <span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
</ol>
</div>
</pre>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fdymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/dymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/dymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas/"  data-text="Dymamic Window Manager (DWM): Mi nuevo gestor de ventanas" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/dymamic-window-manager-dwm-mi-nuevo-gestor-de-ventanas/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Cómo redimenzionar el tamaño de un disco virtual en Xen</title>
		<link>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/</link>
		<comments>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 02:18:11 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=669</guid>
		<description><![CDATA[El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré. En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando dd y luego concatenamos con el [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-676" title="hdd-1" src="http://blog.zerial.org/wp-content/uploads/2009/07/hdd-1.jpg" alt="hdd-1" width="380" height="253" /></p>
<p>El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré.<br />
En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando <strong>dd</strong> y luego concatenamos con el que ya tenemos, creamos el sistema de ficheros y listo. Pero el disminuirlo me pareció más complejo, pero no fue así.</p>
<p><span id="more-669"></span></p>
<p><strong>Paso a paso</strong></p>
<ul>
<li><strong>Aumentar el tamaño del disco</strong></li>
<p>Vamos a usar tres herramientas: <strong>dd</strong>, <strong>cat</strong> y <strong>mkfs</strong>.<br />
Primero, crear un fichero del tamaño que necesitemos, por ejemplo 5GB:</p>
<p><code>dd if=/dev/zero of=file.img bs=1MB count=5000</code></p>
<p>Luego de esto unimos nuestro disco actual con el nuevo <em>file.img</em>:<br />
<code>cat file.img &gt;&gt; disk.img</code></p>
<p>Como último paso, volvemos a crear el sistema de ficheros usando <em>mkfs</em>:<br />
<code>mkfs.<em>xfs</em> disk.img</code><br />
(deben cambiar xfs por el sistema de ficheros a utilizar como ext3, reiserfs, etc)</p>
<li><strong>Disminuir el tamaño del disco</strong><br />
Similar al anterior, usaremos las herramientas <strong>dd</strong> y <strong>mkfs</strong> (tambien usaremos los comando <em>cp</em> y <em>mouont</em>)<br />
Creamos un fichero con el nuevo tamaño del disco, por ejemplo 5GB:</p>
<p><code>dd if=/dev/zero of=newdisk.img bs=1MB count=5000</code></p>
<p>Le damos formato al fichero:</p>
<p><code>mkfs.<em>xfs</em> newdisk.img</code></p>
<p>Montamos la imágen del disco antigua y la nueva en dos directorios distintos (usaremos temp1 y temp2, respectivamente):</p>
<p><code>mkdir temp1 temp2<br />
mount -tauto -oloop disk.img temp1<br />
mount -tauto -oloop newdisk.img temp2</code></p>
<p>Simplemente copiamos los ficheros desde temp1 hasta temp2, obviamente, conservando los permisos:</p>
<p><code>cp -rfvp temp1/* temp2/</code></p>
<p>Desmontamos las dos imágenes:</p>
<p><code>umount temp1 &amp;amp;&amp;amp; umount temp2</code></p>
<p>Listo, ahora en newdisk.img de 5gb tenemos todo lo que estaba antes en disk.img.</li>
</ul>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fcomo-redimenzionar-el-tamano-de-un-disco-virtual-en-xen%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/"  data-text="Cómo redimenzionar el tamaño de un disco virtual en Xen" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tip: Liberar memoria &#8216;cacheada&#8217;, dentries e inodos</title>
		<link>http://blog.zerial.org/linux/tip-liberar-memoria-cacheada-dentries-e-inodos/</link>
		<comments>http://blog.zerial.org/linux/tip-liberar-memoria-cacheada-dentries-e-inodos/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 13:46:54 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[memoria cache]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=651</guid>
		<description><![CDATA[Hay veces que los programas (especialmente FF) ocupan mucha memoria y la memoria cacheada aumenta hasta quedarnos sin memoria (o con menos de lo que deberíamos tener), esta memoria se puede liberar para que quede utilizable nuevamente, basta con que le tiremos un echo al fichero /proc/sys/vm/drop_caches con los valores 1, 2 o 3 para [...]]]></description>
			<content:encoded><![CDATA[<p>Hay veces que los programas (especialmente FF) ocupan mucha memoria y la memoria <em>cacheada</em> aumenta hasta quedarnos sin memoria (o con menos de lo que deberíamos tener), esta memoria se puede liberar para que quede utilizable nuevamente, basta con que le tiremos un <em>echo</em> al fichero <em>/proc/sys/vm/drop_caches</em> con los valores 1, 2 o 3 para liberar el <em>pagecache</em>, inodos y dentries, o los tres, respectivamente.<br />
Esta funcionalidad fue <a href="http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.16" target="_blank">implementada en la version 2.6.16</a> del <a href="http://www.kernel.org" target="_blank">kernel de linux</a>.</p>
<p><strong>¿Qué es el <em>pagecache</em>, inodos y dentries?</strong><br />
Los ficheros y directorios se representan, en la memoria, como <strong>inodos</strong>, de esta misma forma, los <strong>dentries</strong> corresponden a la representación de la información del path, directorios, etc.<br />
Pueden leer una definición de <em>pagecache</em> más completa en: <a href="http://en.wikipedia.org/wiki/Pagecache" target="_blank">http://en.wikipedia.org/wiki/Pagecache</a>.</p>
<p><strong>Ejemplo:</strong></p>
<p><code>echo -n 1 &gt; /proc/sys/vm/drop_caches; # Libera el <em>pagecache</em><br />
echo -n 2 &gt; /proc/sys/vm/drop_caches; # Liberamos inodos y dentries<br />
echo -n 3 &gt; /proc/sys/vm/drop_caches; # Libera <em>pagecache</em>, inodos y dentries.</code></p>
<p>Pueden ejecutar el comando <em>free -m</em> para ver la memoria antes y despues de liberar el caché.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-liberar-memoria-cacheada-dentries-e-inodos%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-liberar-memoria-cacheada-dentries-e-inodos/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-liberar-memoria-cacheada-dentries-e-inodos/"  data-text="Tip: Liberar memoria &#8216;cacheada&#8217;, dentries e inodos" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-liberar-memoria-cacheada-dentries-e-inodos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xen: Creación y configuración de una máquina virtual (pt2)</title>
		<link>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/</link>
		<comments>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 17:18:29 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[creacion]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[maquina virtual]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacio]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=371</guid>
		<description><![CDATA[Si la instalación y configuración de Xen resultó ser fácil, lo que mostraré a continuación es mucho más sencillo. Para instalar una máquina nueva (con Debian) debemos ejecutar el siguiente comando: xen-create-image --hostname=xen1 --size=5Gb --swap=256Mb --ide \ --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \ --dir=/vm --memory=128Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.26-2-xen-686 \ --debootstrap --dist=lenny --mirror=http://ftp.cl.debian.org/debian/ --passwd Si destripamos los parámetros [...]]]></description>
			<content:encoded><![CDATA[<p>Si la instalación y configuración de Xen resultó ser fácil, lo que mostraré a continuación es mucho más sencillo. Para instalar una máquina nueva (con Debian) debemos ejecutar el siguiente comando:</p>
<p><code>xen-create-image --hostname=xen1 --size=5Gb --swap=256Mb --ide \<br />
  --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \<br />
  --dir=/vm --memory=128Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.26-2-xen-686 \<br />
  --debootstrap --dist=lenny --mirror=http://ftp.cl.debian.org/debian/ --passwd</code></p>
<p>Si <em>destripamos</em> los parámetros nos damos cuenta que le estamos asignando (en orden) el hostname, tamaño de disco duro, cantidad de swap, tipo de disco, dirección ip, netmask, gateway, el directorio donde instalarla, ram, arquitectura, kernel para usar, metodo de instalación, distribución, mirror para descargar y por último, que nos pregunte la pass de root cuando termine de instalar. Estos parametros se pueden cambiar según los requerimientos.</p>
<p>El archivo de configuración de las máquinas virtuales es algo como:</p>
<p><code>kernel      = '/boot/vmlinuz-2.6.26-2-xen-686'<br />
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-686'<br />
maxmem	=	'256'<br />
memory      = '64'<br />
root        = '/dev/hda2 ro'<br />
disk        = [<br />
                  'file:/vm/domains/xen01/swap.img,hda1,w',<br />
                  'file:/vm/domains/xen01/disk.img,hda2,w',<br />
              ]<br />
name        = 'xen01'<br />
# Red<br />
vif         = [ 'ip=192.168.20.202,mac=00:16:3E:6F:E3:3B' ]<br />
#  Comportamiento<br />
on_poweroff = 'destroy'<br />
on_reboot   = 'restart'<br />
on_crash    = 'restart'</code></p>
<p>Podemos modificar arbitrariamente las opciones segun lo que nosotros necesitemos, tambien existen más opciones que le podemos agregar, como la asignacion de X cpus, decirles que cpu usen, por ejemplo si tenemos 4 núcleos, asignarle el 1 y el 4.</p>
<p><code>vcpus = 2;<br />
cpus = '0,3'</code></p>
<p>De esta forma le estamos asignando 2 núcleos virtuales  y le estamos diciendo que use los nucleos <em>0</em> y <em>3</em>.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fxen-creacion-y-configuracion-de-una-maquina-virtual-pt2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/"  data-text="Xen: Creación y configuración de una máquina virtual (pt2)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Xen: Instalación y configuración (pt1)</title>
		<link>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/</link>
		<comments>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 00:13:39 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=368</guid>
		<description><![CDATA[Esta es la primera parte de una serie de artículos que escribiré sobre cómo configurar y usar Xen, crear y administrar máquinas virtuales, clonación y migración, asignación de procesadores, memoria y configuración de la red entre otras cosas. Aunque soy usuario de Archlinux, los servidores que administro están bajo Debian, por lo que estos tutoriales [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es la primera parte de una serie de artículos que escribiré sobre cómo configurar y usar <a href="http://es.wikipedia.org/wiki/Xen" target="aa">Xen</a>, crear y administrar máquinas virtuales, clonación y migración, asignación de procesadores, memoria y configuración de la red entre otras cosas.<br />
Aunque soy usuario de <a href="http://www.archlinux.org" target="aa">Archlinux</a>, los servidores que administro están bajo <a href="http://www.debian.org" target="asa">Debian</a>, por lo que estos tutoriales los haré en base a esa distribución.</p>
<p>A continuación, una serie de instrucciones de cómo instalar y dejar corriendo Xen en la máquina servidor en sencillos pasos:</p>
<p>Debemos instalar el kernel correspondiente y las utilidades de xen. Lo hacemos todo con el siguiente comando:</p>
<blockquote><p>apt-get install xm-utils-common xen-linux-system-2.6.26-2-xen-686 linux-image-2.6.26-2-xen-686</p></blockquote>
<p>Se van a instalar automáticamente las dependencias y otras utilidades que se necesiten.<br />
Reiniciamos y booteamos con el kernel correspondiente: <strong>Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.26-2-xen-686</strong></p>
<p>Hay que fijarse que se instalaron dos: <em>linux-image</em> y <em>xen-linux-system</em>. El primero se usará para que las máquinas <em>guest</em> booteen y el segundo para el domU.</p>
<p>Cuando ya hayamos iniciado con <em>xen-linux-system</em>, debemos editar el fichero <em>/etc/xen/xend-config.sxp</em>. Vamos a la linea donde configuramos la red, debe aparecer algo como &#8220;<em>(network-script network-dummy)</em>&#8221; y debemos cambiarlo por &#8220;<em>(network-script network-bridge)</em>&#8220;. Cuando intentemos crear nuestra primera máquina virtual, xen nos enviará un mensaje advirtiendo que debemos configurar esa linea en el fichero de configuración.</p>
<p>Eso es todo.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fxen-instalacion-configuracion-pt1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/"  data-text="Xen: Instalación y configuración (pt1)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Local root exploit en kernel 2.6.x (hasta la 2.6.29)</title>
		<link>http://blog.zerial.org/seguridad/local-root-exploit-en-kernel-26x-hasta-la-2629/</link>
		<comments>http://blog.zerial.org/seguridad/local-root-exploit-en-kernel-26x-hasta-la-2629/#comments</comments>
		<pubDate>Sun, 17 May 2009 23:45:19 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[exploits]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[vulnerabilidades]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=287</guid>
		<description><![CDATA[El Viernes pasado se anunciaron, en la lista de seguridad de debian, actualizaciones para el kernel, que solucionaba varias vulnerabilidades. CVE-2009-0028 Chris Evans discovered a situation in which a child process can send an arbitrary signal to its parent. CVE-2009-0834 Roland McGrath discovered an issue on amd64 kernels that allows local users to circumvent system [...]]]></description>
			<content:encoded><![CDATA[<p>El Viernes pasado se anunciaron, en la lista de seguridad de debian, <a href="http://lists.debian.org/debian-security-announce/2009/msg00111.html" target="_blank">actualizaciones para el kernel</a>, que solucionaba varias vulnerabilidades.</p>
<blockquote>
<pre>CVE-2009-0028

    Chris Evans discovered a situation in which a child process can
    send an arbitrary signal to its parent.

CVE-2009-0834

    Roland McGrath discovered an issue on amd64 kernels that allows
    local users to circumvent system call audit configurations which
    filter based on the syscall numbers or argument details.

CVE-2009-0835

    Roland McGrath discovered an issue on amd64 kernels with
    CONFIG_SECCOMP enabled. By making a specially crafted syscall,
    local users can bypass access restrictions.

CVE-2009-0859

    Jiri Olsa discovered that a local user can cause a denial of
    service (system hang) using a SHM_INFO shmctl call on kernels
    compiled with CONFIG_SHMEM disabled. This issue does not affect
    prebuilt Debian kernels.

CVE-2009-1046

    Mikulas Patocka reported an issue in the console subsystem that
    allows a local user to cause memory corruption by selecting a
    small number of 3-byte UTF-8 characters.

CVE-2009-1072

    Igor Zhbanov reported that nfsd was not properly dropping
    CAP_MKNOD, allowing users to create device nodes on file systems
    exported with root_squash.

CVE-2009-1184

    Dan Carpenter reported a coding issue in the selinux subsystem
    that allows local users to bypass certain networking checks when
    running with compat_net=1.

CVE-2009-1192

    Shaohua Li reported an issue in the AGP subsystem they may allow
    local users to read sensitive kernel memory due to a leak of
    uninitialized memory.

CVE-2009-1242

    Benjamin Gilbert reported a local denial of service vulnerability
    in the KVM VMX implementation that allows local users to trigger
    an oops.

CVE-2009-1265

    Thomas Pollet reported an overflow in the af_rose implementation
    that allows remote attackers to retrieve uninitialized kernel
    memory that may contain sensitive data.

CVE-2009-1337

    Oleg Nesterov discovered an issue in the exit_notify function that
    allows local users to send an arbitrary signal to a process by
    running a program that modifies the exit_signal field and then
    uses an exec system call to launch a setuid application.

CVE-2009-1338

    Daniel Hokka Zakrisson discovered that a kill(-1) is permitted to
    reach processes outside of the current process namespace.

CVE-2009-1439

    Pavan Naregundi reported an issue in the CIFS filesystem code that
    allows remote users to overwrite memory via a long
    nativeFileSystem field in a Tree Connect response during mount.</pre>
</blockquote>
<p>Se publicaron dos exploits para explotar vulnerabildades de escalacion de provilegios local. Estos exploits se aprovechan de la funcion <em>ptrace_attach()</em> para ejecutar un <em>codigo arbitrario</em> que nos permita ejecutar una shell del tipo /bin/sh como root.<br />
El primer exploit es el <a href="http://blog.zerial.org/files/exploits/shoryuken.c"><strong>shoryuken</strong></a>, lo probé en distintas versiones del kernel de debian y archlinux, pudiendo ser explotada solo la version 2.6.26-1-686 de Debian 5.0, de forma aleatoria, es decir, hay veces que ejecuto el exploit y funciona y otras veces no. El <a href="http://blog.zerial.org/files/exploits/ptrace_attach.c">segundo script</a> fue probado por su autor en la version del kernel 2.6.29rc1 de <a href="http://www.gentoo.org" target="_blank">Gentoo</a>.<br />
Estos exploits funcionan bajo situaciones especificas y no todos los sistemas son vulnerables.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Flocal-root-exploit-en-kernel-26x-hasta-la-2629%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/local-root-exploit-en-kernel-26x-hasta-la-2629/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/local-root-exploit-en-kernel-26x-hasta-la-2629/"  data-text="Local root exploit en kernel 2.6.x (hasta la 2.6.29)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/local-root-exploit-en-kernel-26x-hasta-la-2629/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Descifrando password encriptadas con shadow (md5 + salt)</title>
		<link>http://blog.zerial.org/seguridad/descifrando-password-encriptadas-con-shadow-md5-salt/</link>
		<comments>http://blog.zerial.org/seguridad/descifrando-password-encriptadas-con-shadow-md5-salt/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 05:27:14 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[codigos]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[shadow]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=155</guid>
		<description><![CDATA[En Linux las password o claves de los usuarios (incluyendo root) se almacenan en el fichero /etc/shadow, encriptadas y con un salt, que nos complica el descifrado. En pocas palabras una shadow password es un hash del password mas un salt (hashed and salted password). Un ejemplo de una clave shadow es root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30:13911::::::, si la [...]]]></description>
			<content:encoded><![CDATA[<p>En Linux las password o claves de los usuarios (incluyendo root) se almacenan en el fichero <strong>/etc/shadow</strong>, encriptadas y con un salt, que nos complica el descifrado. En pocas palabras una <em>shadow password</em> es un hash del password mas un salt (<em>hashed and salted password</em>).<br />
Un ejemplo de una clave shadow es <em>root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30:13911::::::</em>, si la analizamos podemos darnos cuenta de lo siguiente:</p>
<ul>
<li>Lo que nos interesa es solamente <em>root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30.</em></li>
<li>Lo que esta antes de &#8220;:&#8221; corresponde al usuario: root; y lo que sigue es la password.</li>
<li>Si descomponemos la password podemos obtener:</li>
<li>$1$: Nos indica que corresponde a una encriptacion md5.</li>
<li><em>xOqq7NEt: </em>Es el SALT que se usa para generar el hash del password<em><br />
</em></li>
<li><em>vDOA0jbLcaiRbGsj3ddz30.: </em>Es el hash salteado de nuestra password.</li>
</ul>
<p>Si analizamos todos estos datos podemos darnos cuenta que teniendo el salt podemos encriptar una palabra o frase y generar un hash similar al que estaba en el fichero /etc/shadow, por lo que solo nos queda crear un script y tener un diccionario de palabras a mano para empezar a <em>crackear o descifrar</em> las password en shadow.</p>
<p>El comando <em>mkpasswd </em>nos permite generar un password segun un salt especificado.<br />
Ejemplo:</p>
<blockquote><p>machine:~$ mkpasswd -H md5 <em>miPassword</em> -S DSfdsdaA<br />
$1$DSfdsdaA$kOxgZsSAshG4W.dgGp28Y/</p></blockquote>
<p>He creado un script para hacer mas eficiente y automatiza un poco el proceso.</p>
<p><span id="more-155"></span></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re3">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re3">################################################################</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3">#</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re3"># Crack <span class="kw1">for</span> SHADOW PASSWORDS.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3"># Usage:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3"># &nbsp; &nbsp; &nbsp; crack.<span class="kw2">sh</span> SALT ENCRYPTED_PASS WORD_LIST</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3"># Example:</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3"># &nbsp; &nbsp; &nbsp; crack.<span class="kw2">sh</span> mAsCaLaZ 8E6sMbq.fRDo6nbQqIh.z1 wordlist.txt</span></div>
</li>
<li class="li2">
<div class="de2"><span class="re3">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3"># by Zerial &#8211; http://blog.zerial.org &#8211; fernando@zerial.org</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re3">################################################################</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">__SALT=</span>$<span class="nu0">1</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re2">__HASH=</span><span class="st0">&quot;md5&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">__FILE=</span>$<span class="nu0">3</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">__RPWD=</span>$<span class="nu0">2</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Cracking $__RPWD &#8230;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Attempts: `wc -l $3 |cut -f1 -d &#8216; &#8216;`&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> lista <span class="kw1">in</span> `<span class="kw2">cat</span> <span class="re1">$__FILE</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">pass_temp=</span>`mkpasswd -H <span class="re1">$__HASH</span> <span class="st0">&quot;$lista&quot;</span> -S <span class="re1">$__SALT</span> |cut -f4 -d <span class="st0">&#8216;$&#8217;</span>`;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">#echo </span><span class="st0">&quot;Probing $lista &#8230;&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;$__RPWD&quot;</span> = <span class="st0">&quot;$pass_temp&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Password Cracked.&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Decrypted password is: $lista&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">i=</span>`<span class="kw2">expr</span> <span class="re1">$i</span> + <span class="nu0">1</span>`;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Password not found. <img src='http://blog.zerial.org/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> &quot;</span>;</div>
</li>
</ol>
</div>
<p><strong>Funcionamiento:</strong> Lee palabras desde un fichero y por cada palabra leida genera un <em>hashed and salted password</em> y la compara con los parametros pasados al script.</p>
<blockquote><p>machine:~$ sh crack.sh DSfdsdaA .NySZJPYFdPr0ETVpMeKx1 wordlist<br />
Cracking .NySZJPYFdPr0ETVpMeKx1 &#8230;<br />
Attempts: 161597</p>
<p>Password Cracked.<br />
Decrypted password is: test</p></blockquote>
<p><a href="http://blog.zerial.org/files/shadow_cracker.sh">Descargar script</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fdescifrando-password-encriptadas-con-shadow-md5-salt%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/descifrando-password-encriptadas-con-shadow-md5-salt/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/descifrando-password-encriptadas-con-shadow-md5-salt/"  data-text="Descifrando password encriptadas con shadow (md5 + salt)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/descifrando-password-encriptadas-con-shadow-md5-salt/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>5 Gestores de ventanas (window manager) ultra ligeros</title>
		<link>http://blog.zerial.org/linux/5-gestores-de-ventanas-window-manager-ultra-ligeros/</link>
		<comments>http://blog.zerial.org/linux/5-gestores-de-ventanas-window-manager-ultra-ligeros/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 04:20:17 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[fluxbox]]></category>
		<category><![CDATA[lxde]]></category>
		<category><![CDATA[ranking]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[window manager]]></category>
		<category><![CDATA[windowlab]]></category>
		<category><![CDATA[wm]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=148</guid>
		<description><![CDATA[Me di la libertad de hacer un ranking top 5 de gestores de ventanas (window manager) mas ligeros para Linux, el orden no va a depender de cual es mejor o peor, me guiare en el orden en que los fui probando y que me fueron gustando. Tambien incluiré un bonus track con algunos window [...]]]></description>
			<content:encoded><![CDATA[<p>Me di la libertad de hacer un ranking top 5 de gestores de ventanas (window manager) mas ligeros para Linux, el orden no va a depender de cual es mejor o peor, me guiare en el orden en que los fui probando y que me fueron gustando. Tambien incluiré un <em>bonus track</em> con algunos window manager que han dejado de ser desarrollados o que simplemente no quice incluirlos dentro de este ranking top 5.</p>
<p><strong>Top 5</strong></p>
<ol>
<li><a href="http://fluxbox.org">Fluxbox</a></li>
<li><a href="http://windowmaker.info">WindowMaker</a></li>
<li><a href="http://lxde.org">Lxde</a></li>
<li><a href="http://www.angelfire.com/linux/floorzat/2diskXwin.htm">2-Disk</a></li>
<li><a href="http://nickgravgaard.com/windowlab/">WindowLab</a></li>
</ol>
<p><span id="more-148"></span></p>
<p><strong>Fluxbox</strong><br />
Este es un gestor de ventanas sencillamente genial, segun mi punto de vista es el mejor, mi favorito. Es completamente configurable, versatil, ultra ligero y rapido, optimizable, etc. Soporta transparencias en sus menus y barras de titulos, sencilla manera de configurar tus <em>hotkeys</em>, estilos o temas, elementos de inicio, etc.<br />
Especial para maquinas ligeras sin muchos recursos, o bien para maquinas <em>no-ligeras</em> que no quieren derrochar tantos recursos (como yo).<br />
Hace un tiempo publique <a href="http://blog.zerial.org/tag/fluxbox/">algunos tutoriales</a> para <em>enchular</em> este magnifico gestor de ventanas.</p>
<p style="text-align: center"><a href="http://blog.zerial.org/wp-content/uploads/2008/10/fb2.jpg"><img src="http://blog.zerial.org/wp-content/uploads/2008/10/fb2_thumb.jpg" alt="fluxbox new look" /></a></p>
<p><strong>WindowMaker</strong><br />
Fue mi preferido casi por un año, pero no resisti y volvi a fluxbox. Cuando lo usé no soportaba transparencias, costaba un poco configurarlo pero valia la pena, sumamente ligero. Sus caracteristicas actuales permiten poner transparencias en sus menus.<br />
Tambien ideal para maquinas de escasos recursos.<br />
<a href="http://blog.zerial.org/wp-content/uploads/2008/10/wmaker.jpg"><img class="aligncenter size-medium wp-image-150" title="Gestor de ventanas: windowmaker" src="http://blog.zerial.org/wp-content/uploads/2008/10/wmaker-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><strong>Lxde</strong><br />
Hace un tiempo pense en cambiar de entorno de ventanas y busqué a ver si existia algun proyecto nuevo y encontre Lxde, nose que tan antiguo sera, pero no lo conocia. Si bien es bastante ligero y bonito, es un poco problematico de configurar, no es muy amistoso, hay que tener harto tiempo y paciencia. Lo recomiendo para quien lo quiera probar. Soporta iconos en el escritorio, una barra de tareas y un menu de aplicaciones y programas, que lo hace bastante amigable para la vista.<br />
<a href="http://blog.zerial.org/wp-content/uploads/2008/10/lxde.png"><img src="http://blog.zerial.org/wp-content/uploads/2008/10/lxde-300x225.png" alt="" title="Window Manager: Lxde" width="300" height="225" class="aligncenter size-medium wp-image-151" /></a></p>
<p><strong>2-Disk</strong><br />
Mi experiencia con este fue similar al anterior, en mi odisea por cambiar de entorno de ventanas lo conocí y no me agrado mucho, por su forma de configuracion poco amigable y ademas, es bastante feo, nose que tan <em>customizable</em> sea. No diré mucho sobre 2-Disk, pruebenlo.<br />
<a href="http://blog.zerial.org/wp-content/uploads/2008/10/2-disk.jpg"><img src="http://blog.zerial.org/wp-content/uploads/2008/10/2-disk-300x224.jpg" alt="" title="Window Manager; 2-disk" width="300" height="224" class="aligncenter size-medium wp-image-152" /></a></p>
<p><strong>WindowLab</strong><br />
Sinceramente, nunca lo probé por lo que no quiero emitir ninguna opinion al respecto, sólo que es ultra ligero y sencillo.<br />
<a href="http://blog.zerial.org/wp-content/uploads/2008/10/windowlab.png"><img src="http://blog.zerial.org/wp-content/uploads/2008/10/windowlab-300x225.png" alt="" title="Window Manager: windowlab" width="300" height="225" class="aligncenter size-medium wp-image-153" /></a></p>
<p>Los links de descarga de estos <em>window manager</em> estan al principio del post.</p>
<p><strong>bonus track</strong><br />
No he querido incluir algunos gestores por tu complejidad o bien por que estan descontinuados:<br />
<a href="http://kahakai.sourceforge.net/index.php">kahakai</a><br />
<a href="http://freshmeat.net/redir/waimea/19892/url_homepage/waimea">waimea</a><br />
<a href="http://blackboxwm.sourceforge.net/">Blackbox</a></p>
<p>Si tienen tiempo recomiendo que prueben <a href="http://www.enlightenment.org/">Enlightnement</a> y si no tienen tanto tiempo, pueden probar <a href="http://www.elivecd.org/">Elive</a>, distribucion Debian + Enlightenment.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2F5-gestores-de-ventanas-window-manager-ultra-ligeros%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/5-gestores-de-ventanas-window-manager-ultra-ligeros/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/5-gestores-de-ventanas-window-manager-ultra-ligeros/"  data-text="5 Gestores de ventanas (window manager) ultra ligeros" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/5-gestores-de-ventanas-window-manager-ultra-ligeros/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
	</channel>
</rss>

