专门控制 screen 的菜单 作者 jsosic

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

专门控制 screen 的菜单 作者 jsosic

#1

帖子 eexpress » 2008-07-22 15:10

代码: 全选

DestroyMenu recreate SubMenuScreen
  AddToMenu SubMenuScreen
  + DynamicPopupAction Function BuildScreenMenu

DestroyFunc BuildScreenMenu
  AddToFunc BuildScreenMenu
  + I DestroyMenu recreate SubMenuScreen
  + I AddToMenu SubMenuScreen
  + I Piperead 'echo "`$HOME/.fvwm/fvwm-screen-menu.pl`"' 

Key v A 4 Popup SubMenuScreen

代码: 全选

☎  cat fvwm-screen-menu.pl 
#!/usr/bin/perl -w
#################################
# fvwm-screen-menu.pl      #
#       by: jsosic   #
#################################

#
use Shell qw(screen grep hostname);
# Get list of detached/attached screen sessions and hostname
$s_detached_sessions = screen('-list | grep Detached');
$s_attached_sessions = screen('-list | grep Attached');
$hostname = hostname('');


# regexps rule ;)
$hostname=~s/\s//g;
$s_detached_sessions=~s/(\)|\(|Detached|$hostname|^\s+)//g;
$s_attached_sessions=~s/(\)|\(|Attached|$hostname|^\s+)//g;
$s_detached_sessions=~s/^[0-9]{2,6}\.//g;
$s_attached_sessions=~s/^[0-9]{2,6}\.//g;
$s_detached_sessions=~s/..\n//g;
$s_attached_sessions=~s/..\n//g;


# Finally, here's what we came for.
@ls_detached_sessions = split /\s+/, $s_detached_sessions;
foreach my $session (@ls_detached_sessions){
   print "  + \"$session\" Exec exec gnome-terminal -x screen -r $session  \n";
}
# put separator if there are detached screens...
if ($s_detached_sessions ne ""){
   print "  + \"\" NoP\n";
}



# Add some general stuff...
print "  + \"New Session\"   Exec exec gnome-terminal -x screen \n";
print "  + \"Reattach first\"   Exec exec gnome-terminal -x screen -d -RR \n";



# put separator if there are attached screens...
if ($s_attached_sessions ne ""){
   print "  + \"\" NoP\n";
}
# Little last minute addition: Attached sessions
@ls_attached_sessions = split /\s+/, $s_attached_sessions;
foreach my $session (@ls_attached_sessions){
   print "  + \"$session\" Exec exec gnome-terminal -x screen -d $session \n";
}
附件
Screenshot.png
● 鸣学
回复