苹果发烧友论坛

 找回密码
 注册
搜索
查看: 11070|回复: 90

[UNIX] 终极应用——Geektool (重新编辑,增强了可读性)   [复制链接]

版主

剑客

Rank: 7Rank: 7Rank: 7

最后登录
2012-2-5
在线时间
1314 小时
威望
1939 金币
苹果
1472
注册时间
2010-2-21
阅读权限
255
帖子
1278
分享
0
精华
3
积分
1939
UID
151083

小朋友徽章

发表于 2010-4-11 22:29:17 |显示全部楼层
本帖最后由 macing2010 于 2010-8-3 10:04 编辑

终极应用——Geektool


        

作者:各种高手       译者:macing2010


      Geektool是一个非常好玩的工具,用它可以做出漂亮又实用的桌面。由于是国外的软件,在国内使用还不是很广泛,所以我找了一些关于Geektool的文章翻译于此。当然,软件的使用还只是技术层面的,我们要玩得心动一点,所以在文章后面我转了几个比较经典的桌面供大家参考,也期待大家更好的作品。要是你觉得你的桌面还不错,可以贴在下面供大家欣赏。

软件下载地址:
http://projects.tynsoe.org/en/geektool/download.php

入门视频,我已加了中文字幕:
http://v.youku.com/v_show/id_XMTkwMDkzNjA4.html

设置面板中文说明:


    到这里相信大家对Geektool的使用有了一定的认识,file和image部分应该可以自行使用了。下面我来说下shell部分。shell是Geektool的精髓所在,自定义性非常强。国外shell大牛们也写出了不少比较好的Geeklets,这些Geeklets涵括了各方面的应用。由于比较杂,我不能一个个都搜集来,所以我只选录部分比较常见的应用。也由于多而乱,所以没有英文说明的翻译,只有我加的用法说明。这些Geeklets都是国外的人写的,很多输出显示部分都是英文的。我们不懂shell,但是可以把这一些显示部分本地化。即运行command后,看显示部分哪里是英文的,然后找到它在command中的位置,改成中文。另外,一些双引号之间也是可以加文字的,这个请自行理解。

时间:
时间日期代码(注意大小写不同,意义是不一样的):
月份:m
日期:d或者D(此时以月/日/年形式输出)
星期:A或者a(此时不输出星期两个字)
小时:l或者I(可以显示为0X)
分钟:M
秒:S
上下午:p

      时间日期的基本格式是:date +"%X"(X就是上面列的代码)。其中如""、%等符号须在英文输入法下,%X上的""/''(单/双引号效果是一样的)不是必须的,其作用只是让代%x与下个%x之间可以有空格。以时间为例:我们现在要输出:当前时间(演示空格)     8 : 21 : 31,代码如下:date +"当前时间          %l : %M : %S"。我们可以把星期、日期、时间等分别放在不同的显示框中(date +"%X",date +"%X",date +"%X"……),然后根据壁纸进行排版,并把时间、日期等显示框放在一个名为时间的组里。如果以后壁纸换了,或者不想再显示时间了,可以直接勾选组前的勾。组的应用非常方便。

日历:
      有三种显示方式,每行代码为一种,并且得选中英文间距相同的字体,不然日期跟星期对不上
  1. cal
复制代码
  1. cal | sed "s/^/ /;s/$/ /;s/ $(date +%e) / $(date +%e | sed 's/./#/g') /"
复制代码
这个可以让当天显示为##,你要不喜欢#,就把命令中的#改成其他的¥%@……都可以
最后是可以让当天显示为红色的命令:
  1. php /path/caltest.php
复制代码
path为calmest路径。




