id = "pidgin" name = "Pidgin" homepage = "https://pidgin.im" # pidgin.im's own description meta tag, first sentence. description = "Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously." # The purple pigeon, at the largest size pidgin.im publishes. icon = "https://pidgin.im/favicon/favicon-192.png" executables = ["pidgin", "finch", "purple-remote"] # pidgin.im: "Pidgin runs on Windows, Linux, and other UNIX-like operating # systems. Looking for Pidgin for macOS? Try Adium!" — so no macOS. platforms = ["linux", "windows"] [dotfiles] # pidgin(1), FILES section (Ubuntu manpage for the packaged 2.14 build, # https://manpages.ubuntu.com/manpages/noble/man1/pidgin.1.html): # # ~/.purple/blist.xml the buddy list. # ~/.purple/accounts.xml information about the user's accounts. # ~/.purple/pounces.xml stores the user's buddy pounces. # ~/.purple/prefs.xml Pidgin's configuration file. # ~/.purple/status.xml stores the user's away messages. # ~/.purple/logs/PROTOCOL/ACCOUNT/BUDDYNAME/DATE.{html,txt} conversation logs. # # Only the Unix location is listed. The Windows build keeps the same directory # tree somewhere else and pidgin.im does not say where, so guessing a second # spelling here would be inventing a path; a Windows consumer simply finds # nothing at `~/.purple` and skips it. paths = ["~/.purple/"] # From the same FILES list: `logs/` is the conversation archive, which is # history rather than configuration. `icons/` and `certificates/` are fetched # buddy icons and pinned TLS certificates a machine collects as it connects. exclude = [ "~/.purple/logs/", "~/.purple/icons/", "~/.purple/certificates/", ] # https://developer.pidgin.im/wiki/PlainTextPasswords, the project's own page # on the subject: "Libpurple 2 stores passwords unencrypted in the accounts.xml # file." The rest of that file is the account list — usernames, protocols, # aliases — but the schema has no XML matcher (`format` covers toml, yaml and # json only), so the file cannot be split field by field and the whole thing is # treated as the credential it partly is. It sits inside the directory `paths` # covers, so a consumer has to let secret win over the directory. secret = ["~/.purple/accounts.xml"] # No machine_lines: prefs.xml is XML, which `match` cannot read, and its # contents — conversation fonts, sound settings, the buddy list layout — are # preferences a user wants on every machine anyway.