当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 自己动手写panel
帖子发表于 : 2011-03-11 22:38 
头像

注册: 2008-11-16 11:11
帖子: 397
送出感谢: 0 次
接收感谢: 2
用dwm的时候, 最喜欢它的状态栏.
用musca的时候, 最喜欢它的手动分割.
后来找到了fspanel, 于是有了自己动手写个panel的想法, 看了fspanel和dwm的代码又google了无数资料, 终于搞明白了xlib和xft的那一堆东西, 第一次用xlib, 感觉有些蛋疼, 真不愧是号称比kernel还复杂的玩意. 不过好歹憋出来了, 发贴纪念下.

声明: 我从小美术课就不及格, 所以界面比较丑陋, 基本自己看着顺眼了.

主要有这些功能:
xft支持, 字体好了很多
中文支持, fspanel用XA_STRING通信, 不支持中文title, 这个问题折腾了我好几天
和dwm的状态栏基本一样的布局, 只不过会显示当前桌面的所有task, mix of fspanel & dwm

缺点:
无system tray, system tray还不清楚如何实现, 而且我个人不需要tray, 所以懒得加上了
附件:
stp.png [10.12 KiB]
被下载 6 次


代码在此处下载:
代码:
git clone git://github.com/stesen/stp.git

其中的sysres-xfce.pl是打印信息用的, 可以自己修改扩充, 调用的程序名在config.h中改

慢慢hack去吧, 自己写的panel还是比较实用的, 至少不需要的功能可以去掉了
函数有这些:
get_prop_data() 获取x信息, 数据
set_foreground() 选择颜色
fill_rect() 填充矩形
generic_get_int() 获取x信息, id之类的整数
find_desktop() 查找windows所在的桌面
is_iconified() 是否最小化
get_current_desktop() 返回当前桌面号码
get_number_of_desktops() 返回桌面总数
add_task() 新建task
gui_sync() Xsync
set_prop() 设置x特性
gui_create_taskbar() 新建taskbar
statusloop() 执行外部程序/脚本, 获取其返回值, 显示在panel的右边
sigchld() dwm用它消除僵尸进程, 感觉可有可无, 不过就一开始执行一次, 也不影响效率
gui_init() gui相关的初始化, 包括xft初始化
draw_bigbox() 画大矩形, 高度撑满整个panel
draw_tinybox() 画小矩形, 用在pager上, 和dwm上的那个一样
default_status() 默认的状态信息
draw_status() 画状态信息
gui_draw_task() 画task栏
toggle_shade() 隐藏窗口
switch_desk() 跳到点中的pager
pager_draw_button() 画pager上的button
draw_pager() 画pager
gui_draw_taskbar() 画整个bar
find_task() 在当前的task表中找到该task
del_task() 在task表中删除task
taskbar_read_clientlist() 遍历链表, 刷新task list
handle_press() 鼠标点击事件处理
handle_focusin() 窗口focus处理
handle_propertynotify() property notify事件处理
handle_error() 错误处理
main() 程序入口

很少写gui程序, 一开始居然还有个memory leak, 检查了下, 是个低级错误. 由于对api不是很熟, 不清楚是不是还有其他的bug, 欢迎测试.


_________________
等俺有钱了,俺把M$买来好好搓搓



_________________
评价: 3.7% ljj_jjl2008
 
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-11 23:44 

注册: 2009-06-30 23:05
帖子: 96
送出感谢: 0 次
接收感谢: 1
不错的创意,加油! :em11


_________________
裸跑X可能是最后的选择......
目前使用dwm-plus: http://code.google.com/p/dwm-plus/


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-12 10:06 

注册: 2009-06-30 23:05
帖子: 96
送出感谢: 0 次
接收感谢: 1
我编译运行之后,出现sh: sysres-xfce.pl: 未找到命令。

我是直接./stp运行它的,目录里面也有sysres-xfce-pl这个文件。

谢谢!


_________________
裸跑X可能是最后的选择......
目前使用dwm-plus: http://code.google.com/p/dwm-plus/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-12 11:14 
头像

注册: 2007-02-02 18:14
帖子: 30702
系统: debian sid
送出感谢: 1
接收感谢: 34
支持一下 :em11 systray还是应该有...不过估计很麻烦


_________________
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-12 12:40 
头像

注册: 2008-11-16 11:11
帖子: 397
送出感谢: 0 次
接收感谢: 2
usbtopc 写道:
我编译运行之后,出现sh: sysres-xfce.pl: 未找到命令。

我是直接./stp运行它的,目录里面也有sysres-xfce-pl这个文件。

谢谢!


我的sysres-xfce.pl加在$PATH中的


_________________
等俺有钱了,俺把M$买来好好搓搓


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-12 12:42 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
:em11


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-12 13:54 

注册: 2009-06-30 23:05
帖子: 96
送出感谢: 0 次
接收感谢: 1
stesen 写道:
usbtopc 写道:
我编译运行之后,出现sh: sysres-xfce.pl: 未找到命令。

我是直接./stp运行它的,目录里面也有sysres-xfce-pl这个文件。

谢谢!


我的sysres-xfce.pl加在$PATH中的


原来这样,已经正常运行。


_________________
裸跑X可能是最后的选择......
目前使用dwm-plus: http://code.google.com/p/dwm-plus/


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-14 14:45 
头像

注册: 2008-11-16 11:11
帖子: 397
送出感谢: 0 次
接收感谢: 2
再附一个c语言的status信息, 自己用的话可以直接写在panel的代码里了, 在代码根目录下的sysres/中
代码:
git clone git://github.com/stesen/stp.git


_________________
等俺有钱了,俺把M$买来好好搓搓


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-14 15:27 
头像

注册: 2008-08-16 15:09
帖子: 504
地址: 没有海一样的胸怀,哪能有海一样的事业.
送出感谢: 0 次
接收感谢: 0 次
:em11 ,纯路过帮顶.


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-14 15:35 
头像

注册: 2008-04-26 12:41
帖子: 11000
送出感谢: 11
接收感谢: 38
:em09


_________________
[新手必读]wubi安装常见问题(FAQ)
[分享]装双系统的同学必看——Windows与Linux系统共享交换分区的方法
kde下唯美的暗黑内透主题(无需编译)
无穷老机上的Trinity Desktop Environment


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 自己动手写panel
帖子发表于 : 2011-03-14 22:07 

注册: 2009-06-30 23:05
帖子: 96
送出感谢: 0 次
接收感谢: 1
stesen 写道:
再附一个c语言的status信息, 自己用的话可以直接写在panel的代码里了, 在代码根目录下的sysres/中
代码:
git clone git://github.com/stesen/stp.git


学习一下,感谢分享!


_________________
裸跑X可能是最后的选择......
目前使用dwm-plus: http://code.google.com/p/dwm-plus/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译