您尚未登录。

#16 2013-04-21 14:43:03

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: 终于搞定了awesome的电量与音量widget

lijing48301243 说:

回答到点子上了,十分感谢!!!!!!!!!!!!
你是如何得知xev程序的?玩了一个月的archlinux,第一次看到,是不是多泡泡本论坛就OK了,哈哈

我知道 xev 时这个论坛还没建起来呢……
不过现在既然它已经起来了就多泡泡呗 :-)

PS: 一个月太少啦,用久了你就会知道各种有趣的命令了 ^_^

离线

#17 2013-04-22 21:51:22

lijing48301243
会员
注册时间: 2013-04-14
帖子: 137

Re: 终于搞定了awesome的电量与音量widget

看了三天的lua中文手册,连猜带蒙的大概明白awful.button()这个函数是如何实现及其调用关系。
rc.lua文件
mytaglist.buttons = awful.util.table.join(
                    awful.button({ }, 1, awful.tag.viewonly),  此部分如何调用的呢?



awesome启动时,在lua栈中注册了awful.button表,供lua语言调用。
代码主要位于button.c
button_class_setup(lua_State *L)
{
static const struct luaL_Reg button_methods[] =       //lual_Reg是lua基本API,提供对userdate的操作服务
    {
        LUA_CLASS_METHODS(button)                     
        { "__call", luaA_button_new },                 //注册__call 函数
        { NULL, NULL }
    };

    static const struct luaL_Reg button_meta[] =
    {
        LUA_OBJECT_META(button)                       
        LUA_CLASS_META                                 //注册metatable,包括__index和__newindex函数(luaclass.h定义)
        { NULL, NULL }
    };

    luaA_class_setup(L, &button_class, "button", NULL,             //将注册函数关联至button表
                     (lua_class_allocator_t) button_new, NULL, NULL,
                     luaA_class_index_miss_property, luaA_class_newindex_miss_property,
                     button_methods, button_meta);
}


当rc.lua中调用awful.button(),直接调用awful.button.__index(metatable) ===> __index函数调用__call函数(button.mt实现__call函数)==> button.new

如下为各函数关系图
********************************Lua调用*******************************
button.lua
       button.metetable = button.mt.metatable     
                          button.mt.__call  ----调用--- > button.new
            ******************Lua C 内存栈调用****************
                                 awful.button
                                        __index
                                        __call   (缺省)

参考资料:《lua中文手册》
知识点包括:1、Lua调用C函数
            2、Metatables
            3、表相关的Metamethod

感悟:Lua 博大精深,看懂一行代码不容易,要想彻底理解还是要靠一份详尽的手册


archlinux磨合中

离线

#18 2013-04-22 22:30:01

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: 终于搞定了awesome的电量与音量widget

好有研究精神~

离线

#19 2013-04-22 22:42:24

lijing48301243
会员
注册时间: 2013-04-14
帖子: 137

Re: 终于搞定了awesome的电量与音量widget

向你老学习,哈哈,好了,这下我也不准备自己写rc.lua了,把你的代码下载下来改吧改吧得了


archlinux磨合中

离线

#20 2013-04-24 22:17:37

lijing48301243
会员
注册时间: 2013-04-14
帖子: 137

Re: 终于搞定了awesome的电量与音量widget

搞定了,真心感觉不错了,顺便定义了几个快捷键,哈哈,

PS:请两位推荐一款awesome下的截屏软件哈


archlinux磨合中

离线

#21 2013-04-24 22:21:25

erhandsome
会员
注册时间: 2012-04-03
帖子: 65

Re: 终于搞定了awesome的电量与音量widget

lijing48301243 说:

搞定了,真心感觉不错了,顺便定义了几个快捷键,哈哈,

PS:请两位推荐一款awesome下的截屏软件哈

经典的scrot...

离线

#22 2013-04-24 22:39:00

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,917
个人网站

Re: 终于搞定了awesome的电量与音量widget

简陋 scrot,简单 shutter,强大 gimp。

不过由于 archlinuxcn 源的调整,shutter 从源中删除了好可惜。

离线

#23 2013-04-29 12:59:07

dxcqcv
会员
注册时间: 2012-12-28
帖子: 242

Re: 终于搞定了awesome的电量与音量widget

背景真好看


learning Arch linux

离线

#24 2013-05-18 10:34:17

ninsun
会员
注册时间: 2012-06-08
帖子: 1

Re: 终于搞定了awesome的电量与音量widget

感谢楼主的代码 XD

离线

页脚