Contact us
Leave a message

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 in PATH)
  • 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 the pascal 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 the pascal subdirectory