通用的tray菜单,有点问题

sh/bash/dash/ksh/zsh等Shell脚本
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

通用的tray菜单,有点问题

#1

帖子 eexpress » 2009-05-08 10:23

代码: 全选

#!/usr/bin/perl

use utf8;

use Gtk2 -init;

sub popM {
   my ($widget, $button, $time, $menu) = @_;
   if ($button == 3) {
   my ($x,$y,$push_in)=Gtk2::StatusIcon::position_menu($menu, $widget);
   $menu->show_all();
   $menu->popup(undef,undef,sub{return($x,$y,0)},undef,0,$time);
   }
}

open(CFGFILE,"$ENV{HOME}/.traymenu.rc") or die "不能打开配置文件。";
my $menu = Gtk2::Menu->new();
my $item;
my $defaultcmd;
while(<CFGFILE>){
        chomp;
        next if /^#/;
        my($menuname,$iconfile,$command)=split(/,/);
        if(!$defaultcmd){$defaultcmd=$command;}
        print "$menuname\n";
$item = Gtk2::ImageMenuItem->new_with_label("执行$menuname");
$item->set_image(Gtk2::Image->new_from_file($iconfile));
$item->signal_connect('activate', sub{`$_[1]`;},$command);
$menu->append($item);
}
close CFGFILE;
my $status_icon = Gtk2::StatusIcon->new_from_stock('gtk-home');
$item = Gtk2::ImageMenuItem->new_from_stock('gtk-quit');
$item->signal_connect('activate', sub{Gtk2->main_quit();}, $status_icon);
$menu->append($item);

$status_icon->set_tooltip("截图/贴图/贴文字集合");
$status_icon->signal_connect('activate', sub{`$defaultcmd`;});
$status_icon->signal_connect('popup-menu', \&popM, $menu);
$status_icon->set_visible(1);

Gtk2->main();
其中,读取的$menuname $iconfile 是乱码或者说无效路径。奇怪的,谁测试下。print出来正确,连那new_with_label("执行$menuname")的”执行“都正常。

配置文件格式如下。

代码: 全选

☎ cat ~/.traymenu.rc 
# 菜单项目名,图标,执行命令
# 第一条命令为缺省点击命令
截图并贴图,/home/exp/应用/脚本/f2.png,p-p截图并贴图.bash
截图,/home/exp/应用/脚本/f1.png,import-截图
● 鸣学
头像
lerosua
论坛版主
帖子: 8455
注册时间: 2007-11-29 9:41
联系:

Re: 通用的tray菜单,有点问题

#2

帖子 lerosua » 2009-05-08 10:30

做出来,有啥用?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 通用的tray菜单,有点问题

#3

帖子 eexpress » 2009-05-08 10:31

不用fvwm的,你就路过罗。
:em04
有需要的。常用脚本都集成到这里嘛。
● 鸣学
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 通用的tray菜单,有点问题

#4

帖子 HuntXu » 2009-05-08 12:10

为什么不能用fvwmbuttons要用tray...
HUNT Unfortunately No Talent...
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 通用的tray菜单,有点问题

#5

帖子 bones7456 » 2009-05-08 12:19

哦,我路过..
关注我的blog: ε==3
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: 通用的tray菜单,有点问题

#6

帖子 adagio » 2009-05-08 12:20

再过以下……
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 通用的tray菜单,有点问题

#7

帖子 eexpress » 2009-05-08 12:55

没事的,都测试下啊。晕不。试试904有问题没。
其他wm不一样可以用哦。
● 鸣学
头像
zhan
帖子: 1880
注册时间: 2005-08-15 0:04
来自: 南7技校

Re: 通用的tray菜单,有点问题

#8

帖子 zhan » 2009-05-08 13:18

有 tray 的软件如果能够设置我都设置成不显示。
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

Re: 通用的tray菜单,有点问题

#9

帖子 yaoms » 2009-05-08 13:20

怪阿,为什么呢?
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
adam8157
帖子: 2794
注册时间: 2009-03-05 16:31
联系:

Re: 通用的tray菜单,有点问题

#10

帖子 adam8157 » 2009-05-08 13:26

bones7456 写了:哦,我路过..
头像
yaoms
帖子: 4952
注册时间: 2007-10-19 14:51
来自: 深圳

Re: 通用的tray菜单,有点问题

#11

帖子 yaoms » 2009-05-08 13:43

use Encode;

...

$menuname = decode_utf8($menuname);
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
windwiny
帖子: 2254
注册时间: 2007-03-13 17:26

Re: 通用的tray菜单,有点问题

#12

帖子 windwiny » 2009-05-08 14:50

试下 x
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 通用的tray菜单,有点问题

#13

帖子 eexpress » 2009-05-08 16:50

没道理encode的啊。
其他脚本里面,都是直接操作,读写很多的啊。
● 鸣学
ljskr
帖子: 21
注册时间: 2008-09-04 19:03

Re: 通用的tray菜单,有点问题

#14

帖子 ljskr » 2009-05-12 17:40

支持ee, 支持fvwm。 同样需要,不知问题解决了没有?
头像
想入非非
帖子: 8078
注册时间: 2008-07-14 22:42
来自: Beijing
联系:

Re: 通用的tray菜单,有点问题

#15

帖子 想入非非 » 2009-05-12 20:10

纯属路过了。。。基本上只用gnome
Ubuntu User
回复