搞定属于自己的LCD,小白教你修改CONF文件(完工,真累)
本帖最后由 xjcsuper 于 2014-5-18 23:43 编辑首先,LINUX不是我的强项,可以说是一个小白,另外鉴于目前网上关于LCD4linux的相关资料比较少,而现在坛里大家在用的LCD4linux都是大神重编译好的,也没有相关的说明文档,对于conf配置脚本用的参数定义什么的大家也许感到无从下手,(大神们列外)。在当O大还没有放出128X128的配置文件时,我花了一晚上时间,将O大百度盘上的320X240的配置文件,着手修改为128X128的,利用的图片素材也是原来的,虽然没 O大的漂亮,但也在修改当中对配置文件的各项参数有了一些理解。当看到O大的那个交替显示天气 时间的CONF时我又从中学到了交替显示信息的方法。O大放出了非常完美的CONF,在此再次感谢。但我想很多人都想根据自己的需求和个性定制自己的LCD,为了帮还在为此奋斗人们实现这个愿望,小生决定把我所理解的分享给大家,做出自己的LCD界面。本人表达水平有限,如有不妥和不对之处还望各路大神指教,改之
慢慢来吧,码字不容易,我慢慢来
在讲配置文件前,先讲下LCD,以1.5寸128X128的LCD为例,就是横向128个像素,纵向128个像素,共16384个像素点组成了这块屏。了解LCD的像素有利于我们后面在设置各个小部件的位置.
一个完整的CONF文件一般有四部分,由开头的基本环境设置,包括了USB端口,字体规格,前景色,背景色,LCD显示方向,亮度等;接下来是各个小部件的设定,小部件基本上有图像,文本,进度条,及计时器种类(可能还有更多的,在我参考的CONF中只发现了这些);然后是布局设定,这里定义了所有小部件的在屏幕上的位置;最后是变量的参数设定,变量是为了方便在前面的小部件设定设置参数而将一些常用的参数如文件目录、更新时间、网口号等赋值到一个变量上,使以后修改设置变得轻松。
下面我就一部分一部分来说一下详细的设定及我了解的参数意义。
一、开头的基本环境设置
以开头段的代码例子来说明一下,#后面是注解
Display dpf {
Driver 'DPF'#驱动的设备类型吧,DPF是指数码相框,不用改
Port 'usb0'#USB端口,这里不需要改
Font '6x8'#定义字体大小,6X8表示一个字符横向占用6个像素,纵向占用8个像素,知道这个对后面小部件设定位置很重要
Foreground 'ffffff' #前景色
Background 'ffffff00' #背景色
Basecolor'000000' #基本颜色,这在个设定可以自己改改测试,一般不需要动
Orientation 0 # LCD的显示方向,这里可以设置0-3分别表示正常、旋转90°,180°,270°显示
Backlightbacklight # 背光亮度控制,可以设成0-7,0可以关闭背光,7最亮,而这里用的是backlight,是一个变量,也就是根据文件末尾设定的这个变量的值来决定开初始的背光亮度。
}
二,小部件的设定
目前我理解的小部件有图像,文本,进度条,计时器四类,通过这四类小部件可以添加用来显示时间的图片素材,及各类文字显示状态进度条,及不可见的定时用来改变一些变量的值等等。下面同样通过例子说明。
1.图像小部件
Widget Month1 {#小部件Month1,这里的Month1只是一个名称,可以自己定义,这里意思是月份的第一位数,也就是十位
class 'Image' #这里指定的部件的类型为'Image'即图像
file imgadir . 'date'. substr(strftime('%m', time()),0,1) . '.png'#指定图像的具体位置,这里稍后做下详解
reload 1#设定1重新加载
update tick #更新时间设置,这就是理新这个图像的时间,单位是MS,这里用了变量tick代替
inverted 0#设定图像是否反色差显示,类似于底片色吧,0否,1是,一般不用改
visible 1 #这里设置图像是否可见,1为可见
}#以上一个完整的图像小部件设定,这里设定了具显示哪个图像素材,多久更新一次,及图像是否可见这些定义
Widget Month2 {#同上一段代码,这段指定了月份的第二位数,也就是个位,两个图片组合在一起就形成了05这样一个图片显示的月份
class 'Image'
file imgadir . 'date'. substr(strftime('%m', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
在上面的图像小部件代码中,file imgadir . 'date'. substr(strftime('%m', time()),0,1) . '.png' 这一段就当前05月来说等价于 file '/usr/share/lcd4linux/mytheme/img/date0.png' .也就是指定显示date0.png,这个0数字的图片素材。其中的imgadir是个变量,这表示了在CONF文件末尾的变量定义段代码中 imgadir '/usr/share/lcd4linux/mytheme/img/'这段变量定义中的'/usr/share/lcd4linux/mytheme/img/',后面紧跟的符号.为连接符意为将前面的变量跟后面的'date'字符连接起来,单引号中的内容是指定为字符,而不是其它的变量或命令,连接起来就成了'/usr/share/lcd4linux/mytheme/img/date',然后再是连接符.连接的substr(strftime('%m', time()),0,1) 这一段是一段表达式得到的月份的第一个数字0,strftime('%m', time())得到提十进制的月份数字05,而substr是取字符命令,和后面的0,1一起就表示取05这个字符串中从左边0位开如右边第一个字,也就是0,同理substr(strftime('%m', time()),1,1)的意思就是取了05字符串中的第一位后面的一个字,就是5,因此,再连接上后面的'png'.就形成了图片素材的完整路径'/usr/share/lcd4linux/mytheme/img/date0.png' 和'/usr/share/lcd4linux/mytheme/img/date5.png' .这样表达不知大家理解了没有,总之就是利用函数得到相应变化图像素材的完整路径用来显示在屏上。
2.文本小部件
现在我们再来理解下文本小部件的代码定义,上例子
下面是用来显示内存总量的一段文本
Widget RAMText { #这里同样是指定不部件的名称,可以自己定你不叫内存,叫abc可以,为了规范还是设成看得懂的好
class'Text' #指定部件类型为文本
expression meminfo('MemTotal')/1024 #这通过一个表达式得到内存的总量数值,KB单位,通过公式/1024得到的是MB单位数字
prefix 'RAM' #定义这段文本前面要加上的字符,这里是在内存数值前面加上RAM文字,不需要可心删掉这行参数
postfix 'MB' #定义文本段后面加上的字符,这里是在内存数值后面加上MB文字,这样就会形成RAM 1024MB这类显示,不需要可心删掉这行参数
precision0#这里定义精度,也就是通过表达式得到数字的精度,设定为小数点后面几位,0为整数,如需保留2位,设定为2
width10 #宽度设定,10指这一行文本部件的宽度,10表示可以显示10个字符
align'R' #这里是文本对齐,注意这里只是指表达式得到的数值对齐,而不会改变prefix和postfix定义的前后字符,这里R为右,L为左
update tick#同前面的图像部件一样,通过变量定义了这段文本部件的更新时间,单位MS
Foreground 'ffffff'#前景色,也就是字体颜色,如果不加这个参数则使用CONF开头代环境设定代码段的定义
Background 'FFFFFF00'#背景色,同上
}
3.进度条小部件
进度条小部件有单进度条和双进度条两种
下面是一个单进度条,用来显示CPU的使用率
Widget CPUBar { #这里同前面定义部件名称
class 'Bar' #定义部件类型为进度条
expressionproc_stat::cpu('busy', 500)#通过表达式得到CPU的使用率数值
length 10#定义进度条的长度,这里的长度跟文本宽度是一个单位的,10表示10个字符
max100#这里可以定义进度条的最大值比例,比如说表达式得到的是50,这个设定100,那进度条就走一半,如果设150,进度条则走三分之一,这么说大家是否可以理解?
direction 'E'#这个参数定义进度条方向,有E,W,N,S四个方向,E从左向右,W从右向左,N从下向上,S从上向下。
style 'H' #风格设定,H的话,进度条多了一个边框,其它风格同样等大神解惑,不要边框可以去掉这行参数
update tack#一样的是用变量定义部件的更新时间,单位MS,这里用的是tack变量,
Foreground '5f5f5f' #进度条前景色
Background '00FF00FF'#进度条背景色
BarColor0 'FF0000'#第一条进度条的颜色
BarColor1 'EE3333'#第二条进度条的颜色,这里只有一条这个就没用了
}
再来一段双进度条的网络显示例子,就注解下不同的地方
Widget NetBar {
class 'Bar'
expression netdev('eth0', 'Tx_bytes', 500) #通过表达式得到的上传数值,这个数值用在第一条进度条
expression2netdev('eth0', 'Rx_bytes', 500) #通过表达式得到下载数值,这个数值用在第二条进度条
length 21
direction 'E'
style 'H'
update tack
Foreground '5f5f5f'
Background '3F3F3FFF'
BarColor0 '00FF00'#第一条进度条的颜色
BarColor1 'FF0000'#第二条进度条的颜色
}
4.计时器小部件
这个小部件有点不同,不是用来显示在屏上的,一般用来做一些变量的更新,重定义,后台运行什么的,我是这么理解的。
**** Hidden Message *****
通过这段,大家应该了解了交替显示信息是怎么运作的了。
三、布局的设定
前面我们已经了解了显示的种小部件是怎么配置的,但时该怎样让各个部件在相应的位置显示呢?这里我们来布局段代码。
这是我发的那篇CONF的布局代码,
Layout mylayout {
Row07.Col1 'Kernel' #这里定义的是文本、图像、进度条这三种小部件的位置分部
Row08.Col1 'CPUText' #Row08.Col1你可以把它理解为行和列,从屏的左上角开始
Row09.Col1 'CPUBar' #前面我讲到的屏的像素128X128和字体大小定义6X8,用在这里更好理解了
Row07.Col12 'LoadText' #换算过来128X128的屏能显示的字符就是16行21列,现在你再来看左边的参数,是不是一目了然
Row08.Col12 'RAMText' #Row08.Col12 'RAMText'表示,RAMText这个部件显示的位置是第8行12列,很好理解吧
Row09.Col12 'RAMBar' #加上我们设定这的文本部件宽度为10,也就是占用了第8行的后面一半的位置了
Row11.Col1 'SpaceText1'
Row12.Col1 'SpaceText2'
Row13.Col1 'SpaceText3'
Row11.Col7 'SpaceBar1'
Row12.Col7 'SpaceBar2'
Row13.Col7 'SpaceBar3'
Row10.Col1 'TypeText1'
Row10.Col10 'TypeText2'
Row10.Col16 'TypeText3'
Row11.Col15 'DiskText1'
Row12.Col15 'DiskText2'
Row13.Col15 'DiskText3'
Row11.Col11 'DiskBar1'
Row12.Col11 'DiskBar2'
Row13.Col11 'DiskBar3'
Row14.Col1 'NetText1'
Row15.Col1 'NetText2'
# Row11.Col1 'NetBar'
Row16.Col1 'IPText'
Layer 0 {
X1.Y1 'Month1' #这里定义了图像部件显示的位置,用坐标X,Y来表示
X1.Y14 'Month2' #图像控件因为图像大小没有规则,不能像前面以行列来布局,这里的XY其实指的是像素
X1.Y27 'Month-Day' #也是从屏的左上角开始,X纵向从上向下,Y横向从左向右
X1.Y37 'Day1' #X1.Y37 'Day1' 这里表示了从上向下第1个,从左向右37个像素的位置显示日期十位数字图片
X1.Y51 'Day2' #也很好理解吧,具体操作可能要反复多次修改这里的数值才能达到满意的效果
X1.Y82 'Week1'
X17.Y3 'Hour1'
X17.Y26 'Hour2'
X22.Y51 'Hourdot1'
X34.Y51 'Hourdot2'
X17.Y60 'Minute1'
X17.Y83 'Minute2'
X40.Y110 'Second1'
X40.Y118 'Second2'
}
Timer1 'LcdLight' #这里就 定义计时器部件了,因为计时器是不显示的,所以就没有位置定义了
Timer2 'ShowExinfo' #只是以Timer1,Timer2这样累加来定义多个计时器,如果有3个,那就是Timer3
}
Layout 'mylayout'
四、变量参数设定
变量参数设定的存在主要是为了方便修改一些设定,不用为了改个目录,改刷新时间一行行代码去找去替换,只要在这里一改全部OK
代码很简单
Variables {
backlight 2 #变量名称是可以自己定义的,这人变量就是定义了开头的基础环境设置的背光亮度为2
tick 500 #这几个tick,tack,tsck,second,minute变量是定义了前面各个部件用到更新时间参数
tack 200 #比如tack 200,那么前面用到updatetack设定的部件的更新时间就是200ms
tsck 100
second 1000
minute 60000
netdevice 'eth0' #网络接口指定
imgadir '/usr/share/lcd4linux/mytheme/img/' #图片素材目录
datadir '/usr/share/lcd4linux/mytheme/data/'
SpaceDir1'/volume1'
SpaceDir2'/volumeSATA1/satashare1-1'
SpaceDir3'/volumeSATA3/satashare3-1'
Diskname1'sda'
Diskname2'sdc1'
Diskname3'sdf1'
}
总之这些变量根据你自己的需要命名和设定。看各位自己发挥了
写到这里应该差不多了吧,其实要把LCD弄得漂亮,精美的素材是缺少不了的。有美工底子的自己画图吧,期待大家的作品,谢谢所有耐着性子看完的朋友。写得不好和用词不当的地方还望见谅。
本帖最后由 xjcsuper 于 2014-5-21 10:26 编辑
这里放一份我现在自用的最新CONF代码,效果请去这一帖看http://www.gebi1.com/thread-84333-1-1.htmlDisplay dpf {
Driver 'DPF'
Port 'usb0'
Font '6x8'
Foreground 'ffffff'
Background 'ffffff00'
Basecolor'000000' #ffffff00
Orientation 0 # Orientation value from 0-3
Backlightbacklight # Backlight variable control
}
Display Image {
Driver 'Image'
Format 'PNG'
Size '128x128'
Font '6x8'
Pixel '4+1'
Gap '-1x-1'
Border 10
Foreground 'ffffff'
Background 'ffffff00'
Halfground '#70c000'
}
Widget Month1 {
class 'Image'
file imgadir . 'date'. substr(strftime('%m', time()),0,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Month2 {
class 'Image'
file imgadir . 'date'. substr(strftime('%m', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Month-Day {
class 'Image'
file imgadir . 'date-.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Day1 {
class 'Image'
file imgadir . 'date'. substr(strftime('%d', time()),0,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Day2 {
class 'Image'
file imgadir . 'date'. substr(strftime('%d', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Week1 {
class 'Image'
file imgadir . 'week'. strftime('%u', time()) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Hour1 {
class 'Image'
file imgadir . 'time'. substr(strftime('%H', time()),0,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Hour2 {
class 'Image'
file imgadir . 'time'. substr(strftime('%H', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Hourdot1 {
class 'Image'
file imgadir . 'timedot.png'
reload 0
update tack
inverted 0
visible (time() % 2) & 1
}
Widget Hourdot2 {
class 'Image'
file imgadir . 'timedot.png'
reload 0
update tack
inverted 0
visible (time() % 2) & 1
}
Widget Minute1 {
class 'Image'
file imgadir . 'time'. substr(strftime('%M', time()),0,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Minute2 {
class 'Image'
file imgadir . 'time'. substr(strftime('%M', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Second1 {
class 'Image'
file imgadir . 'ts'. substr(strftime('%S', time()),0,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Second2 {
class 'Image'
file imgadir . 'ts'. substr(strftime('%S', time()),1,1) . '.png'
reload 1
update tick
inverted 0
visible 1
}
Widget Kernel {
class'Text'
expression uname('nodename')
width8
align'L'
update minute
Background 'FFFFFF00'
}
Widget CPUText {
class'Text'
# expression uname('machine')
expressionproc_stat::cpu('busy', 500)
prefix 'CPU'
postfix '%'
precision2
width10
align'R'
update tick
Background 'FFFFFF00'
}
Widget CPUBar {
class 'Bar'
expressionproc_stat::cpu('busy', 500)
length 10
max 100
direction 'E'#E,W,N,S
style 'H'
update tack
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget RAMText {
class'Text'
expression showex?meminfo('MemTotal')/1024:meminfo('MemFree')/1024
prefix showex?'RAM':'Free'
postfix 'MB'
precision0
width10
align'R'
update tick
Background 'FFFFFF00'
}
Widget RAMBar {
class 'Bar'
expressionmeminfo('MemTotal') - meminfo('MemFree')
max meminfo('MemTotal')
length 10
direction 'E'
style 'H'
update tack
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget LoadText {
class'Text'
expression loadavg(1)-1
# expression i2c_sensors('temp2_input')
prefix 'Load:'
postfix loadavg(1)-1>1.0?'!':''
width10
align'R'
precision1
update tack
Background 'FFFFFF00'
}
Widget TypeText1 {
class 'Text'
prefix showex?'Space':'Free'
width 6
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget TypeText2 {
class 'Text'
prefix 'DISK'
width 4
align 'R'
update tick
Foreground '00FF00'
Background 'FFFFFF00'
}
Widget TypeText3 {
class 'Text'
postfix 'Read Write'
width 10
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText1R {
class 'Text'
expression diskstats(Diskname1, 'read_sectors', 500)/2<1024?diskstats(Diskname1, 'read_sectors', 500)/2:diskstats(Diskname1, 'read_sectors', 500)/2/1024
postfix diskstats(Diskname1, 'read_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText1W {
class 'Text'
expression diskstats(Diskname1, 'write_sectors', 500)/2<1024?diskstats(Diskname1, 'write_sectors', 500)/2:diskstats(Diskname1, 'write_sectors', 500)/2/1024
postfix diskstats(Diskname1, 'write_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText2R {
class 'Text'
expression diskstats(Diskname2, 'read_sectors', 500)/2<1024?diskstats(Diskname2, 'read_sectors', 500)/2:diskstats(Diskname2, 'read_sectors', 500)/2/1024
postfix diskstats(Diskname2, 'read_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText2W {
class 'Text'
expression diskstats(Diskname2, 'write_sectors', 500)/2<1024?diskstats(Diskname2, 'write_sectors', 500)/2:diskstats(Diskname2, 'write_sectors', 500)/2/1024
postfix diskstats(Diskname2, 'write_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText3R {
class 'Text'
expression diskstats(Diskname3, 'read_sectors', 500)/2<1024?diskstats(Diskname3, 'read_sectors', 500)/2:diskstats(Diskname3, 'read_sectors', 500)/2/1024
postfix diskstats(Diskname3, 'read_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskText3W {
class 'Text'
expression diskstats(Diskname3, 'write_sectors', 500)/2<1024?diskstats(Diskname3, 'write_sectors', 500)/2:diskstats(Diskname3, 'write_sectors', 500)/2/1024
postfix diskstats(Diskname3, 'write_sectors', 500)/2<1024?'K':'M'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget DiskBar1 {
class 'Bar'
expressiondiskstats(Diskname1, 'read_sectors',500)
expression2 diskstats(Diskname1, 'write_sectors', 500)
length 2
direction 'E'
style 'H'
update tsck
Foreground '5f5f5f'
Background '3f3f3fFF'
BarColor0 '00FF00'
BarColor1 'FF0000'
}
Widget DiskBar2 {
class 'Bar'
expressiondiskstats(Diskname2, 'read_sectors',500)
expression2 diskstats(Diskname2, 'write_sectors', 500)
length 2
direction 'E'
style 'H'
update tsck
Foreground '5f5f5f'
Background '3f3f3fFF'
BarColor0 '00FF00'
BarColor1 'FF0000'
}
Widget DiskBar3 {
class 'Bar'
expressiondiskstats(Diskname3, 'read_sectors',500)
expression2 diskstats(Diskname3, 'write_sectors', 500)
length 2
direction 'E'
style 'H'
update tsck
Foreground '5f5f5f'
Background '3f3f3fFF'
BarColor0 '00FF00'
BarColor1 'FF0000'
}
Widget SpaceText1 {
class 'Text'
expression showex?statfs(SpaceDir1, 'blocks')*statfs(SpaceDir2, 'bsize')/1073741824:statfs(SpaceDir1, 'bavail')*statfs(SpaceDir2, 'bsize')/1073741824
postfix 'G'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget SpaceText2 {
class 'Text'
expression showex?statfs(SpaceDir2, 'blocks')*statfs(SpaceDir2, 'bsize')/1073741824:statfs(SpaceDir2, 'bavail')*statfs(SpaceDir2, 'bsize')/1073741824
postfix 'G'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget SpaceText3 {
class 'Text'
expression showex?statfs(SpaceDir3, 'blocks')*statfs(SpaceDir3, 'bsize')/1073741824:statfs(SpaceDir3, 'bavail')*statfs(SpaceDir3, 'bsize')/1073741824
postfix 'G'
precision0
width 5
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget SpaceBar1 {
class 'Bar'
expressionstatfs(SpaceDir1, 'blocks') - statfs(SpaceDir1, 'bavail')
length 3
direction 'E'
style 'H'
max statfs(SpaceDir1, 'blocks')
update tick
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget SpaceBar2 {
class 'Bar'
expressionstatfs(SpaceDir2, 'blocks') - statfs(SpaceDir2, 'bavail')
length 3
direction 'E'
style 'H'
max statfs(SpaceDir2, 'blocks')
update tick
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget SpaceBar3 {
class 'Bar'
expressionstatfs(SpaceDir3, 'blocks') - statfs(SpaceDir3, 'bavail')
length 3
direction 'E'
style 'H'
max statfs(SpaceDir3, 'blocks')
update tick
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget NetText1 {
class 'Text'
expression netdev::fast(netdevice, 'Tx_bytes', 500)/1024<1024?netdev::fast(netdevice, 'Tx_bytes', 500)/1024:netdev::fast(netdevice, 'Tx_bytes', 500)/1024/1024
prefix 'U:'
postfix netdev::fast(netdevice, 'Tx_bytes', 500)/1024<1024?'K/s':'M/s'
width 9
precision0
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget NetText2 {
class 'Text'
expression netdev::fast(netdevice, 'Rx_bytes', 500)/1024<1024?netdev::fast(netdevice, 'Rx_bytes', 500)/1024:netdev::fast(netdevice, 'Rx_bytes', 500)/1024/1024
prefix 'D:'
postfix netdev::fast(netdevice, 'Rx_bytes', 500)/1024<1024?'K/s':'M/s'
precision0
width 9
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget NetBar {
class 'Bar'
expression netdev(netdev, 'Tx_bytes', 500)
expression2netdev(netdev, 'Rx_bytes', 500)
length 2
direction 'N'
# style 'H'
update tack
Foreground '5f5f5f'
Background '3F3F3FFF'
BarColor0 '00FF00'
BarColor1 'FF0000'
}
Widget CpuTText {
class 'Text'
expression i2c_sensors('temp2_input')
postfix '.C'
precision0
width 4
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget CpuTBar {
class 'Bar'
expression i2c_sensors('temp2_input')
length 2
max 100
direction 'N'
style 'H'
update tack
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget MbTText {
class 'Text'
expression i2c_sensors('temp1_input')
postfix '.C'
precision0
width 4
align 'R'
update tick
Foreground 'ffffff'
Background 'FFFFFF00'
}
Widget MbTBar {
class 'Bar'
expression i2c_sensors('temp1_input')
length 2
max 100
direction 'N'
style 'H'
update tack
Foreground '5f5f5f'
Background '00FF00FF'
BarColor0 'FF0000'
BarColor1 'EE3333'
}
Widget IPText {
class 'Text'
expression showex?(uptime('%dDays %H:%M:%S')):(netinfo::ipaddr(netdevice))
prefix showex?'Up:':'IP:'
width 21
align 'R'
update tick
Foreground 'fff000'
Background '5f5f5f'
}
Widget LcdLight{
class 'Timer'
expression LCD::backlight(file::readline(imgadir . 'lcds', strftime('%H', time()) + 1))
active 1
update minute
}
Widget ShowExinfo {
class 'Timer'
expression showex=(time() % 10 < 5)?1:0
active 1
update tick
}
Display 'DPF'
#Display 'Image'
Layout mylayout {
Row07.Col1 'Kernel'
Row08.Col1 'CPUText'
Row09.Col1 'CPUBar'
Row07.Col12 'LoadText'
Row08.Col12 'RAMText'
Row09.Col12 'RAMBar'
Row11.Col1 'SpaceText1'
Row12.Col1 'SpaceText2'
Row13.Col1 'SpaceText3'
Row11.Col6 'SpaceBar1'
Row12.Col6 'SpaceBar2'
Row13.Col6 'SpaceBar3'
Row10.Col1 'TypeText1'
Row10.Col7 'TypeText2'
Row10.Col12 'TypeText3'
Row11.Col11 'DiskText1R'
Row11.Col17 'DiskText1W'
Row12.Col11 'DiskText2R'
Row12.Col17 'DiskText2W'
Row13.Col11 'DiskText3R'
Row13.Col17 'DiskText3W'
Row11.Col9 'DiskBar1'
Row12.Col9 'DiskBar2'
Row13.Col9 'DiskBar3'
Row15.Col2 'CpuTText'
Row14.Col1 'CpuTBar'
Row15.Col7 'MbTText'
Row14.Col6 'MbTBar'
Row14.Col13 'NetText1'
Row15.Col13 'NetText2'
Row14.Col12 'NetBar'
Row16.Col1 'IPText'
Layer 0 {
X1.Y1 'Month1'
X1.Y14 'Month2'
X1.Y27 'Month-Day'
X1.Y37 'Day1'
X1.Y51 'Day2'
X1.Y82 'Week1'
X17.Y3 'Hour1'
X17.Y26 'Hour2'
X22.Y51 'Hourdot1'
X34.Y51 'Hourdot2'
X17.Y60 'Minute1'
X17.Y83 'Minute2'
X40.Y110 'Second1'
X40.Y118 'Second2'
}
Timer1 'LcdLight'
Timer2 'ShowExinfo'
}
Layout 'mylayout'
Variables {
backlight 2
tick 500
tack 200
tsck 100
second 1000
minute 60000
netdevice 'eth0' #网络
imgadir '/usr/share/lcd4linux/mytheme/img/'
datadir '/usr/share/lcd4linux/mytheme/data/'
SpaceDir1'/volume1'
SpaceDir2'/volumeSATA1/satashare1-1'
SpaceDir3'/volumeSATA3/satashare3-1'
Diskname1'sda'
Diskname2'sdc1'
Diskname3'sdf1'
}
本帖最后由 xjcsuper 于 2014-5-18 22:19 编辑
忙完网吧后坐了几个小时终于写完这篇贴子
支持分享了 板凳学习 占楼备用,占楼备用 楼都站满了! jmdjj 发表于 2014-5-18 13:50
楼都站满了!
码字很累的啊 xjcsuper 发表于 2014-5-18 16:34
码字很累的啊
支持一个。 写累了,顶一下吧 不错,学习了,感谢分享!! {:7_203:}
支持分享 教学贴,好东西 感谢提供 好吧,回复可见。。 dsqa 发表于 2014-5-18 21:52
好吧,回复可见。。
码这么多字不容易,不回复可见沉得快啊 xjcsuper 发表于 2014-5-18 21:53
码这么多字不容易,不回复可见沉得快啊
不会沉滴,我再你顶上去。 呵呵。。。支持。。。 很好,支持下。 不错,支持LZ