WISH File Rusher

WISH File Rusher file manager



D. McC 2011 Apr 2: WISH File Rusher 2011.1 is a simple file manager for Linux/Unix file systems, inspired by Henrik Harmsen's FileRunner 2.5.1. It requires Tcl 8.5 or greater, and gnocl. (If you haven't got a Gnocl package handy, look here: Pa Penguin's Icebox: Tcl, Tk, and Gnocl section .) Features include the following, among others:

* Automated backup and restore lists can be quickly created and used (NEW in WISH File Rusher 2011.1).

* Like FileRunner, WISH File Rusher uses the highly efficient "select-and-click" procedure for copying, moving, or linking files (i.e., just select the files from the left or right column and click a button in the middle column), rather than the less efficient "drag-and-drop" procedure.

* Navigation features include bookmarks and Top, Up, Home, Back, Forth, Match, and Go (history list) buttons.

* New subdirectories to any depth can be created simply by adding all subdirectory names to the left or right directory entry line and pressing Enter or clicking New Dir.

* Procedure for associating file types with programs for displaying or editing files is easy and obvious.

* File name, size, "time stamp," permissions (in 3-digit form), owner, and group are displayed at all times in left and right multi-column lists with flexible-width columns.

* Command button allows quick execution and display of output from a specified command using WISH Mini-Console (if installed) on all selected files.

* Size Up button allows quick calculation of total size of selected files or directories.

* Own/Grp and Perms buttons allow quick display and change of file owner, group, and permissions.

* Tar and Untar buttons allow easy creation and extraction of tar archives.

WISH File Rusher 2011.1 is available in a "tar.gz" package including the program, documentation, and a simple installation script for Linux/Unix operating systems, and a .PET package ready for single-click installation on Puppy Linux.

rgf 2008 Mar 19 Tried expanding *.tar.gz, making the recommended path changes, and needed to edit code in the 'colorschemes' part of the script to get it running because I had no ~/.wishes directory. I've experimented with the script and like much of its functionality. I did find, however, clicking the 'HELP' button generates an 'invalid command userhelp', and clicking on a column title button generates an 'invalid command softfiles' (actually 'sortfiles'). Am I missing something?

D. McC 2008 Mar 21: No, you're identifying bugs that I evidently didn't fix before this initial release. I'll put out a quick bugfix very soon, but you can just substitute the code snippets below if it's more convenient. Anyway, I'm glad you like much of the functionality, which I guess you figured out without needing the "HELP" button to work right!

1. The application is supposed to create the ~/.wishes directory automatically if it doesn't exist. Didn't it? rgf It created ~/.wishes but not ~/.wishes/colorschemes/.

2. Some names of procs and things related to user help were changed during development, and I forgot to make the changes consistent with one another. (Sorry--I use WISH File Rusher often, but I missed this since I don't need the user help!) This can be fixed by inserting the following code at line 231 of the "wishrush" executable, in place of the existing "USER HELP" section:


 button .help -text "HELP" -command rushhelp
 set helpfile [file join $docdir rushhelp_link.txt] ; # User Help Guide

 # Procedure for setting up user help display:

 proc rushhelp {} {
        global helpon helpfile libdir
        if {$helpon == 0} {
                source [file join $libdir wishuhelp.tcl]
                set helpon 1
        uhelp ; # Set up user help window--from WISH User Help
        wm title .uhelp "WISH File Rusher - User Help"
        set linkup [open $helpfile r]
        set helpcontents [read $linkup]
        close $linkup
        .uhelp.tx insert 1.0 $helpcontents
        helplink .uhelp.tx; # Show links in text--from WISH User Help
        .uhelp.tx mark set insert 1.0
        .uhelp.tx configure -state disabled

3. The "sortfiles" procedure, had it been written, would have sorted the file listings by any specified column, instead of by name only. Oops, I forgot to write it, and now I guess maybe it wouldn't be useful enough to bother with. (If anyone thinks it would, please let me know and I'll see about including it in the next version.) At line 823 in the "FILE LISTS" section, you can substitute the following code to make the column-title buttons in the ttk::treeview widgets do nothing instead of giving you error messages:

 foreach side [list left right] {
        .tree($side) heading Name -text Name
        .tree($side) column Name -width 180 -minwidth 180
        .tree($side) heading Size -text Size
        .tree($side) column Size -width 80 -minwidth 80 -anchor e
        .tree($side) heading "Time-stamp" -text "Time-stamp"
        .tree($side) column Time-stamp -width 120 -minwidth 120
        .tree($side) heading Per -text Per
        .tree($side) column Per -width 32 -minwidth 32
        .tree($side) heading Own -text Own
        .tree($side) column Own -width 40 -minwidth 40

rgf 2008 Mar 21: Thanks for the info. I fixed #1, #2, and hacked the following for #3

 # Procedure to sort a file list by column data
 proc sortfiles {side sortColName} {
   set treeChildren [.tree($side) children {}]
   #  empty tree -> no action
   if {[llength $treeChildren] eq 0 } {return}
   #  find column to sort on
   set columnNames [lindex [.tree($side) configure -columns] end]
   set sortColNum [lsearch -exact $columnNames $sortColName]
   #  can't find column -> no action
   if {$sortColNum eq -1} {return}
   #  collect column values from tree(side)
   foreach i $treeChildren {
     foreach {opt values} [.tree($side) item $i] {
       if {$opt eq "-values"} {set treeData($i) $values}
   #  fill a list with the sort data and append an index label; sort
   foreach i [array names treeData] {
     lappend sortColData "[lindex $treeData($i) $sortColNum],$i"
   set sortedColData [lsort -dictionary $sortColData]
   #  recover indices in sorted order
   foreach d $sortedColData {
     lappend sortOrder [lindex [split $d ","] end]
   #  replace displayed tree data with sorted values
   .tree($side) delete [.tree($side) children {}]
   foreach i $sortOrder {
     .tree($side) insert {} end -values $treeData($i)

D. McC 2008 Mar 24: Hey, thanks! Now just let me know if you actually find it useful to be able to sort the file listings by anything other than the name. rgf I find it helpful to sort by size and date, for archiving. D. McC 2008 Mar 26: OK, I'll include that in the next version.

Update 2010 Apr 13: It's included now.

rgf 2009 Mar 5: I just tried to download 'WISH File Rusher 2009' but received a page (or file) is no longer available ...?

D. McC 2010 Apr 13: Ugh. I've been busy with non-computing things for many months, but version 2010 is available at last (see above). (Edit 2011 Apr 2: now version 2011.1.)

WJG (06/06/10) Downloaded it and installed it -nice.