Stratus
Stratus is a filesystem overlay that allows you to organize your files by tags, in the style of Flickr, YouTube, Danbooru, etc. I haven't quite gotten around to putting together a spiffy webpage yet, but you can see how it works here.
Download StratusFS 0.62
System Requirements
- Linux kernel 2.6.15 or later
- FUSE 2.6 or later
- Perl [developed on 5.8.8, may work on earlier versions]
- SQLite 3
- Perl modules:
- Fuse 0.07 or later
- DBD-SQLite 1.12 or later
Installation
- Create a directory called .stratus in your home directory.
- Copy the contents of the included skel directory to it.
- Create symbolic links to your media directories (or whatever it is you want to organize) in ~/.stratus/links. This is your file pool.
Use
- Run /path/to/stratusfs /path/to/mountpoint to mount.
- When done, run fusermount -u /path/to/mountpoint to unmount.
- Inbetween, enjoy! See Examples.txt and the screenshot demo for a better idea how to use.
You can also use Brian Clapper's excellent daemonize tool to run stratus as a daemon, ala: /usr/sbin/daemonize /usr/bin/perl /home/me/bin/stratusfs /home/me/stratus/ (Note that all paths must be absolute.) Unmount with fusermount -u as normal.
Bugs and Limitations
- If you add new files to your file pool directories (or rename existing ones), Stratus won't notice until you remount the directory.
- Copying the symlinks around doesn't work; you have to create a new symlink. Konqueror does the right thing.
- Moving a lot of symlinks in rapid succession can cause 'ghost' links to appear with the wrong tags appended to them. These links are harmless and can still be operated on (!), but if you want to get rid of them, you can remount the filesystem.
- If you have thousands upon thousands of files in your file pool like I do, listing the root directory can be... er, slow.
- Probably many other bugs, but in principle your files aren't touched and therefore cannot be harmed. ;)
Future Plans
I'm not a programmer by training or trade, so this should read more as a list of things I could use some help with than a list of things I'm actively working on. :) Patches (or even just ideas) welcome!
- Fix bugs listed above.
- Handle moves/renames (of the real, linked-to) files somehow. (inotify?)
- Handle multiple files in the file pool with the same name (for example, projects/program1/configure and projects/program2/configure) somehow.
- UTF-8 support.
