I've just tried to create a custom DirectoryStore based on FSDirectoryStore (using a random temporary directory: For a compass.engine.connection of "tmp://path/to/index" I create something like /tmp/tmp-index-4711/path/to/index by overwriting findIndexPath(String)).
The only thing that didn't work out of the box was the path used for locking: a directory called tmp:/path/to/index would be created in the current working directory, e.g. /opt/myapp/index/tmp:/path/to/index.
All that's needed to fix this is changing a few lines in DefaultLuceneSearchEngineStore (see attached patch). All it does is reusing FSDirectoryStore.buildPath(String, String) instead of duplicating this code. However, this code currently only changes behavior for FSDirectoryStore. Additionally, a simple interface defining buildPath(String, String) could be created to let other DirectoryStores use native and simplefs locking with a customizable path.