id = "filezilla" name = "FileZilla" homepage = "https://filezilla-project.org" description = "FileZilla 3 is the next generation (S)FTP-client from the FileZilla project." icon = "SimpleIcons:filezilla" executables = ["filezilla"] [dotfiles] # https://wiki.filezilla-project.org/FAQ, "Where does FileZilla store all its # sites and settings?": "On most systems, sites and settings are stored in the # ~/.config/filezilla directory. The odd exception is Windows, where the # settings are stored in the %APPDATA%/FileZilla directory." # # COptions::GetUnadjustedSettingsDir in src/interface/Options.cpp is the same # thing in code: on Windows CSIDL_APPDATA + "FileZilla"; everywhere else # $XDG_CONFIG_HOME/filezilla/ first, then ~/.config/filezilla/. That is the # XDG config home under all three platform names — including macOS, which # FileZilla treats like any other Unix — so one [configHome] root covers it. # (Windows spells the folder FileZilla rather than filezilla; the filesystem # there is case-insensitive, so the resolved path is the same directory.) # FileZilla falls back to a legacy ~/.filezilla/ when neither XDG location # exists, which only affects installs that never moved. # # The file names come from the same tree: "filezilla.xml" in Options.cpp, # "filters.xml" in filter.cpp. Not listed: queue.sqlite3 (the transfer queue, # queue_storage.cpp) and layout.xml (window geometry, wrapengine.cpp), both # per-machine state. paths = [ "[configHome]/filezilla/filezilla.xml", "[configHome]/filezilla/filters.xml", ] exclude = [] # Both of these hold server credentials as written by the user. # src/interface/sitemanager.cpp keeps the Site Manager in "sitemanager.xml", # and src/interface/recentserverlist.cpp reads # GetSettingsFile("recentservers") into a deque of ServerWithCredentials. # The password is a plain element inside each — see the # annotated fzdefaults.xml example at # https://wiki.filezilla-project.org/Fzdefaults.xml, whose Kiosk mode setting # exists precisely because FileZilla otherwise "will ... write passwords to # disk". secret = [ "[configHome]/filezilla/sitemanager.xml", "[configHome]/filezilla/recentservers.xml", ] # filezilla.xml is worth syncing — it is the whole Settings dialog — but two # of the options in it are passwords. src/interface/Options.cpp's option table # declares { "Proxy password", string, ... } and { "FTP Proxy password", # string, ... }, and COptions::SetXmlValue writes each option as # value, so a line prefix reaches them. # XML has no key_path syntax here, which is why this is a prefix rule. [[dotfiles.secret_paths]] file = "[configHome]/filezilla/filezilla.xml" match = { prefix = [ "", "", ] }