(注意:上面楼层的基于basic的版本,和基于shell的版本,将停止更新,以后的更新,会以这个版本为基础)
1,软件来源:
2,界面
3,特色
4,配置方法
5,缺陷
1,软件来源:
我的这个Wharf是参照puppy iconmenu开发的,引用了很多puppy iconmenu的源代码。
wharf是afterstep应用程式的停靠站,以驻列的icon来表示即将想要执行的程式,按滑鼠的左键来启动应用程式,按滑鼠的右鍵可以将整排驻列收成一个icon。按键列上的每一个button也可以是一个folder,也就是说,当你点选这个button之後,实际上是内含了一排button可以点选,就有如抽屉一般。
Fvwm也有fvwmwharf,这个和afterstep的wharf一样的,正因为有这个,fvwm模拟afterstep就非常的容易。
可是这两个Wharf都是不能独立运行的,需要先启动起来afterstep及Fvwm,不能在其他Window manager里面运行。
另外,wmaker也有wharf,是通过dockapp实现的,常用的是wmdrawerrc,有兴趣的可以尝试一下,不过他通用行也不强,主要也是在Fvwm、Afterstep、wmaker里面用。
我曾经尝试使用这几种WM,感觉虽然不是十分喜欢他们的WM,但是较喜欢这种Wharf,希望他能够在其他Window manager里面运行。一开始的思路是找到afterstep及Fvwm的源程序,看看能不能把Wharf部分单独“抠”出来,做一个独立的包,研究以后发现凭我的能力,基本做不到。
unity的侧边栏,也是类似wharf的风格,只是它没有folder,而且还能用来切换已经打开的程序。
正在我要灰心时,我找到了下面的网址:
http://www.murga-linux.com/puppy/viewtopic.php?t=4407
据说在puppy环境下仿照afterstep的wharf开发的,不过它是2005年发布的,基于puppy的。
他需要imlib2和PuppyBasic,我下载了他的安装包,在puppy内安装使用,效果一般,而且中文乱码。
然后发现他有源程序,C语言配合Basic开发的,我把basic语言的部分用c重写,添加了若干功能,经过多次改版,形成了现在的样子。
2,界面:
图片见顶楼。
界面的说明:
这个Wharf由3部分组成:主icon(一个方形图标)、2级icon(竖直排列的方形图标)、3级icon(水平排列)
主icon:软件启动起来以后显示的只有主icon,鼠标(点击/划过)他可以显示/收起竖直的那一列icon,右键点击则重新调入配置文件。
2级icon:(点击/划过)后可以展开对应的 3级icon,或者直接打开对应程序(由配置文件决定)
3级icon:点击可以打开具体的程序。
3,特色:
(1),可以设置icon的大小
(2),可以人为设定包括主icon在内的所有icon(由配置文件决定)
(3),可以重新调入配置文件(右键点击主icon)
(4),可以自定义背景图片(通过覆盖图片文件)
(5),只依赖一个imlib2,可以独立运行于任何WM和DE环境。
(6),可以在2级icon中直接放进去独立icon。
(7),主icon有3种隐藏方式:不隐藏、贴左边全隐藏、贴左边半隐藏(由配置文件决定)
(8),2级icon也有3种隐藏方式:不隐藏、贴左边全隐藏、贴左边半隐藏(由配置文件决定)
(9),可以鼠标划过即打开2级icon、3级icon,也可通过点击来打开(由配置文件决定)
(10),主icon旁边显示一个小数字时钟。通过配置文件决定是否显示。(showclock:1)-----2012.04.07
(11),指向主icon,会出现一个提示窗口,显示现在的系统信息(cpu、内存、进程状况),离开后消失。----2012.04.07
4,配置方法:
(1)主要文件和目录结构:(28楼的包,/bin目录里面的文件有变化。详细的情况请看28楼)
代码: 全选
~/.iconmenu #(必须放到~/.iconmenu目录,否则会出错)
├── bin
│ ├── iconmenu #(这是主程序,启动方式: cd ~/.iconmenu/bin && ./iconmenu INIT $HOME)
│ ├── iconmenu.c
│ ├── iconrun1
│ ├── iconrun1.c
│ ├── iconrun2
│ ├── iconrun2.c
│ ├── iconrun3
│ ├── iconrun3.c
│ └── Vera.ttf
├── iconcache
│ └── ...
├── icons
│ ├── background.jpg
│ └── ...
├── menu.rc #(这是配置文件,请根据你的情况修改)
└── pics
└── background.jpg
配置文件menu.rc的内容:
代码: 全选
#---------------------------------------------------------------------------------------------------
# Base-configuration:
#
# baseconfig:x y sizeOfMainIcons GapBetweenMainIcons sizeOfSubmenueIcons GapBetweenSubIcons Lowered/Raised(0/1) MainIconHidesAutomatically(0/1/2) SubIconHidesAutomatically(0/1/2) MouseMoveOpenSubIcon(0/1/2)
#
baseconfig:0 160 64 0 64 0 1 2 2 2
#这一行是全局参数,从左到右分别是:x y 主icon/2级icon大小 主icon/2级icon间隔 3级icon大小 3级icon间隔 是否长局顶端(0/1) 主icon隐藏方式(0/1/2) 2级icon隐藏方式(0/1/2) 打开2级icon/3级icon的方式(0/1/2)
# 主icon隐藏方式(0/1/2):0,不隐藏 1,贴左边完全隐藏 2,贴左边半隐藏
# 2级icon隐藏方式(0/1/2):0,不隐藏 1,贴左边完全隐藏 2,贴左边半隐藏
# 打开2级icon/3级icon的方式(0/1/2):0,鼠标单击打开,再单击收起 1,鼠标划过打开,打开程序收起2级icon/右键收起2级icon 2,第一次鼠标划过主icon打开2级icon,打开程序不收起2级icon,右键不收起2级icon
#千万注意:主icon隐藏方式(0/1/2)和 2级icon隐藏方式(0/1/2)不是 0 时,X(第一个参数)需要设置成较小的数字,否则图标乱跳动
showclock:1
#这一行指示是否在主icon旁边显示时钟。
#------------------------------------------------------------------
# Mainbutton
group0# /usr/share/icons/oxygen/48x48/emotes/face-smile.png
##group0后面是主icon的图标文件
single1# /usr/share/icons/hicolor/48x48/apps/chromium-browser.png "chromium-browser" "chromium-browser"
##single后面是独立2级icon的:图标文件 命令行 文字描述,用“空格”分割,可以用“英文双引号”扩起来
group2# /usr/share/icons/oxygen/48x48/places/folder-favorites.png "文件浏览/位置"
##group后面是2级icon的:图标文件 文字描述,用“空格”分割,可以用“英文双引号”扩起来
/usr/share/icons/oxygen/48x48/places/user-home.png "dolphin ~/" "个人目录"
/usr/share/icons/oxygen/48x48/places/folder-blue.png "dolphin /" "/ 根目录"
##以上是3级icon的:图标文件 命令行 文字描述,用“空格”分割,可以用“英文双引号”扩起来
(2)配置方法:修改menu.rc、 替换icons目录 background.jpg文件即可
(3)程序启动:
注意:下面这个包里面缺少中文字体,需要自己复制一个字体到bin子目录并改名为: Vera.ttf(因为字体文件太大,打包进来就无法上传了)
下载,解压到~/.iconmenu,
然后修改menu.rc
务必要配置这个文件,否则可能无法启动
替换icons目录 background.jpg文件(可选)
拷贝一个中文字体到:~/.iconmenu/bin/,改名为Vera.ttf(
否则不能显示提示文本)
最后执行以下指令:
代码: 全选
cd ~/.iconmenu/bin/
./iconmenu INIT $HOME
5,缺陷
(1),不能嵌入wmaker dockapp;这是我下一步开发的目标。
(2),打开2级icon/3级icon的方式(0/1/2)选择1和2时,如果鼠标移动速度太快,显示的图标会错乱,可能上一行3级icon没有消失,本行的已经显示出来了,也可能一行图标显示不全,中间缺几个。移动的慢点就没事了。
6,如何编译软件
我已经编译成二进制包了。大家如果想自己编译,则:
请安装编译工具包,和imlib2-dev,然后:
代码: 全选
cd ~/.iconmenu/bin/
g++ -o ./iconrun1 ./iconrun1.c -lImlib2 -lX11
g++ -o ./iconrun2 ./iconrun2.c -lImlib2 -lX11
g++ -o ./iconrun3 ./iconrun3.c -lImlib2 -lX11
g++ -o ./iconmenu ./iconmenu.c -lImlib2 -lX11
编译时有一些警告,不用理他。
7,下一步开发目标
(1),设法在2级icon中实现切换窗口。
(2),设法在某个icon中,实现显示系统托盘。
这是2012.04.07版本的截图,显示时钟、贴左边,半隐藏,自动打开下级菜单,鼠标已经指向主icon,显示了系统信息。