玩过bettertouchtool的人都知道是个神器可以自定义很多功能。这段时间觉得全屏上网时想观察一下网速看正不正常,于是就找资料看有没相关的配置方法。无奈很多都是基本教程,如果需要实时显示网速,需要结合脚本来用。折腾了一个晚上总算做得有点满意了,发个教程让有需要的人少绕点弯路。
帖子适合有bettertouchtool经验的人使用,如果不会用,建议看扫盲贴。
bettertouchtool使用教程
我其实也是个搬运工,只不过修改了部分代码,源代码参考。
https://community.folivora.ai/t/way-to-get-network-traffic-on-the-touchbar/1714
下面为教程
1、新建一个命令形式的widget
2、找个地方新建一个Python脚本,脚本内容
import time
import psutil
def main():
old_value = 0
old_value_send = 0
while True:
new_value = psutil.net_io_counters().bytes_recv
new_value_send = psutil.net_io_counters().bytes_sent
if old_value:
send_stat(new_value - old_value, new_value_send - old_value_send)
break
old_value = new_value
old_value_send = new_value_send
time.sleep(1)
def convert_to_mbit(value):
return value/1024./1024.
def send_stat(value_recv, value_send):
print "{0:.2f}\t{1:.2f}".format(convert_to_mbit(value_recv), convert_to_mbit(value_send))
main()
3、编辑刚新建的widget,将以下脚本添加上去。
↑记得将圈红的地方改为自己Python的路径
set value to do shell script "python /Users/xx/Public/getNetStats.py"
set myArray to my theSplit(value, " ")
on theSplit(theString, theDelimiter)
-- save delimiters to restore old settings
set oldDelimiters to AppleScript's text item delimiters
-- set delimiters to delimiter to be used
set AppleScript's text item delimiters to theDelimiter
-- create the array
set theArray to every text item of theString
-- restore the old setting
set AppleScript's text item delimiters to oldDelimiters
-- return the result
return theArray
end theSplit
set value1 to item 1 of myArray & " MB▼
" & item 2 of myArray & " MB▲"
return value1
点击run测试一下
显示正常,如果Python报错就是没装psutil插件
4、安装psutil
打开终端,输入sudo pip install psutil,输入密码安装即可。
5、调整显示窗口将字体改为10
最后成果展示
==============7月11日更新=
发现单纯网速不多够,又找方法把CPU温度和风扇速度弄了上去,这样打游戏的时候就可以实时看到风扇速度了。
第一步 终端输入sudo gem install iStats
安装iStats
第二部 新建一个叫做温度的widget,选择apple script,输入下面代码
set myTestString to do shell script "/usr/local/bin/istats"
set myArray to my theSplit(myTestString, "--- CPU Stats ---
CPU temp: ")
set CPUArray to my theSplit(item 2 of myArray, "°C ")
set FanArray to my theSplit(item 2 of myArray, "Fan 0 speed: ")
set FanArray to my theSplit(item 2 of FanArray, " RPM")
set CPUArray to my theSplit(item 2 of myArray, ".")
on theSplit(theString, theDelimiter)
-- save delimiters to restore old settings
set oldDelimiters to AppleScript's text item delimiters
-- set delimiters to delimiter to be used
set AppleScript's text item delimiters to theDelimiter
-- create the array
set theArray to every text item of theString
-- restore the old setting
set AppleScript's text item delimiters to oldDelimiters
-- return the result
return theArray
end theSplit
return "? " & item 1 of CPUArray & "
❄️ " & item 1 of FanArray --温度