Can't you derive something from the information you use to display "moving n clusters from x to y"? A graphical representation of that would increase the cool factor quite a bit.
Let me try again. JkDefrag sends a command to the Microsoft defragmentation API to move the 45Gb file. The API starts processing and returns after half an hour, or whatever. During that time JkDefrag has no way of knowing how far the API has progressed. It doesn't know which part of the file has been moved already, and it doesn't know how long the move will take. All it can do is wait for the API to finish. To animate the screen I need information, and there simply isn't any.
The percentage counter at the top of the screen is an attempt of mine to animate the screen a little bit, so users know the program is still running. It estimates completion time from the file size and the disk speed measured so far. The number is unreliable and sometimes way off, but people don't notice it because it's a number. I've experimented a little bit with a graphical progress bar, but that makes the unreliability of the number painfully clear. So I switched back to a plain old simple number.
Putting it differently: I've tried, and this is the best I've come up with so far...