<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4425766530542702019</id><updated>2011-07-28T09:08:22.588-07:00</updated><title type='text'>Hate Talk</title><subtitle type='html'>Computer Addict</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-8888553827912668411</id><published>2008-12-31T04:45:00.000-08:00</published><updated>2009-04-22T17:21:44.371-07:00</updated><title type='text'>The great PC rebuild</title><content type='html'>Its that time of year when its after Christmas and I still have a week before classes start. This is the time when I start to break things and then rebuild them. This year I got some new cooling stuff for my PC and instead of just adding it I decided to tear down the whole system and start from scratch. I have tried to document the process a little bit but pictures cant describe how much work went into this. I am proud of the job I have done.&lt;br /&gt;Here are the parts I will be using.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COOLER MASTER COSMOS 1010 Full Tower Computer Case&lt;br /&gt;EVGA 132-CK-NF78-A1 LGA 775 NVIDIA nForce 780i SLI ATX Intel Motherboard&lt;br /&gt;G.SKILL 4GB (2 x 2GB) 240-Pin DDR2 SDRAM DDR2 Dual Channel Kit Desktop Memory&lt;br /&gt;Intel Q6600 quadcore cpu&lt;br /&gt;Asus cd/dvd drive&lt;br /&gt;Western Digital 300 gig Raptor drive&lt;br /&gt;2 Nvidia 8800 gt cards&lt;br /&gt;2 swifttech obsidian waterblocks with the Mosfet heatsinks&lt;br /&gt;H20-220 Apex Ultima CPU liquid cooling kit&lt;br /&gt;800w power supply&lt;br /&gt;Lots of red LED Antek 3 speed fans.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4643.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4643.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is what I started out with. As you can see I completely stripped the box because I had to remove some pieces of the hard drive enclosure in order to allow all the things to fit. The goal I was going for was to create two independent loops of watercooling. One loop for the cpu and one loop for the two nvidia 8800gt's I have. What I planned to do was use the swifttech dual radiator for the gpus and the new quad Blackice GTX480 radiator for the cpus. Here is a pic of the swifttech radiator.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4645.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4645.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is a picture of the monster Blackice 480GTX&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4644.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4644.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The first order of business was to rebuild the case. As you can see I removed the whole hard drive area. I will be moving the hard drive up to the 5 1/2 inch bay area in order to get some more space. I will be mounting the blackice rad on top of the box however I was hard pressed to find a location for the swifttech one but I finally decided on the bottom where the fans used to be and there was already holes for two fans to flow outward. You cant see it in this picture but there are some bars the box sits on to allow airflow underneath. I also decided to paint the box black at the same time. I never really liked the silver much anyway. Here is the modded and painted box with the radiators installed.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4648.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4648.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next I installed my swifttech pump and my evga 780i mother board. I also started adding the tubing and planning out my waterflow pattern as I was installing the parts.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4649.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4649.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next I added the power supply, the cd/dvd drive and my 300 gig raptor hardrive.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4654.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4654.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Next I started on the gpu waterblocks. I have two nvidia 880gt's. I run a 4 monitor system so I need the cards running independent and not in SLI. Aircooled my cards ran in the 50c to 70c range depending on the fan speed so I am hoping to knock 10 degrees or so off of that with watercooling. I selected the swifttech obsidian waterblock with the add on mosfet heatsink which is pictured here all put together.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4646.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4646.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is another close up&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4656.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4656.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My work area...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4658.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4658.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4662.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/100_4662.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here I have added the second videocard and all the little odds and ends I forgot. I have filled the entire system with water and turned it on. Everything seems to be working pretty well so far.&lt;br /&gt;My GPU cards are now running at about 29-30 degrees Celcius which is a vast improvement over the 50-60 they were running before.&lt;br /&gt;At the moment I'm still running at a stock 2.4 GHz but I'm going to be going back up to at least 3.6, and maybe more. Here is my sensors output.&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;pwnsauce ~ #&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;sensors&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;w83627dhg-isa-0290&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Adapter: ISA adapter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;VCore:     +1.27 V  (min =  +0.00 V, max =  +1.74 V) &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;in1:       +9.93 V  (min =  +7.18 V, max =  +0.42 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;AVCC:      +3.25 V  (min =  +2.05 V, max =  +0.00 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;3VCC:      +3.25 V  (min =  +0.86 V, max =  +1.63 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;in4:       +1.19 V  (min =  +0.78 V, max =  +1.17 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;in5:       +1.61 V  (min =  +0.66 V, max =  +0.65 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;in6:       +5.94 V  (min =  +1.08 V, max =  +0.00 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;VSB:       +3.25 V  (min =  +2.05 V, max =  +1.55 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;VBAT:      +3.01 V  (min =  +0.51 V, max =  +2.86 V) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Case Fan:    0 RPM  (min = 22500 RPM, div = 4) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;CPU Fan:     0 RPM  (min =  869 RPM, div = 16) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Aux Fan:     0 RPM  (min = 6367 RPM, div = 4) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;fan4:     4326 RPM  (min = 6490 RPM, div = 8) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;fan5:        0 RPM  (min = 21093 RPM, div = 2) ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Sys Temp:     -2 C  (high =    +0 C, hyst =  +127 C)  [CPU diode ]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;CPU Temp:  +33.0 C  (high = +127.0 C, hyst =  +0.0 C)  [CPU diode ] ALARM&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;AUX Temp:  +38.5 C  (high = +127.0 C, hyst =  +0.0 C)  [thermistor]&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;vid:      +1.300 V&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;coretemp-isa-0000&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Adapter: ISA adapter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Core 0:      +28 C  (high =  +100 C)                   &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;coretemp-isa-0001&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Adapter: ISA adapter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Core 1:      +23 C  (high =  +100 C)                   &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;coretemp-isa-0002&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Adapter: ISA adapter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Core 2:      +26 C  (high =  +100 C)                   &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;coretemp-isa-0003&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Adapter: ISA adapter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;Core 3:      +28 C  (high =  +100 C)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-8888553827912668411?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/8888553827912668411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=8888553827912668411' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/8888553827912668411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/8888553827912668411'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2008/12/great-pc-rebuild.html' title='The great PC rebuild'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i236.photobucket.com/albums/ff141/purehate138/pc%20build/th_100_4643.jpg' height='72' width='72'/><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-7873842454706244026</id><published>2008-12-23T10:28:00.000-08:00</published><updated>2008-12-23T10:40:36.144-08:00</updated><title type='text'>Scripts...</title><content type='html'>I use some scripts in my rc.lua file which I guess I need to post in order for some of the widgets to work. These are not my original work, I got them from various sources on the inturwub. I cant remember where so I cant give the credit where it is due.&lt;br /&gt;&lt;br /&gt;The first one tells you the current or last emerged package.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#emerge-current.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;tac /var/log/emerge.log |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;grep 'Compiling' |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;head |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;sed -e 's/.*(//' |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;sed -e 's/::.*)//' |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;head -n 1 |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;cut -d \) -f 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next one tells the progress in percentage.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;# This script will report the progress of the last emerge command run.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;tail -n 50 /var/log/emerge.log |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;tac |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;grep -v "Starting retry" |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;grep -iE '([0-9]* of [0-9]*)' -o -m 1 |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;sed -e 's/\(.*\) of \(.*\)/\1 \2/' |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;awk '{print 100.0*$1/$2}' &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next one tells us the status of the current package being emerged.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;STATUS=`tail -n 15 /var/log/emerge.log |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;grep -iE "Compiling|Cleaning|AUTOCLEAN|completed|search|terminating|rsync" |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;cut -d ' ' -f "2-" |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;grep -Ev 'Finished\.|Cleaning up\.\.\.' |\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;tail -n 1`&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#echo "$STATUS"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;if [ "`echo "$STATUS" | grep -i compiling`" != "" ]; then echo Compiling&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i cleaning`" != "" ]; then echo Cleaning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i autoclean`" != "" ]; then echo Autoclean&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i sync`" != "" ]; then echo Syncing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i search`" != "" ]; then echo Searching&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i completed`" != "" ]; then echo Completed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;elif [ "`echo "$STATUS" | grep -i terminating`" != "" ]; then echo Completed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;else echo Script Error!         &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;fi                              &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the final one will show us when the last-sync was. (This one requires the Date::Manip perl module)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/usr/bin/perl                 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;use Date::Manip;                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;                                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;$date = `grep "Sync completed" /var/log/emerge.log | tail -n1 | cut -c-10`;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;$date = &amp;amp;DateCalc("Jan 1, 1970  00:00:00 GMT",$date);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;$date = UnixDate("$date","%A %H:%M");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;print "$date";                  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I also use a little script to show my current ip.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/bin/bash                     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/&lt;.*$//'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And finally I use a script to download a image of the world with the current state of darkness and use it as my desktop. You will have to edit this one to suit your resolution. I have this set as a cron job which executes once a hour to get me the latest desktop picture.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#!/bin/bash                     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#                               &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;# Save this script to somewhere like "/home/(user)", "chmod a+x" it,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;# edit it to change the correct IMAGEFILE for your screen size,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;# then run "crontab -e" and add a line like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#                               &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;#   0 * * * * DISPLAY:0 /home/(user)/xplanetdisplay.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;                                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;MIRROR=http://taint.org/xplanet/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;IMAGEFILE=day_clouds_2048x1024.png&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;                                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;###########################################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;[ -f $HOME/.exports ] &amp;amp;&amp;amp; . $HOME/.exports&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;PATH=$PATH:/usr/local/bin:/usr/X11/bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;export DISPLAY PATH HOME LANG XAUTHORITY SESSION_MANAGER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;tmpdir=$HOME/.xplanetroot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;[ -d $tmpdir ] || mkdir $tmpdir&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;cd $tmpdir&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;if wget -qN $MIRROR/$IMAGEFILE ; then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;  feh --bg-scale $IMAGEFILE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(255, 0, 0);"&gt;fi&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-7873842454706244026?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/7873842454706244026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=7873842454706244026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/7873842454706244026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/7873842454706244026'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2008/12/scripts.html' title='Scripts...'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-2836507528334142732</id><published>2008-12-15T07:50:00.000-08:00</published><updated>2008-12-15T08:01:50.857-08:00</updated><title type='text'>Awesome Window Manager</title><content type='html'>I have recently discovered the awesome window manager. It is a tiling window manager which is very light and easy to use. Theres is some documentation at their website http://awesome.naquadah.org/ and they also have a excellent wiki. The one problem I had was finding rc.lua files which worked for the newer versions so I decided to post mine so maybe it will be helpful to others. Its still a work in progress as I learn more but heres what it is as of now.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i236.photobucket.com/albums/ff141/purehate138/AwesomeLaptop.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 500px; height: 300px;" src="http://i236.photobucket.com/albums/ff141/purehate138/AwesomeLaptop.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style=";font-family:courier new;font-size:78%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--Include awesome libraries, with lots of useful function!&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;require("awful")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;require("beautiful")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;require("wicked")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Variable definitions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;theme_path = "/home/purehate/.config/awesome/themes/my_theme"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Actually load theme&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;beautiful.init(theme_path)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- defaults.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;terminal = "Eterm -O --tint grey 50 --cmod 100 -x --scrollbar-popup --buttonbar no --font-fx none -f white -c white --font '-Adobe-Courier-Medium-R-Normal--14-100-100-100-M-90-ISO8859-1' "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;editor = os.getenv("EDITOR") or "nano"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;editor_cmd = terminal .. " -e " .. editor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--set function&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function setFg(color, text)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;           return "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;" .. text .. "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   end &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Default modkey.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;modkey = "Mod4"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Table of layouts to cover with awful.layout.inc, order matters.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;layouts =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "tile",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "tileleft",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "tilebottom",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "tiletop",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "fairh",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "fairv",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "magnifier",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "max",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "spiral",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "dwindle",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    "floating"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Table of clients that should be set floating.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;floatapps =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- by class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ["MPlayer"] = true,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ["gimp"] = true,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ["aterm"] = true,  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- by instance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Applications to be moved to a pre-defined tag by class or instance.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Use the screen and tags indices.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;apptags =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ["Firefox"] = { screen = 1, tag = 1 },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Define if we want to use titlebar on all applications.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;use_titlebar = false&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Tags&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Define tags table.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;tags = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;for s = 1, screen.count() do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Each screen has its own tag table.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    tags[s] = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create 9 tags per screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    for tagnumber = 1, 9 do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        tags[s][tagnumber] = tag({ name = tagnumber, layout = layouts[1] })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        -- Add tags to screen one by one&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        tags[s][tagnumber].screen = s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- I'm sure you want to see at least one tag.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    tags[s][1].selected = true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Wibox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Create a textbox widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytextbox = widget({ type = "textbox", align = "right" })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Set the default text in textbox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytextbox.text = " " .. os.date() .. " "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Create a laucher widget and a main menu&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mymainmenu = awful.menu.new({ items =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"firefox", "firefox" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"Alpine", terminal .. "-e alpine" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"vmware", "vmware" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"K3B", "k3b" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"mc", terminal .. "-e mc" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"rss feeds", terminal .. " -e newsbeuter" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"konqueror", "konqueror" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"mrxvt", "mrxvt -tr -shade 75 +trt -fg white -cr white" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"openoffice", "ooffice" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"kate", "kate" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"aterm", " aterm -sl 3000 -tr +sb -si -sk -fade 70 -sh 60 -fn -misc-fixed-medium-r-normal-*-*-120-*-*-c-*-iso8859-2 -g 130x50+20-0 -fg white" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"rootXterm", "sudo xterm" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"Mplayer", "kmplayer" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"vlc", "vlc" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"amarok", "amarok" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"lynx", terminal .. " -e lynx" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"gimp", "gimp" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"pidgin", "pidgin" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"Transmission", "transmission" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"Hack_songs", terminal .. "-e mpg123 -z --list /media/Hack_songs/List.lst" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"backtrack", terminal .. "-e ssh root@192.168.1.223" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"wireshark", "wireshark" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"edit config", editor_cmd .. " " .. awful.util.getdir("config") .. "/rc.lua" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"restart", "sudo reboot" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"shutdown", "sudo poweroff" },&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  {"close menu", function () awful.menu.close("mymainmenu") end }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;}})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                     menu = mymainmenu })&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Create a systray&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mysystray = widget({ type = "systray", align = "right" })&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--- Create a cpu widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpuwidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'cpuwidget'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(cpuwidget, wicked.widgets.cpu,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ' &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; CPU: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1%')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--and then create a cpu graph&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'graph',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'cpugraphwidget',&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget.height = 0.85&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget.width = 80&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget.bg = '#333333'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget.border_color = '#0a0a0a'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget.grow = 'left'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cpugraphwidget:plot_properties_set('cpu', {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    fg = '#AEC6D8',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    fg_center = '#285577',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    fg_end = '#285577',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    vertical_gradient = false&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(cpugraphwidget, wicked.widgets.cpu, '$1', 1, 'cpu')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--mem widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;memwidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'memwidget'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(memwidget, wicked.widgets.mem,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ' &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Memory:&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1 ($2Mb/$3Mb)',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;nil, nil, {2, 4, 4})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--Add mem widgit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'progressbar',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'membarwidget'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget.height = 0.85&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget.width = 80&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget.bg = '#333333'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget.border_color = '#0a0a0a'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget.grow = 'left'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;membarwidget:bar_properties_set('mem', {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;bg = '#222222',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fg = '#285577',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fg_center = '#285577',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fg_end = '#285577',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fg_off = '#222222',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;reverse = false,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;min_value = 0,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;max_value = 100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(membarwidget, wicked.widgets.mem, '$1', 1, 'mem')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--start emerge widgets&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--last sync&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;lastsync = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'lastsync'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function run_script()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local filedescriptor = io.popen('sudo /home/purehate/scripts/lastsync.pl')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local value = filedescriptor:read()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    filedescriptor:close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    return {value}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(lastsync, run_script,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     '&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Last-Sync: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1', 10)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;---emerge current&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;current = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'current'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function run_script()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local filedescriptor = io.popen('sudo /home/purehate/scripts/emerge-current.sh')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local value = filedescriptor:read()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    filedescriptor:close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    return {value}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(current, run_script,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     '&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Current Package: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1', 10)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--emerge progress&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;progress = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'progress'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function run_script()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local filedescriptor = io.popen('sudo /home/purehate/scripts/emerge-progress.sh')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local value = filedescriptor:read()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    filedescriptor:close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    return {value}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(progress, run_script,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     '&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Progress: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1', 10)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--emerge status&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;status = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'status'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function run_script()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local filedescriptor = io.popen('sudo /home/purehate/scripts/emerge-status.sh')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local value = filedescriptor:read()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    filedescriptor:close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    return {value}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(status, run_script,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     '&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Status: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1', 10)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--net widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;netwidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'netwidget'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(netwidget, wicked.widgets.net,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ' &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Net: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; ${eth0 down} / ${eth0 up} [ ${eth0 rx} //  ${eth0 tx} ]',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;nil, nil, 3)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-----file system widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;fswidget = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'fswidget'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(fswidget, wicked.widgets.fs,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ' &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;FS:&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; ${/ used}/${/ size} (${/ usep} used)', 120)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--Emerge text widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;emerge = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;type = "textbox",&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name = "emerge"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;emerge.text = "Emerge Status: "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;--Show our IP&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ip = widget({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    type = 'textbox',&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    name = 'ip'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;function run_script()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local filedescriptor = io.popen('sudo /home/purehate/scripts/ip.sh')&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local value = filedescriptor:read()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    filedescriptor:close()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    return {value}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;wicked.register(ip, run_script,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     '&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Current IP: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; $1', 10)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Create a wibox for each screen and add it&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mywibox = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mypromptbox = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mylayoutbox = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytaglist = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytaglist.buttons = { button({ }, 1, awful.tag.viewonly),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      button({ modkey }, 1, awful.client.movetotag),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      button({ }, 3, function (tag) tag.selected = not tag.selected end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      button({ modkey }, 3, awful.client.toggletag),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      button({ }, 4, awful.tag.viewnext),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      button({ }, 5, awful.tag.viewprev) }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytasklist = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;mytasklist.buttons = { button({ }, 1, function (c) client.focus = c; c:raise() end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       button({ }, 3, function () awful.menu.clients({ width=250 }) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       button({ }, 4, function () awful.client.focus.byidx(1) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       button({ }, 5, function () awful.client.focus.byidx(-1) end) }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;for s = 1, screen.count() do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create a promptbox for each screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mypromptbox[s] = widget({ type = "textbox", align = "left" })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create an imagebox widget which will contains an icon indicating which layout we're using.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- We need one layoutbox per screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mylayoutbox[s] = widget({ type = "imagebox", align = "right" })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mylayoutbox[s]:buttons({ button({ }, 1, function () awful.layout.inc(layouts, 1) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             button({ }, 3, function () awful.layout.inc(layouts, -1) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             button({ }, 4, function () awful.layout.inc(layouts, 1) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             button({ }, 5, function () awful.layout.inc(layouts, -1) end) })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create a taglist widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mytaglist[s] = awful.widget.taglist.new(s, awful.widget.taglist.label.all, mytaglist.buttons)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create a tasklist widget&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mytasklist[s] = awful.widget.tasklist.new(function(c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                  return awful.widget.tasklist.label.currenttags(c, s)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                              end, mytasklist.buttons)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Create the wibox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s] = {}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][1] = wibox({ position = "top", fg = beautiful.fg_normal, bg = beautiful.bg_normal })&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Add widgets to the wibox - order matters&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][1].widgets = { mylauncher,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           mytaglist[s],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           memwidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           membarwidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           netwidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           cpuwidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           cpugraphwidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           fswidget,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           ip,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           mytextbox,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           mylayoutbox[s],&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           s == 1 and mysystray or nil }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][1].screen = s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; -- Create the second wibox&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][2] = wibox({ position = "bottom", fg = beautiful.fg_normal, bg = beautiful.bg_normal }) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Add widgets to the wibox - order matters&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][2].widgets = { emerge,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             current,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             progress,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             status,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             lastsync,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             mytasklist[s]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                               }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    mywibox[s][2].screen = s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Mouse bindings&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awesome.buttons({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    button({ }, 3, function () mymainmenu:toggle() end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    button({ }, 4, function() awful.spawn(settings.apps.terminal) end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    button({ }, 5, awful.tag.viewprev)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Key bindings&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Bind keyboard digits&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Compute the maximum number of digit we need, limited to 9&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keynumber = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;for s = 1, screen.count() do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   keynumber = math.min(9, math.max(#tags[s], keynumber));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;for i = 1, keynumber do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    keybinding({ modkey }, i,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       local screen = mouse.screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       if tags[screen][i] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           awful.tag.viewonly(tags[screen][i])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    keybinding({ modkey, "Control" }, i,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       local screen = mouse.screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       if tags[screen][i] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           tags[screen][i].selected = not tags[screen][i].selected&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    keybinding({ modkey, "Shift" }, i,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       if client.focus then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           if tags[client.focus.screen][i] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                               awful.client.movetotag(tags[client.focus.screen][i])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    keybinding({ modkey, "Control", "Shift" }, i,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       if client.focus then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           if tags[client.focus.screen][i] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                               awful.client.toggletag(tags[client.focus.screen][i])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "Left", awful.tag.viewprev):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "Right", awful.tag.viewnext):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "Escape", awful.tag.history.restore):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Standard program&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "Return", function () awful.util.spawn(terminal) end):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "r", function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                           mypromptbox[mouse.screen].text =&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                               awful.util.escape(awful.util.restart())&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                        end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "q", awesome.quit):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Client manipulation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "m", awful.client.maximize):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "f", function () client.focus.fullscreen = not client.focus.fullscreen end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "c", function () client.focus:kill() end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "j", function () awful.client.focus.byidx(1); client.focus:raise() end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "k", function () awful.client.focus.byidx(-1);  client.focus:raise() end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "j", function () awful.client.swap.byidx(1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "k", function () awful.client.swap(-1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "j", function () awful.screen.focus(1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "k", function () awful.screen.focus(-1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "space", awful.client.togglefloating):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "Return", function () client.focus:swap(awful.client.getmaster()) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "o", awful.client.movetoscreen):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "Tab", awful.client.focus.history.previous):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "u", awful.client.urgent.jumpto):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "r", function () client.focus:redraw() end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Layout manipulation&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "l", function () awful.tag.incmwfact(0.05) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "h", function () awful.tag.incmwfact(-0.05) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "h", function () awful.tag.incnmaster(1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "h", function () awful.tag.incncol(1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "space", function () awful.layout.inc(layouts, 1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Prompt&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "F1", function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 awful.prompt.run({ prompt = "Run: " }, mypromptbox[mouse.screen], awful.util.spawn, awful.completion.bash,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                  awful.util.getdir("cache") .. "/history")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "F4", function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 awful.prompt.run({ prompt = "Run Lua code: " }, mypromptbox[mouse.screen], awful.util.eval, awful.prompt.bash,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                  awful.util.getdir("cache") .. "/history_eval")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                             end):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey, "Ctrl" }, "i", function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                        local s = mouse.screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                        if mypromptbox[s].text then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            mypromptbox[s].text = nil&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                        else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            mypromptbox[s].text = nil&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            if client.focus.class then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                mypromptbox[s].text = "Class: " .. client.focus.class .. " "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            if client.focus.instance then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                mypromptbox[s].text = mypromptbox[s].text .. "Instance: ".. client.focus.instance .. " "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            if client.focus.role then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                                mypromptbox[s].text = mypromptbox[s].text .. "Role: ".. client.focus.role&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                            end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                        end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                    end):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Client awful tagging: this is useful to tag some clients and then do stuff like move to tag on them&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;keybinding({ modkey }, "t", awful.client.togglemarked):add()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;for i = 1, keynumber do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    keybinding({ modkey, "Shift" }, "F" .. i,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   function ()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       local screen = mouse.screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       if tags[screen][i] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           for k, c in pairs(awful.client.getmarked()) do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                               awful.client.movetotag(tags[screen][i], c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                           end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                   end):add()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- {{{ Hooks&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when focusing a client.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.focus.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if not awful.client.ismarked(c) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        c.border_color = beautiful.border_focus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when unfocusing a client.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.unfocus.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if not awful.client.ismarked(c) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        c.border_color = beautiful.border_normal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when marking a client&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.marked.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    c.border_color = beautiful.border_marked&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when unmarking a client.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.unmarked.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    c.border_color = beautiful.border_focus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when the mouse enters a client.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.mouse_enter.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Sloppy focus, but disabled for magnifier layout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if awful.layout.get(c.screen) ~= "magnifier"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        and awful.client.focus.filter(c) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        client.focus = c&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when a new client appears.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.manage.register(function (c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if use_titlebar then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        -- Add a titlebar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        awful.titlebar.add(c, { modkey = modkey })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Add mouse bindings&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    c:buttons({&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        button({ }, 1, function (c) client.focus = c; c:raise() end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        button({ modkey }, 1, function (c) c:mouse_move() end),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        button({ modkey }, 3, function (c) c:mouse_resize() end)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    })&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- New client may not receive focus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- if they're not focusable, so set border anyway.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    c.border_width = beautiful.border_width&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    c.border_color = beautiful.border_normal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    client.focus = c&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Check if the application should be floating.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local cls = c.class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local inst = c.instance&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if floatapps[cls] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        c.floating = floatapps[cls]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    elseif floatapps[inst] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        c.floating = floatapps[inst]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Check application-&gt;screen/tag mappings.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local target&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if apptags[cls] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        target = apptags[cls]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    elseif apptags[inst] then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        target = apptags[inst]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if target then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        c.screen = target.screen&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        awful.client.movetotag(tags[target.screen][target.tag], c)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Set the windows at the slave,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- i.e. put it at the end of others instead of setting it master.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- awful.client.setslave(c)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Honor size hints: if you want to drop the gaps between windows, set this to false.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- c.honorsizehints = false&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- Hook function to execute when arranging the screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- (tag switch, new client, etc)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;awful.hooks.arrange.register(function (screen)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    local layout = awful.layout.get(screen)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if layout then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        mylayoutbox[screen].image = image(beautiful["layout_" .. layout])&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        mylayoutbox[screen].image = nil&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Give focus to the latest client in history if no window has focus&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- or if the current window is a desktop or a dock one.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if not client.focus then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        local c = awful.client.focus.history.get(screen, 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        if c then client.focus = c end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -- Uncomment if you want mouse warping&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    --[[&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    if client.focus then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        local c_c = client.focus:fullgeometry()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        local m_c = mouse.coords()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        if m_c.x &lt;&gt;= c_c.x + c_c.width or&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;            m_c.y &lt;&gt;= c_c.y + c_c.height then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;            if table.maxn(m_c.buttons) == 0 then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                mouse.coords({ x = c_c.x + 5, y = c_c.y + 5})&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;            end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    end&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    ]]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;-- }}}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-2836507528334142732?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/2836507528334142732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=2836507528334142732' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/2836507528334142732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/2836507528334142732'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2008/12/awesome-window-manager.html' title='Awesome Window Manager'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-3903533078290450532</id><published>2008-04-09T04:18:00.000-07:00</published><updated>2008-04-10T06:12:41.316-07:00</updated><title type='text'>Fischer Price "My First FireWall"</title><content type='html'>We had an assignment in class this week to write our own personal firewall for a personal PC. We had to use variables and have a least a few outside services running. I thought I may as a well post it here since by default Backtrack does not have a firewall or even IPtables running when it starts up. In the past I'll be honest I've always cheated with a GUI firewall program like Guard Dog or Firestarter but now I am slowly learning to write one from scratch. If you would like to use it just copy and paste it in a file called firewall.sh. Give it exec permissions and start it with ./firewall.sh and stop it with ./firewall.sh stop. Special thanks to linuxchuck for his help with iptable'fu.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;#Fischer Price "My First Firewall"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;#define variables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;SERVICES="ftp ssh"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;INT=""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;EXT="eth0"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;if [ "$1" = "start" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  echo "Starting firewall..."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;# Flush all existing chains and erase personal chains&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  CHAINS=$(cat /proc/net/ip_tables_names 2&gt;/dev/null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  for i in $CHAINS;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;    $IPT -t $i -F&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  done&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  for i in $CHAINS;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;    $IPT -t $i -X&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  done&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; #creating rules&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -P INPUT REJECT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -P OUTPUT ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; #enable services&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  for x in ${SERVICES}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;    iptables -A INPUT -p tcp --dport ${x} -m state --state NEW -j  ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -A INPUT -p udp -i ${EXT}-j REJECT --reject-with  icmp-port-unreachable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; #hide our firewall&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -A INPUT -p tcp -i  ${EXT}-j REJECT --reject-with tcp-reset&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -A INPUT -p udp -i ${EXT} -j REJECT --reject-with icmp-port-unreachable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; # disable ECN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  if [ -e /proc/sys/net/ipv4/tcp_ecn ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;    echo 0 &gt; /proc/sys/net/ipv4/tcp_ecn&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  fi   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; #disable spoofing on all interfaces&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;   for x in ${INT} ${EXT}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  do &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;    echo 1 &gt; /proc/sys/net/ipv4/conf/${x}/rp_filter     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;#ping rules&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;PERMIT_ICMP="destination-unreachable echo-reply time-exceeded"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;for i in ${PERMIT_ICMP}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; iptables -A INPUT -p icmp --icmp-type ${i} -j ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt; done&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;elif [ "$1" = "stop" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  echo "Stopping firewall..."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -F INPUT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;  iptables -P INPUT ACCEPT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;fi&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-3903533078290450532?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/3903533078290450532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=3903533078290450532' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/3903533078290450532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/3903533078290450532'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2008/04/fischer-price-my-first-firewall.html' title='Fischer Price &quot;My First FireWall&quot;'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-3155150408739536269</id><published>2008-02-24T15:32:00.000-08:00</published><updated>2008-03-03T04:40:52.540-08:00</updated><title type='text'>Project Evil AP</title><content type='html'>My new project these days is wireless routers and all the mods that can be done to them. I know some of this stuff is a little old and has "been done" however it is new to me and I am having quite a bit of fun with it.&lt;br /&gt;&lt;br /&gt;I started with a linksys WRT54GL wireless router which is the newest Linux version of their router. ost of the info on the web is for modding the older routers but I did find some for the L including &lt;a href="http://www.amazon.com/Linksys-WRT54G-Ultimate-Hacking-Asadoorian/dp/1597491667/ref=pd_bbs_sr_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1203896096&amp;amp;sr=8-4"&gt;this book.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I highly recommend the book if you are planning on hacking up your router. I will be slowly adding to the blog as I go with pictures.&lt;br /&gt;&lt;br /&gt;The first thing I did was upgrade to the latest dd-wrt release. Later on I may switch to open-wrt but at this time dd-wrt had some features I liked. The next thing I did was order a couple of 9db antennas from fab-corp to amp up the my signal a little. At this point I decide to preform the SD card mod which I found in the book I mentioned above. I'm not going to go into the actuall install because there is plenty of info in the book and on the web. This gave me a extra 1.9 gigs of memory.&lt;br /&gt;&lt;br /&gt;Now for the software. I configured the router to be a wireless repeater which would repeat the strongest wi-fi signal it could find. I then found a script called Auto AP which takes it one step further. It actively searches out the strongest signal by itself at boot and continues to re scan and stay connected to the strongest open signal. The script can be modified to accept wep keys and preffered essid's.&lt;br /&gt;&lt;br /&gt;Since the start of the project I have switched the router to use open-wrt firmware. It is a much smaller app and suites my needs alot better. dd-wrt is great firmware however I felp it was a  little boloated with apps I didn't need (kinda like Vista).  Anyway I am in the process of getting it built back up into a fully functional MITM type machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-3155150408739536269?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/3155150408739536269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=3155150408739536269' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/3155150408739536269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/3155150408739536269'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2008/02/project-evil-ap.html' title='Project Evil AP'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-7083368193297518561</id><published>2007-12-04T12:42:00.000-08:00</published><updated>2007-12-09T14:53:55.476-08:00</updated><title type='text'>De-ICE pentest disc 1.100 &amp; 1.110</title><content type='html'>I have decided to release videos of the first disc in the de-ice series of pentest challenges. If you do not want to see the solutions DO NOT watch these videos. Special thanks to grendal at http://de-ice.net for providing  a safe way to pentest. To complete the challenges you will also need the Backtrack live cd from http://www.remote-exploit.org. All the instructions for setting up the challenge can be found on the De-Ice site. Special thanks to PrarieFire who provided the transcript of the video and had the original idea to document them in a video series.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?4kaxdxdvayg"&gt;Transcript of challege&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http://purehate138.blip.tv/rss&amp;amp;file=http://blip.tv/rss/flash/524818&amp;amp;showplayerpath=http://blip.tv/scripts/flash/showplayer.swf"&gt;DISC 1.100 part 1 -net discover &amp;amp; nmap&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http://purehate138.blip.tv/rss&amp;amp;file=http://blip.tv/rss/flash/526569&amp;amp;showplayerpath=http://blip.tv/scripts/flash/showplayer.swf"&gt;DISC 1.100 part 2-hydra &amp;amp; ssh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http://purehate138.blip.tv/rss&amp;amp;file=http://blip.tv/rss/flash/525867&amp;amp;showplayerpath=http://blip.tv/scripts/flash/showplayer.swf"&gt;DISC 1.100 part 3-hydra &amp;amp; john&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http://purehate138.blip.tv/rss&amp;amp;file=http://blip.tv/rss/flash/527312&amp;amp;showplayerpath=http://blip.tv/scripts/flash/showplayer.swf"&gt;DISC 1.100 part4-ssh &amp;amp; ssl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http://purehate138.blip.tv/rss&amp;amp;file=http://blip.tv/rss/flash/527226&amp;amp;showplayerpath=http://blip.tv/scripts/flash/showplayer.swf"&gt;DISC 1.100 part5-ftp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am now posting the video solutions of the second disc here. As always thanks to Grendal at the de-ice site for providing this excellent way to learn and sharpen our skills. Special thanks to all the remote exploit crew for providing the sexiest sleekest attack machine ever to exist. Well maybe thats pushing it but it is the best security distro ever. Thanks to Prairie Fire for the hints when I needed them and thanks to Xploitz, balding Parrot, shamen virtual , re@lity, the prez, dr. green and all the others I forgot.&lt;br /&gt;&lt;br /&gt;Transcript of video (comming soon)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/file/530133"&gt;DISC 1.110 part1-nmap &amp;amp; firefox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/file/530164"&gt;DISC 1.110 part2-ftp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blip.tv/file/530455"&gt;DISC 1.110 part3-strings&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blip.tv/file/530252"&gt;DISC 1.110 part4-john the ripper&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blip.tv/file/530929"&gt;DISC 1.110 part5-ssh &amp;amp; openssl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-7083368193297518561?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/7083368193297518561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=7083368193297518561' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/7083368193297518561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/7083368193297518561'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2007/12/de-ice-pentest-disc-1100.html' title='De-ICE pentest disc 1.100 &amp; 1.110'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-4175604225693846124</id><published>2007-12-03T13:05:00.000-08:00</published><updated>2007-12-03T13:07:23.136-08:00</updated><title type='text'>BackTrack 3 beta release date</title><content type='html'>Muts released a date for the beta release of Backtrack 3 today. December 14 2007&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-4175604225693846124?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/4175604225693846124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=4175604225693846124' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4175604225693846124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4175604225693846124'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2007/12/backtrack-3-beta-release-date.html' title='BackTrack 3 beta release date'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-4656964608982753860</id><published>2007-12-02T19:53:00.001-08:00</published><updated>2008-12-11T07:48:28.321-08:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yyEZUG8EaDw/R1N99Z2jT6I/AAAAAAAAAAk/mOYTL7Ljx_U/s1600-R/34.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_yyEZUG8EaDw/R1N99Z2jT6I/AAAAAAAAAAk/KzoW0WM9kho/s400/34.jpg" alt="" id="BLOGGER_PHOTO_ID_5139590093625053090" border="0" /&gt;&lt;/a&gt;Christmas is right around the corner and I hope every one is feeling the holiday cheer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-4656964608982753860?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/4656964608982753860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=4656964608982753860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4656964608982753860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4656964608982753860'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2007/12/christmas-is-right-around-corner-and-i.html' title=''/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yyEZUG8EaDw/R1N99Z2jT6I/AAAAAAAAAAk/KzoW0WM9kho/s72-c/34.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4425766530542702019.post-4433357161792080605</id><published>2007-12-02T09:39:00.001-08:00</published><updated>2007-12-02T09:49:46.564-08:00</updated><title type='text'>Welcome to Hate Talk</title><content type='html'>I have created this blog to organize some of the tutorials and video's and new projects that I feel are important to the Remote-Exploit community. I hope that people can find some useful links here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Backtrack 3 beta is on the way&lt;a href="http://www.offensive-security.com/movies/bt3teaser/bt3teaser.html"&gt; HERE &lt;/a&gt;is a preview of the sexiest security distro ever!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4425766530542702019-4433357161792080605?l=pur3h4t3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pur3h4t3.blogspot.com/feeds/4433357161792080605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4425766530542702019&amp;postID=4433357161792080605' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4433357161792080605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4425766530542702019/posts/default/4433357161792080605'/><link rel='alternate' type='text/html' href='http://pur3h4t3.blogspot.com/2007/12/welcome-to-hate-talk.html' title='Welcome to Hate Talk'/><author><name>pureh@te</name><uri>http://www.blogger.com/profile/18274525316271415582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://4.bp.blogspot.com/_yyEZUG8EaDw/SUZ7j34Y6EI/AAAAAAAAAFg/zAK4oYXfj0s/S220/logo2.png'/></author><thr:total>1</thr:total></entry></feed>
