id = "transmission" name = "Transmission" homepage = "https://transmissionbt.com" description = "A fast, easy and free BitTorrent client for Mac, Windows and Linux." icon = "SimpleIcons:transmission" # The clients that have a command line; the macOS app has none, so it is # reached through the paths rather than through a name here. executables = ["transmission-daemon", "transmission-remote", "transmission-cli", "transmission-gtk", "transmission-qt"] [dotfiles] # The project's own docs/Configuration-Files.md, "Locations", is the source for # every path below. # # macOS defaults: "Application settings — # $HOME/Library/Preferences/org.m0k.transmission.plist" (and "Per-torrent # settings — $HOME/Library/Application Support/Transmission", which is the # .torrent and .resume store rather than configuration, so it is left out). # # Linux/GTK defaults: "GTK+/Qt client settings — $HOME/.config/transmission", # "Daemon settings — $HOME/.config/transmission-daemon", "CLI settings — # $HOME/.config/transmission-cli". # # Windows defaults: "Qt client settings — %LOCALAPPDATA%/transmission", # "Daemon settings — %LOCALAPPDATA%/transmission-daemon". # # The file inside each of those folders is settings.json: "This is a # JSON-encoded file that holds all the client's settings and preferences." # Windows uses %LOCALAPPDATA% where Linux uses the XDG config directory, so # these are genuinely different places rather than one place under three names # and each spelling is written out; a consumer skips the ones that do not # exist. The folder can also be moved with $TRANSMISSION_HOME. paths = [ "[preferences]/org.m0k.transmission.plist", "~/.config/transmission/settings.json", "~/.config/transmission-daemon/settings.json", "%LOCALAPPDATA%/transmission/settings.json", "%LOCALAPPDATA%/transmission-daemon/settings.json", ] # The rest of a configuration folder is state, and none of it is named above: # stats.json (session byte counters), the lock file, torrents/ and resume/, and # blocklists/ with its generated .bin files. exclude = [] # No whole-file credential: settings.json is settings end to end, and the one # credential in it is a field, named below. secret = [] # rpc-password is the password for the daemon's web interface and RPC port. # Transmission rewrites it as a salted hash on the first run after it is set, # but a hash of the user's password is still the thing that authenticates # against that daemon, so it is held back rather than synced as content. # The rule names every spelling of settings.json in `paths`, because a rule # that named only the Unix one would not run on Windows. [[dotfiles.secret_paths]] file = [ "~/.config/transmission/settings.json", "~/.config/transmission-daemon/settings.json", "%LOCALAPPDATA%/transmission/settings.json", "%LOCALAPPDATA%/transmission-daemon/settings.json", ] match = { key_path = ["rpc-password"] } # The three directory settings are absolute paths into one machine's disk — # "/home/dev/Downloads", "D:\\Torrents" — and pointing another machine's # Transmission at a directory that does not exist there is how downloads end up # failing on start. They are worth keeping rather than discarding, so that the # device they belong to can be restored: scope = backup. [[dotfiles.machine_lines]] file = [ "~/.config/transmission/settings.json", "~/.config/transmission-daemon/settings.json", "%LOCALAPPDATA%/transmission/settings.json", "%LOCALAPPDATA%/transmission-daemon/settings.json", ] match = { key_path = ["download-dir", "incomplete-dir", "watch-dir"] } scope = "backup"