IP状况:
这个显示格式可能不怎么美观,先运行,然后再根据自己的喜好修改源代码的显示输出部分。
  1. #! /bin/bash

  2. myen0=`ifconfig en0 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`

  3. if [ "$myen0" != "" ]
  4. then
  5. echo "Ethernet : IP - $myen0"
  6. else
  7. echo "Ethernet : INACTIVE"
  8. fi

  9. myen1=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`

  10. if [ "$myen1" != "" ]
  11. then
  12. myvar1=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep -e "SSID:" | tail -n 1 | awk '{print $2}'`
  13. myvar2=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | grep -e "channel:" | awk '{print $2}'`
  14. echo "AirPort : IP - $myen1
  15. Network - $myvar1
  16. Channel - $myvar2"
  17. else
  18. echo "Airport : INACTIVE"
  19. fi
复制代码
磁盘使用情况:
当然,其中的英文可以随便改成中文的。
  1. df -h | grep disk0s2 | awk '{print "Macintosh HD:", $2, "total,", $3, "used,", $4, "remaining"}'
复制代码
内存:
  1. top -l 1 | awk '/PhysMem/ {print "自定义区" $8 " "}' ;
复制代码
内存那条代码好像只能显示占用的内存,加个$10就可以显示free的了
$2=wird     $4=active     $6=inactive               ——penny9053(63楼)

电源状态:
  1. my_ac_adapt=`ioreg -w0 -l | grep ExternalConnected | awk '{print $5}'`
  2. if [ "$my_ac_adapt" == "Yes" ]
  3. then
  4. echo "Power : External"
  5. else
  6. cur_power=`ioreg -w0 -l | grep CurrentCapacity | awk '{print $5}'`
  7. max_power=`ioreg -w0 -l | grep MaxCapacity | awk '{print $5}'`
  8. bat_percent=`echo "scale=2;$cur_power / $max_power" | bc`
  9. bat_percent=`echo "$bat_percent * 100" | bc | sed 's/100//'`
  10. cyc_count=`ioreg -w0 -l | grep "Cycle Count" | awk 'BEGIN { FS = "=" } ; {print $8}' | awk 'BEGIN { FS = "}" } ; {print $1}'`
  11. echo "Power : Battery ($bat_percent%)"
  12. echo "Cycles : $cyc_count"
  13. fi
复制代码
废纸篓当前大小:
  1. du -sh ~/.Trash/ | awk '{print "自命名: " $1}'
复制代码
上次开机后运行时间:
  1. uptime | awk '{sub(/[0-9]|user\,|users\,|load/, "", $6); sub(/mins,|min,/, "min", $6); sub(",", "min", $5); sub(":", "h ", $5); sub(/mins,|min,/, "min", $4); ; sub(" h ", " h ", $4); sub(/days,/, "days ", $4); sub(/days,/, "days ", $4); sub(":", "h ", $3); sub(",", "min", $3); print $3 $4 $5 $6 " awake"}'  | sed -e 's/1days/1day /g' -e 's/min1/min/g' -e 's/usermin//g'
复制代码


你的Mac信息:
  1. scutil --get ComputerName;
  2. sw_vers | awk -F':\t' '{print $2}' | paste -d ' ' - - -;
  3. sysctl -n hw.memsize | awk '{print $0/1073741824" GB RAM"}';
  4. sysctl -n machdep.cpu.brand_string;
复制代码
进程:
最后面的13是显示进程的数目,可以根据美观及使用效果随便自定义。
  1. ps -amcwwwxo "command %mem %cpu" | grep -v grep | head -13
复制代码


网络传输速度:
如果你不是用的Ariport,就把下面代码的en1改为en0。或者你无线、有线都有用,那就做两个。
  1. #!/bin/sh
  2. # created by chris helming.
  3. # chris dot helming at gmail

  4. # get the current number of bytes in and bytes out
  5. myvar1=`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` #  bytes in
  6. myvar3=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` # bytes out

  7. #wait one second
  8. sleep 1

  9. # get the number of bytes in and out one second later
  10. myvar2=`netstat -ib | grep -e "en1" -m 1 | awk '{print $7}'` # bytes in again
  11. myvar4=`netstat -ib | grep -e "en1" -m 1 | awk '{print $10}'` # bytes out again

  12. # find the difference between bytes in and out during that one second
  13. subin=$(($myvar2 - $myvar1))
  14. subout=$(($myvar4 - $myvar3))

  15. # convert bytes to kilobytes
  16. kbin=`echo "scale=2; $subin/1024;" | bc`
  17. kbout=`echo "scale=2; $subout/1024;" | bc`

  18. # print the results
  19. echo "in: $kbin Kb/sec"
  20. echo "out: $kbout Kb/sec"
