#!/usr/bin/perl # perl script to convert fluxbox v1.0.0 groups file to v1.1.0+ apps file # ver: 0.1 # usage: perl fbox_groups_to_apps.pl # by kargig [at] void [dot] gr use warnings; use strict; use Env; use File::Copy; my $GROUPSFILE="$HOME/.fluxbox/groups"; my $APPSFILE="$HOME/.fluxbox/apps"; my $BACKAPPS="$HOME/.fluxbox/apps_backup"; my $NAPPSFILE="$HOME/.fluxbox/apps_new"; my @applist; my @list; my @temp; my @exist; my @nonexist; my $app; my $newapp; my $length=0; my $i=0; my $string; my $varvar; if (-e $BACKAPPS) { print "Bakup File Already Exists. Don't run this script twice!\n"; exit; } copy("$APPSFILE","$BACKAPPS"); open (FILEREAD,"<$GROUPSFILE") || die "could not open $GROUPSFILE: $!\n"; while () { @applist = split(/ /); $string=$applist[0]; chomp($string); open (FILEREAD2,"<$APPSFILE") || die "could not open $APPSFILE: $!\n"; @list=; @temp=grep /name=$string/i, @list; close FILEREAD2; $length=@temp; if ($length>0) { $varvar = join(' ', @applist); chomp($varvar); #print "$varvar exists\n"; push(@exist,$varvar); } else { $varvar = join(' ', @applist); chomp($varvar); #print "$varvar doesn't exist\n"; push(@nonexist,$varvar); } } close FILEREAD; foreach (@exist) { open (FILEWRITE,">$NAPPSFILE") || die "could not open $NAPPSFILE: $!\n"; flock FILEWRITE,2; @applist = split(/ /); $length=@applist; $i=0; $app=$applist[0]; chomp($app); open (FILEREAD2,"<$APPSFILE") || die "could not open $APPSFILE: $!\n"; while (my $line = ) { if ($line =~ m/name=$app/i) { print "Adding Group support for $app\n"; print FILEWRITE "[group]\n"; print FILEWRITE "$line"; if ($length >1) { for ($i=1;$i<$length;$i++) { $newapp = $applist[$i]; chomp($newapp); $line =~ s/$app/$newapp/i; $app=$newapp; print FILEWRITE "$line"; } } } else { print FILEWRITE $line; } } close FILEREAD2; flock FILEWRITE,8; close FILEWRITE; rename($NAPPSFILE,$APPSFILE); } foreach (@nonexist) { @applist = split(/ /); $length=@applist; open (FILEWRITE,">>$APPSFILE") || die "could not open $APPSFILE: $!\n"; flock FILEWRITE,2; print FILEWRITE "[group]\n"; for ($i=0;$i<$length;$i++) { chomp($applist[$i]); print FILEWRITE " [app] (name=$applist[$i])\n"; } print FILEWRITE "[end]\n"; flock FILEWRITE,8; close FILEWRITE; }