TMSU is a tool for tagging your files. It provides a simple command-line utility for applying tags and a virtual filesystem to give you a tag-based view of your files from any other program.
TMSU does not alter your files in any way: they remain unchanged on disk, or on the network, wherever your put them. TMSU maintains its own database and you simply gain an additional view, which you can mount where you like, based upon the tags you set up.
Before you can get tagging, you'll need to initialise a TMSU database:
$ cd ~
$ tmsu init
This database will be used automatically whenever you are under that directory. In this case we created one under the home directory.
You can tag a file by specifying the file and the list of tags to apply:
$ tmsu tag banana.jpg fruit art year=2015
Or you can apply tags to multiple files:
$ tmsu tag --tags="fruit still-life art" banana.jpg apple.png
You can query for files with or without particular tags:
$ tmsu files fruit and not still-life
Mount the virtual filesystem to an empty directory:
$ mkdir mp
$ tmsu mount mp
A subcommand overview and detail on how to use each subcommand is available via the integrated help:
$ tmsu help
$ tmsu help tags
Documentation is maintained online on the wiki:
Thanks to the efforts of contributors using these platforms, packages are available for the following GNU/Linux distributions:
These packages are not maintained by me and I cannot guarantee their content.
Binary builds for a limited number of architectures and operating system combinations are available:
You will need to ensure that both FUSE and Sqlite3 are installed for the program to function. These packages are typically available with your operating system's package management system. (If you install TMSU using one of the above packages, these should be installed automatically.)
Install the binary
Copy the program binary. The location may be different for your operating system:
$ sudo cp bin/tmsu /usr/bin
Optional: Zsh completion
Copy the Zsh completion file to the Zsh site-functions directory:
$ cp misc/zsh/_tmsu /usr/share/zsh/site-functions
If you would rather build from the source code then please see COMPILING.md
in the root of the repository.
TMSU itself is written and maintained by [Paul Ruane](mailto:Paul Ruane paul@tmsu.org).
The creation of TMSU is motivation in itself, but if you should feel inclinded to make a small gift via Pledgie or Bitcoin then it shall be gratefully received:
1TMSU5TL3Yj6AGP7Wq6uahTfkTSX2nWvM
TMSU is written in Go: http://www.golang.org/
Much of the functionality the program provides is made possible by the FUSE and Sqlite3 libraries, their Go bindings and the Go language standard library.
--include-hidden
option -- thanks to foxcppfiles
command. Note: this release changes how symbolic links are handled. See below.
tags
.
Instead there are results
directories at each level, within which you can
find the set of symbolic links to the tagged files.--no-dereference
option on the relevant subcommands.symlinkFingerprintAlgorithm
to allow the fingerprint
algorithm for symbolic links to be configured separately to regular files.reportDuplicates
can be used to turn this off.--where
option to tag
subcommand to allow tags to be applied to
the set of files matching a query.--value
option on the 'tags' subcommand.--count
option to untagged
.Note: this release changes the database schema by adding additional columns to the 'implication' table. TMSU will automatically upgrade your database upon first use but you may wish to take a backup beforehand.
tmsu-fs-rm
Removes files from the filesystem and TMSUtmsu-fs-mv
Moves a file in the filesystem and updates TMSUtmsu-fs-merge
Merges files (deleting all but the last)Note: This release has some important changes, including the renaming of some options, the introduction of local databases and a switch from absolute to relative paths in the database. Please read the following release notes carefully.
The --untagged option on the 'files' and 'status' subcommands has been replaced by a new 'untagged' subcommand, which should be more intuitive.
The --all option on the 'files', 'tags' and 'values' subcommands has been removed. These commands now list the full set of files/tags/values when run without arguments. For the 'tags' subcommand this replaces the previous behaviour of listing tags for the files in the working directory: use 'tmsu tags *' for approximately the previous behaviour.
The 'repair' subcommand --pretend short option has changed from -p to -P (so that -p can be recycled for --path).
The 'repair' subcommand's argument now specify paths to search for moved files and no longer limit how much of the database is repaired. A new --path argument is provided for reducing the repair to a portion of the database.
A new --manual option on the 'repair' subcommand allows targetted repair of moved files or directories.
The exclamation mark character (!) is no longer permitted within a tag or value name. Please rename tags using the 'rename' command. (Value names will need to be updated manually using the Sqlite3 tooling.)
Added --colour option to the 'tags' subcommand to highlight implied tags.
'tag' subcommand will, by default, no longer explicitly apply tags that are already implied (unless the new --explicit option is specified).
Added subcommand aliases, e.g. 'query' for 'files'.
It is now possible to tag a broken symbolic link: instead of an error this will now be reported as a warning.
It is now possible to remove tags with values via the VFS.
'tag' subcommand can tag multiple files with different tags by reading from standard input by passing an argument of '-'.
TMSU will now automatically use a local database in .tmsu/db in working directory or any parent. The new 'init' subcommand allows a new local database to be initialized. See Switching Databases.
Paths are now stored relative to the .tmsu directory's parent rather than as absolute paths. This allows a branch of the filesystem to be moved around, shared or archived whilst preserving the tagging information. Existing absolute paths can be converted by running a manual repair:
tmsu repair --manual / /
Added 'config' subcommand to view and amend settings.
The 'help' subcommand now wraps textual output to fit the terminal.
Rudimentary Microsoft Windows support (no virtual filesystem yet).
TMSU can now be built without the Makefile.
Bug fixes.
Note: This release changes the database schema to facilitate tag values. To upgrade your existing v0.3.0 database please run the following:
$ cp ~/.tmsu/default.db ~/.tmsu/default.db.backup
$ sqlite3 -init misc/db-upgrade/0.3_to_0.4.0.sql ~/.tmsu/default.db .q
Note: This release changes what tag names are allowed. To ensure the tag names in your existing databases are still valid, please run the following script:
$ cp ~/.tmsu/default.db ~/.tmsu/default.db.backup
$ sqlite3 -init misc/db-upgrade/clean_tag_names.sql ~/.tmsu/default.db
Copyright 2011-2018 Paul Ruane
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.