复制代码
天气及天气图标:
      这部分是比较复杂的部分。我找到了两种天气代码。一种显示结果比较复杂,另一种很简洁。天气图标是跟在复杂版天气代码后面的。所以要想有图标就必须运行复杂版的Geeklets,然后再拖个image把图标地址复制进去。但是,可能更多人不喜欢放很多复杂的东西到自己的桌面上,而漂亮的天气图标都是必须要有的。所以一个妥协办法就是:运行复杂版的天气代码以获得天气图标,然后把复杂的天气显示窗口完全透明,最后再添加那个简单的天气代码。
既然是本地天气,那么就必须选择不同地域的天气了。这个选择的过程是更改代码中涉及到地域的相关代码。而这部分复杂版代码和简洁版代码的设置方法是不同的。复杂版天气代码的修改方法是:打开http://weather.yahoo.com/,用拼音搜索自己的城市,然后在代码中把URL地址替换就行了(代码中有提示)。

       而简洁版天气代码修改方法就跟刚才的不一样了,需要查看刚才打开了的Yahoo天气网页的源码。按图示部分可找到,然后在代码中替换。

大连的可以直接用这个。
简洁版:
  1. curl --silent "http://xml.weather.yahoo.com/forecastrss?p=(CHXX0019替换部分,替换完把括号去掉,后面的u=c中c是摄氏度的意思,可以改为F)&u=c" | grep -E '(Current Conditions:|C<BR)' | sed -e 's/Current Conditions://' -e 's/<br \/>//' -e 's/<b>//' -e 's/<\/b>//' -e 's/<BR \/>//' -e 's/<description>//' -e 's/<\/description>//'
