Move and Preserve Links!
I love symlinks! In my home directory, I use them a lot to provide different access paths to bits of information -- e. g. for allowing directories containing photo to be accessed by year, by location and by category. So far, so good -- the trouble started when I began moving or renaming files/folders, rendering any symbolic link possibly pointing at them useless.
As a remedy, I created mvlp
- a kind of file manager which tries to keep symlinks intact when moving or renaming files or directories which have links pointing at them. Currently implemented in FreePascal/Lazarus; other implementation might follow (perhaps in GAMBAS?).
Currently Linux only due to Linux-specific calls for working with symlinks and trashing files, but could probably be extended to support other OSs as well -- as long as they support symbolic links and accessing the desktop environment's trashcan.
Furthermore, moving files/directories across file system boundaries is currently not supported. Shouldn't be hard to implement, though, since we already have recursive copy and delete functions!
Features
General
- Typical file manager layout with a directory tree panel to the left and a directory contents list to the right
- Undo/Redo functionality
Navigation
- Back/Forward
- One level up
- Open link target
File operations
- Rename
- Move to trash (requires
gio
to be installed and inPATH
) - Delete permanently (not undoable -- as the name suggests ;)
- Create new directory
When dragging and dropping an item from the list onto a directory in either panel:
- Move to target
- (Recursively) Copy to target
- Create relative symlink in target
- Create absolute symlink in target
How to Build
- Clone the repository from https://gitlab.com/tcrass/mvpl
- Fire up Lazarus (4.0 or higher)
- Open the
mvpl.lpr
project file in thepascal
subdirectory - Chose your build mode (debug|release)
- When debugging, call the
./mktestroot
script from the project's base directory to re-create a test directory which will be pre-selected by default in debug mode - Hit the run button and find the
mvpl
executable in thepascal
subdirectory