专门控制 screen 的菜单 作者 jsosic
发表于 : 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";
}