复制代码
复杂版:
  1. curl --silent -o /tmp/weather.html (http://weather.yahoo.com/china/liaoning/dalian-2147986/替换部分,完成后请将括号去掉); curl --silent -o /tmp/weather.png $(grep "div\ class=\"forecast-icon\"\ style=\"background:url" /tmp/weather.html| awk -F"'" '{ printf $2 }');for NUM in $(grep -n "<li><strong>.*\n" /tmp/weather.html|cut -d":" -f1); do TARGET=$((NUM+1)) ; sed -n "$NUM"p /tmp/weather.html|sed 's|<li><strong>||g'|sed 's|</strong>||g'| sed 's/^[\t]*//'; sed -n "$TARGET"p /tmp/weather.html ; done
复制代码
天气图标(拖一个Image出来,把地址复制进去就行了):
  1. file://localhost/tmp/weather.png
复制代码



iTunes:
    此部分需要与Applescript联用。脚本的用法是:
  1. osascript /路径/iTunes.scpt
复制代码


这里有更好的脚本,以及可以有专辑封面。请移步:http://www.macfans.com.cn/thread-259267-1-3.html
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

版主

剑客

Rank: 7Rank: 7Rank: 7

最后登录
2012-2-5
在线时间
1314 小时
威望
1939 金币
苹果
1472
注册时间
2010-2-21
阅读权限
255
帖子
1278
分享
0
精华
3
积分
1939
UID
151083

小朋友徽章

发表于 2010-4-11 22:38:48 |显示全部楼层
本帖最后由 macing2010 于 2010-4-11 22:55 编辑

一些比较爽眼的桌面:










另外,更多Geeklets请看这里:
http://www.macosxtips.co.uk/geeklets/
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

版主

一线卧底

Rank: 7Rank: 7Rank: 7

最后登录
2012-2-4
在线时间
2011 小时
威望
2906 金币
苹果
1717
注册时间
2008-7-2
阅读权限
255
帖子
2389
分享
0
精华
0
积分
2906
UID
79215
发表于 2010-4-11 23:31:10 |显示全部楼层
哇,真漂亮....明天好好研究研究

使用道具 举报

Rank: 2

最后登录
2011-11-7
在线时间
107 小时
威望
150 金币
苹果
125
注册时间
2010-1-10
阅读权限
20
帖子
110
分享
0
精华
0
积分
150
UID
149393
发表于 2010-4-13 18:00:41 |显示全部楼层
cool shell的东西很实用

使用道具 举报

Rank: 3Rank: 3

最后登录
2011-9-17
在线时间
651 小时
威望
263 金币
苹果
517
注册时间
2009-7-3
阅读权限
30
帖子
369
分享
0
精华
0
积分
263
UID
139160
发表于 2010-4-14 10:36:51 |显示全部楼层
下了一个,  可是弄了半天,   还是没搞懂...

使用道具 举报

版主

剑客

Rank: 7Rank: 7Rank: 7

最后登录
2012-2-5
在线时间
1314 小时
威望
1939 金币
苹果
1472
注册时间
2010-2-21
阅读权限
255
帖子
1278
分享
0
精华
3
积分
1939
UID
151083

小朋友徽章

发表于 2010-4-14 11:48:03 |显示全部楼层
下了一个,  可是弄了半天,   还是没搞懂...
XIII 发表于 2010-4-14 10:36


开头那个入门视频看了吗?把整个地址复制到safari里就可以观看了。

使用道具 举报

Rank: 3Rank: 3

最后登录
2012-2-3
在线时间
2788 小时
威望
443 金币
苹果
1112
注册时间
2006-12-13
阅读权限
30
帖子
486
分享
0
精华
0
积分
443
UID
13223
发表于 2010-4-17 10:04:43 |显示全部楼层
这么好玩啊!今天试试看,呵呵!

使用道具 举报

Rank: 2

最后登录
2011-7-22
在线时间
126 小时
威望
161 金币
苹果
51
注册时间
2008-6-7
阅读权限
20
帖子
218
分享
0
精华
0
积分
161
UID
74546
发表于 2010-4-17 10:17:21 |显示全部楼层
漂亮

使用道具 举报

论坛元老

派偽虛™

Rank: 6Rank: 6

最后登录
2012-1-22
在线时间
3175 小时
威望
4432 金币
苹果
3194
注册时间
2006-9-13
阅读权限
90
帖子
3136
分享
0
精华
0
积分
4432
UID
5387
发表于 2010-7-9 03:50:11 |显示全部楼层
这个软件不错,就大概把 Shell widgets 化就已经有看头。
多谢分享!

友直 友諒 友多聞

使用道具 举报

Rank: 4

最后登录
2011-7-3
在线时间
1022 小时
威望
1065 金币
苹果
799
注册时间
2007-7-6
阅读权限
70
帖子
1054
分享
0
精华
0
积分
1065
UID
33686
发表于 2010-7-13 08:58:49 |显示全部楼层
很好玩的软件。。。。。

使用道具 举报

版主

剑客

Rank: 7Rank: 7Rank: 7

最后登录
2012-2-5
在线时间
1314 小时
威望
1939 金币
苹果
1472
注册时间
2010-2-21
阅读权限
255
帖子
1278
分享
0
精华
3
积分
1939
UID
151083

小朋友徽章

发表于 2010-7-16 11:17:24 |显示全部楼层
终于把入门视频传到油库了,看不懂文章的可以先看这个视频。

使用道具 举报

高级会员

为什么

Rank: 4

最后登录
2012-1-29
在线时间
394 小时
威望
839 金币
苹果
745
注册时间
2008-4-28
阅读权限
50
帖子
1330
分享
0
精华
0
积分
839
UID
67764
发表于 2010-7-16 14:02:07 |显示全部楼层
`收藏先, 谢啦
不会吧

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|苹果发烧友论坛

GMT+8, 2012-2-5 15:45 , Processed in 0.067710 second(s), 11 queries , Xcache On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部