[{"uri":"https://pidgin.im/development/building/","title":"Building","tags":[],"description":"","content":"Building Pidgin can be tricky, but hopefully we’ve made it pretty clear in the following pages. First thing first is that we you need to decide which version of Pidgin you are going to build.\nIf you are just trying to build Pidgin to run it, then you probably want the 2.x.y release which is our stable version.\nIf you’re interested in developing Pidgin itself or just want to live on the edge then you may want to try out the development version which we call 3.0.0.\n"},{"uri":"https://pidgin.im/help/protocols/","title":"Services (Protocols)","tags":[],"description":"","content":"This group of pages houses Service-specific questions.\n"},{"uri":"https://pidgin.im/help/protocols/bonjour/","title":"Bonjour","tags":[],"description":"","content":"What is Bonjour? Bonjour is a serverless messaging protocol developed by Apple, Inc. (Apple developer information on Bonjour) based on XMPP that operates only on a local network. This XMPP extension defines the protocol.\nCan I use Windows Pidgin for Bonjour? Yes. You must install Apple’s Bonjour Print Services for Windows to use this functionality.\n"},{"uri":"https://pidgin.im/install/","title":"Install","tags":[],"description":"","content":"Pidgin Windows \nThis version of Pidgin downloads an appropriate version of GTK. GTK is now installed locally for Pidgin, and not system-wide, thus Pidgin will not interfere with other GTK apps on your system.\nIf you would like to have GTK included in the installer, we have an offline installer that bundles everything except spell-checking dictionaries.\nLinux We do not provide pre-built packages for Linux and Unix distributions. We recommend installing Pidgin using your operating system’s standard package management tool.\nIf your operating system doesn’t provide a pre-built package, or if their pre-built package is out of date and you want to upgrade, then you can try building from source.\nDebian/Ubuntu sudo apt update sudo apt install pidgin FreeBSD pkg install pidgin macOS For a native Mac OS X experience we recommend Adium, which uses libpurple (the core of Pidgin) for much of its protocol support.\nIf you’re sure you want to use Pidgin on OS X, you may find the packages provided through Homebrew, pkgin, Fink or Macports more convenient than compiling from source. Please note, we do not provide support for issues related to installing Homebrew, pkgin, Fink, Macports, or their packages of Pidgin. Contact those projects directly with questions or concerns.\nIf you’re sure you want to use Pidgin on OS X and you don’t want to use Homebrew, Fink or Macports, you can download the Pidgin source and compile.\nSource \nThis download is for the source code of Pidgin 2.13.0.\nIf you want to use Pidgin, you should either download and use our Windows installer or look for pre-built packages from your operating system distribution.\nIf you are looking to modify Pidgin, you may want to look at our instructions for checking out the code from our repository.\nFinch Linux We do not provide pre-built packages for Linux and Unix distributions. We recommend installing Pidgin using your operating system’s standard package management tool.\nIf your operating system doesn’t provide a pre-built package, or if their pre-built package is out of date and you want to upgrade, then you can try building from source.\nDebian/Ubuntu sudo apt update sudo apt install finch FreeBSD pkg install finch "},{"uri":"https://pidgin.im/development/contributing/","title":"Contributing","tags":[],"description":"","content":"Pidgin is a huge project with a ton of things to be done, even if you’re not a coder. Below is a short list of things you can do to help get involved!!\n Triage the issue tracker Try to reproduce described bugs. If you can find an easy way to reproduce, leave a comment to explain how to do it. Find/mark/close duplicates. Seriously, even just one or two duplicates found and properly marked is a huge help to our backlog! Suggest patches be turned into pull requests, or bring patches to the attention of the core dev team. Help users IRC: #pidgin on freenode XMPP (formerly Jabber): devel@conference.pidgin.im Mailing Lists: support@pidgin.im devel@pidgin.im Proofread the documentation–this is a really, really easy way to start! Help facilitate translators and translations via transifex help translate this repo other suggestions? Convert wiki pages to markdown for inclusion in this repo. Walk the links on ThirdPartyPlugins and mark broken ones as such. This is another really easy way to start! Participate in discussion on IRC, XMPP, and/or the Mailing Lists. For the coders out there:\n Find/fix build warnings Find/fix bugs on your own or via the issue tracker Participate in design discussions Add cool features! "},{"uri":"https://pidgin.im/plugins/","title":"Plugins","tags":[],"description":"","content":"\r\rThis page contains a list of plugins from trusted authors and the community. If you believe a plugin should be on this list, please get in touch with us or open a pull request with the update.\r\r\r\r\rWhat makes an author trusted you ask? Basically they've been working with us for a long time and they put out some great software!\r\r\r\rCreated by the pidgin community\r\r\r\r#plugin-filters, #search-link-wrap {\rdisplay: none;\r}\r\r\rAll\r\r\r\rTrusted\r\r\r\rCommunity\r\r\rProtocol\r\rSecurity and Privacy\r\rNotifications\r\rProfile and Status Updates\r\rNow Playing\r\rInterface Tweaks\r\rAccounts and Logs\r\rMiscellaneous\r\r\r\r\r\rName\r\rType\rInfo\rMaintainer\r\r\r \r\rAmazon Chime\r\r\r\r\rProtocol\r\rOnline meeting and video conferencing\r\rAmazon Web Services - Labs\r\r\r \r\rBattle.net Classic\r\r\r\r\rProtocol\r\rBlizzard’s gaming network: notably for StarCraft, Diablo II, and WarCraft III\r\rnmbook\r\r\r\rBattle.net v2\r\r\r\r\rProtocol\r\rBlizzard’s gaming network for WoW, Overwatch and others\r\rEionRobb\r\r\r\rCampfire\r\r\r\r\rProtocol\r\rProtocol plugin for Basecamp’s Campfire IM\r\rjrfoell\r\r\r \r\rDeltachat\r\r\r\r\rProtocol\r\rIM over email\r\rccpp\r\r\r \r\rDiscord\r\r\r\r\rProtocol\r\rText chat for gamers\r\rEionRobb\r\r\r \r\rDocker\r\r\r\r\rProtocol\r\rSend stdin commands to Docker containers\r\rsamuelkarp\r\r\r \r\rF-List\r\r\r\r\rProtocol\r\rF-List roleplaying community\r\rflist-pidgin\r\r\r \r\rFacebook\r\r\r\r\rProtocol\r\rFacebook chat\r\rdequis\r\r\r\rGammu\r\r\r\r\rProtocol\r\rSend SMS through your feature phone via usb/serial/bluetooth/irda\r\rEionRobb\r\r\r \r\rGroupMe\r\r\r\r\rProtocol\r\rGroupMe group messaging\r\rAlyssa Rosenzweig\r\r\r\rHangouts\r\r\r\r\rProtocol\r\rAlternative plugin for Google Hangouts\r\rEionRobb\r\r\r\rHeroes of Newerth\r\r\r\r\rProtocol\r\rOnline video game\r\rtheli-ua\r\r\r \r\rICQ WIM (IcyQue)\r\r\r\r\rProtocol\r\rReplacement ICQ plugin\r\rEionRobb\r\r\r\rInternet Citizen's Band (ICB)\r\r\r\r\rProtocol\r\rICB\r\rpelotasplus\r\r\r \r\rJRC\r\r\r\r\rProtocol\r\rlibpurple implementation of a JRChat client\r\rtelyn\r\r\r \r\rLINE\r\r\r\r\rProtocol\r\rMobile SMS replacement\r\rNaver\r\r\r\rMail.ru Agent (mrim-prpl)\r\r\r\r\rProtocol\r\rRussian network\r\rmrim-prpl-team\r\r\r\rMail.ru Agent (pidgin-mra)\r\r\r\r\rProtocol\r\rRussian network\r\rdreadatour\r\r\r\rMatrix\r\r\r\r\rProtocol\r\rDistributed IM\r\rmatrix-org\r\r\r\rMattermost\r\r\r\r\rProtocol\r\rOpen-source replacement for Slack\r\rEionRobb\r\r\r \r\rMicroblog\r\r\r\r\rProtocol\r\rTwitter/Identica/Laconica updates\r\rfr0nk\r\r\r \r\rmsn-pecan\r\r\r\r\rProtocol\r\rAlternative MSN access\r\rfelipec\r\r\r \r\rMumble\r\r\r\r\rProtocol\r\rGaming voice chat\r\rpetteripitkanen\r\r\r \r\rNateOn\r\r\r\r\rProtocol\r\rKorean network\r\rkaisyu\r\r\r \r\rNetNexus\r\r\r\r\rProtocol\r\rnetnexus.com’s chatrooms\r\rEionRobb\r\r\r\rNetsoul\r\r\r\r\rProtocol\r\rFrench network\r\rwlallemand\r\r\r \r\rNing\r\r\r\r\rProtocol\r\rNing-based social networks\r\rEionRobb\r\r\r\rOkCupid\r\r\r\r\rProtocol\r\rOKCupid dating website\r\rEionRobb\r\r\r \r\rOmegle\r\r\r\r\rProtocol\r\romegle.com’s web-based random chat\r\rEionRobb\r\r\r \r\rPidgin-Twitter\r\r\r\r\rProtocol\r\rTwitter plugin\r\rhoneyplanet\r\r\r\rPubNub\r\r\r\r\rProtocol\r\rReal-time messaging system\r\rpubnub\r\r\r\rPulse SMS\r\r\r\r\rProtocol\r\rSMS messaging via your Android phone\r\rEionRobb\r\r\r\rpurple-feed\r\r\r\r\rProtocol\r\rRSS and Atom feed reader\r\rmoraxy\r\r\r\rPushbullet\r\r\r\r\rProtocol\r\rSend pushes and SMS (Android-only) via Pushbullet\r\rEionRobb\r\r\r \r\rQQ (libqq-pidgin)\r\r\r\r\rProtocol\r\rQQ protocol support\r\rlibqq-pidgin\r\r\r\rQQ (pidgin-lwqq)\r\r\r\r\rProtocol\r\rQQ protocol support (Based on WebQQ)\r\rxiehuc\r\r\r \r\rRediffbol\r\r\r\r\rProtocol\r\rIndian network\r\rArnold Noronha\r\r\r\rRocket.Chat\r\r\r\r\rProtocol\r\rOpen-source replacement for Slack\r\rEionRobb\r\r\r \r\rSignal\r\r\r\r\rProtocol\r\rSecure mobile messaging\r\rhoehermann\r\r\r\rSkype\r\r\r\r\rProtocol\r\rSkype IM protocol support\r\rEionRobb\r\r\r\rSlack\r\r\r\r\rProtocol\r\rTeam collaboration tool\r\rdylex\r\r\r \r\rSIPE\r\r\r\r\rProtocol\r\rMicrosoft Office Communicator, Reuters Messaging\r\rStefan Becker\r\r\r\rSMS\r\r\r\r\rProtocol\r\rPurple SMS plugin using ModemManager\r\rLibrem5\r\r\r \r\rSpinp\r\r\r\r\rProtocol\r\rDecentralised chat\r\rfarcdev\r\r\r\rSteam IM (mobile)\r\r\r\r\rProtocol\r\rSteam Friends gaming network\r\rEionRobb\r\r\r\rSteam IM (native)\r\r\r\r\rProtocol\r\rSteam Friends gaming network\r\rseishun\r\r\r\rTelegram\r\r\r\r\rProtocol\r\rSecure messenger\r\rmajn\r\r\r \r\rThreema\r\r\r\r\rProtocol\r\rThreema\r\rhbruintjes\r\r\r \r\rTorChat\r\r\r\r\rProtocol\r\rp2p instant messaging through Tor hidden service tunnels\r\rprof7bit\r\r\r \r\rTox\r\r\r\r\rProtocol\r\rSecure instant messaging via Tox protocol\r\rEionRobb\r\r\r \r\rTrillian (IMPP)\r\r\r\r\rProtocol\r\rTrillian Astra protocol\r\rHi-Angel\r\r\r\rTwitter Protocol\r\r\r\r\rProtocol\r\rAccess Twitter (and status.net / identi.ca) feeds like chat rooms\r\rmikeage\r\r\r \r\rWechat\r\r\r\r\rProtocol\r\rWechat Protocol Support\r\rsbwtw\r\r\r\rWhatsApp\r\r\r\r\rProtocol\r\rWhatsApp IM protocol\r\rdavidgfnet\r\r\r \r\rWhatsApp (purple-gowhatsapp)\r\r\r\r\rProtocol\r\rWhatsApp IM protocol\r\rhoehermann\r\r\r \r\rWinMX Peer Network\r\r\r\r\rProtocol\r\rFile sharing network\r\rranma42\r\r\r\rYahoo\r\r\r\r\rProtocol\r\rReplacement plugin for Yahoo 2016\r\rEionRobb\r\r\r \r\rAuthorization Blocker\r\r\r\r\rSecurity and Privacy\r\rThe plugin blocks the first authorization request of a contact and answers with the order to ask for authorization again. This helps to prevent spam on ICQ accounts.\r\rKonrad Gräfe\r\r\r \r\rbOt_tOOls\r\r\r\r\rSecurity and Privacy\r\rConfigurable plugin for auto-ignoring yahoo spammers\r\rEric Dziewa\r\r\r \r\rBot Sentry\r\r\r\r\rSecurity and Privacy\r\rStop spam bots\r\rdeckrider\r\r\r \r\rlurch\r\r\r\r\rSecurity and Privacy\r\rEncrypts XMPP conversations using OMEMO\r\rgkdr\r\r\r \r\rMaster Password\r\r\r\r\rSecurity and Privacy\r\rProtects account passwords by a master password.\r\rKonrad Gräfe\r\r\r \r\rOff-the-Record Messaging (OTR)\r\r\r\r\rSecurity and Privacy\r\rEncrypts conversations and provides security even when keys are compromised\r\rOTR Development Team\r\r\r \r\rPidgin-Encryption\r\r\r\r\rSecurity and Privacy\r\rEncrypts conversations using stored RSA keys\r\robobo\r\r\r \r\rpidgin-gnome-keyring\r\r\r\r\rSecurity and Privacy\r\rStores account passwords in the system keyring instead of as plaintext\r\raebrahim\r\r\r \r\rPidgin-GPG\r\r\r\r\rSecurity and Privacy\r\rPidgin GPG/OPENPGP (XEP-0027) Plugin\r\rAlex Segler\r\r\r \r\rPidgin-Paranoia\r\r\r\r\rSecurity and Privacy\r\rEncrypts conversations using one-time pads\r\rboognu, nowic\r\r\r \r\rPidgin-privacy-please\r\r\r\r\rSecurity and Privacy\r\rStop spam bots\r\rcockroach\r\r\r \r\rpidgin-wincred\r\r\r\r\rSecurity and Privacy\r\rSave passwords as windows credentials instead of as plaintext\r\raebrahim\r\r\r \r\rAudible Alerts\r\r\r\r\rNotifications\r\rAudible notification of a received IM by reading the buddy’s screen name\r\rmeiser024\r\r\r \r\rBluetooth Notifier\r\r\r\r\rNotifications\r\rSends new chat messages directly to your cell phone or any other Bluetooth-enabled device\r\rholthuis\r\r\r \r\rChatpop\r\r\r\r\rNotifications\r\rShow open chats when receiving a persistent chat message\r\rteleshoes\r\r\r \r\rCommand-execute\r\r\r\r\rNotifications\r\rExecutes a command on a new message and works for both Pidgin and Finch\r\rtymm\r\r\r \r\rCommand-notification\r\r\r\r\rNotifications\r\rBased off Led-notification this plugin will execute a command on receiving a new message\r\rGuySoft\r\r\r \r\rpidgin-im-gnome-shell-extension\r\r\r\r\rNotifications\r\rMake Pidgin IM conversations appear in the Gnome Shell message tray\r\rmuffinmad\r\r\r \r\rGuifications\r\r\r\r\rNotifications\r\rProvides toaster popup notifications\r\rGary Kramlich\r\r\r \r\rIM Pusher\r\r\r\r\rNotifications\r\rAn extension of Notifo Notifications, pushes your messages at specified statuses (e.g. when you are away), two push services (notifo & pushme.to) are supported\r\rcoolwanglu\r\r\r \r\rKeyboard LED Notification\r\r\r\r\rNotifications\r\rLegLedNot is a keyboard LED notification plugin for Pidgin\r\rGabriel Cséfalvay\r\r\r \r\rKNotifications\r\r\r\r\rNotifications\r\rPerl plugin that provides KDE 4 notifications\r\rmrovi\r\r\r \r\rLed-notification\r\r\r\r\rNotifications\r\rProvides notifications with laptops’ extra LEDs and similar\r\rSimo Mattila\r\r\r \r\rled-notification\r\r\r\r\rNotifications\r\rFork of Led-notification. Adds support for ThinkPads\r\rSitwon\r\r\r \r\rMX610-notification\r\r\r\r\rNotifications\r\rProvides notifications with Logitech MX610’s IM led\r\rSimo Mattila\r\r\r \r\rpidgin-capsnot\r\r\r\r\rNotifications\r\rKeyboard LED Notification (caps-lock/num-lock/scroll-lock) for Pidgin/Finch\r\rEionRobb\r\r\r \r\rPidgin-dock\r\r\r\r\rNotifications\r\rEmulate Mac OS X - dock behaviour with cairo-dock\r\rSergey Klimov\r\r\r \r\rPidgin Advanced Sound Notification\r\r\r\r\rNotifications\r\rThis plugin adds sounds for some notifications to pidgin (Incoming file transfer, Authentication requested, etc.)\r\rKonrad Gräfe\r\r\r \r\rPidginSnarl\r\r\r\r\rNotifications\r\rNotifications using Snarl on Windows\r\rsven\r\r\r \r\rpurple-libnotify+\r\r\r\r\rNotifications\r\rProvides libnotify notifications\r\rsardemff7\r\r\r \r\rSmart Ear\r\r\r\r\rNotifications\r\rCustomized per-buddy sound events\r\rMatt Perry\r\r\r \r\rWindows 8 Toast Notifications\r\r\r\r\rNotifications\r\rNative win8 toast notifications\r\rAdrian Keenan\r\r\r \r\rWindows Toast Notifications\r\r\r\r\rNotifications\r\rShows notifications when receiving messages, in the standard Windows design\r\rChristian Galla\r\r\r \r\rAway-on-Lock\r\r\r\r\rProfile and Status Updates\r\rSets you as away when the screensaver gets activated. (Linux Gnome and KDE4)\r\r\r\r \r\rFull Screen Busy\r\r\r\r\rProfile and Status Updates\r\rSets the status to busy (or any saved status) when a full screen application is detected. (Windows)\r\r\r\r \r\rGoogle Shared Status\r\r\r\r\rProfile and Status Updates\r\rAdds Google Shared Status compatibility that permit to set the status for all the resources connected. This allows to go Invisible…\r\r\r\r \r\rGoogle Talk Invisible\r\r\r\r\rProfile and Status Updates\r\rAdds the ability to go invisible with Google Talk (XMPP/Jabber protocol)\r\r\r\r \r\rIRC Away\r\r\r\r\rProfile and Status Updates\r\rChanges your IRC nick to indicate you are away.\r\r\r\r \r\rIRC Status\r\r\r\r\rProfile and Status Updates\r\rChanges your IRC nick to indicate you are away\r\rrickyepoderi\r\r\r \r\rJabber Pseudo Invisibility\r\r\r\r\rProfile and Status Updates\r\rAdds a pseudo invisible status for Jabber/XMPP accounts namely you result offline but you can monitor the status of your favourite buddies (and start conversations). Read carefully How to Use!!!\r\r\r\r \r\rLast.FM Plugin\r\r\r\r\rProfile and Status Updates\r\rShows information from your Last.FM / Audioscrobbler profile in your status message.\r\rnatureshadow\r\r\r \r\rLock 'n' Roll\r\r\r\r\rProfile and Status Updates\r\rSet any active accounts to Away (with a user-defined message if applicable) when the workstation locks, and back to Available when it is unlocked. If an account has an existing away message set, Lock ‘n’ Roll leaves it alone. (Windows)\r\rDanielLaberge\r\r\r \r\rPidgin-Countdown\r\r\r\r\rProfile and Status Updates\r\rSets your status counting down to a specific date & time.\r\rStephen English\r\r\r \r\rPidgin-Identica-Status\r\r\r\r\rProfile and Status Updates\r\rUse a feed from identi.ca as your Pidgin status.\r\r\r\r \r\rPidgin-Twitter-Status\r\r\r\r\rProfile and Status Updates\r\rUse a feed from Twitter as your Pidgin status. No OAuth required. Works via RSS.\r\rguysoft\r\r\r \r\rPurple-Presence\r\r\r\r\rProfile and Status Updates\r\rProvides GnomeSession Presence status support to Purple\r\rsardemff7\r\r\r \r\rPurple Twitter Syncup\r\r\r\r\rProfile and Status Updates\r\rSet User Tweet as Pidgin Status. Standalone application using reliable OAuth Authentication and DBus.\r\ryogeshpathade\r\r\r \r\rRoster\r\r\r\r\rProfile and Status Updates\r\rcontact suggestions for Jabber, as described in XEP-0144\r\rdzzinstant\r\r\r \r\rScroll Lock Indicator\r\r\r\r\rProfile and Status Updates\r\rFlashes scroll/caps/num lock light on new message\r\rdotdias\r\r\r \r\rSilence\r\r\r\r\rProfile and Status Updates\r\rMutes everything\r\rmegacoder\r\r\r \r\rSluggish\r\r\r\r\rProfile and Status Updates\r\rSluggish will delay changing your status to Available until you have been back at your keyboard for several minutes.\r\rjamesboston\r\r\r \r\rStatus Hot Keys\r\r\r\r\rProfile and Status Updates\r\rGlobal shortcut keys to set status and manipulate the buddy window visibility\r\rcastledragmire\r\r\r \r\rStatus RSS\r\r\r\r\rProfile and Status Updates\r\rUpdate status from RSS feed\r\r\r\r \r\rStatus to Twitter\r\r\r\r\rProfile and Status Updates\r\rUpdate Twitter with your Pidgin Status\r\r\r\r \r\rTwitter in your Profile\r\r\r\r\rProfile and Status Updates\r\rInsert your Twitter history into your profile. It gets updated periodically.\r\r\r\r \r\rxssidle\r\r\r\r\rProfile and Status Updates\r\rSet idle time based on information from X11 Screen Saver (such as xscreensaver).\r\rmehturt\r\r\r \r\rMusicInfo\r\r\r\r\rNow Playing\r\rDisplays the currently-playing music in your status message and profile. Winamp API compatible.\r\r\r\r \r\rMusic Tracker\r\r\r\r\rNow Playing\r\rDisplays the music track currently playing in the status message. Supports a wide range of audio players.\r\r\r\r \r\rPidgin-Audacious-Remote\r\r\r\r\rNow Playing\r\rUpdates the status message using custom information retrieved from Audacious Media Player. This plugin also allows control over Audacious Media Player from the Pidgin conversation windows (play, pause, next…).\r\r\r\r \r\rPidgin current track\r\r\r\r\rNow Playing\r\rCurrent Track plugin will update your Pidgin user info, available message or away message, and buddy icon from iTunes, Winamp, RealPlayer, WMP, Musicmatch, MediaMonkey, XMPlay, Yahoo! & Foobar2000 in Windows and XMMS, Rhythmbox, & Amarok in Linux.\r\r\r\r \r\rpilt spotify\r\r\r\r\rNow Playing\r\r‘now listening’ plugin for spotify\r\r\r\r \r\rYuLastFM\r\r\r\r\rNow Playing\r\rYu Last.fm Pidgin tune status plugin.\r\r\r\r \r\rAdium to Pidgin themes converter\r\r\r\r\rInterface Tweaks\r\rAllows to convert themes from www.adiumxtras.com\r\r\r\r \r\rAttention Button\r\r\r\r\rInterface Tweaks\r\rHide the attention button\r\r\r\r \r\rAutohide\r\r\r\r\rInterface Tweaks\r\rBuddy list improvements like autohide, always on top and hide min/max buttons\r\r\r\r \r\rAutojoin Chat\r\r\r\r\rInterface Tweaks\r\rSkips the ‘x invited you to join a chat’ message\r\rEionRobb\r\r\r \r\rautoresize\r\r\r\r\rInterface Tweaks\r\rAutomatically update the buddy list to fit its contents (vertically).\r\r\r\r \r\rCharacter Counter\r\r\r\r\rInterface Tweaks\r\rPlugin for displaying the character count of the current message.\r\rKonrad Gräfe\r\r\r \r\rExpand\r\r\r\r\rInterface Tweaks\r\rAutomatically expand shortened URLs. No more rick-rolling!\r\r\r\r \r\rExtended Buddy List Sort\r\r\r\r\rInterface Tweaks\r\rAdds more buddy list sorting options\r\rKonrad Gräfe\r\r\r \r\rGuiops\r\r\r\r\rInterface Tweaks\r\rGUIOps plugin provides more GUI customization options\r\r\r\r \r\rHide Chat\r\r\r\r\rInterface Tweaks\r\rHides the window/tab for a channel when the account is connected. (useful for auto-join channels)\r\rKonrad Gräfe\r\r\r \r\rIgnore Nick Change\r\r\r\r\rInterface Tweaks\r\rHides the “X is now known as Y” messages in chats\r\r\r\r \r\rIRC Format\r\r\r\r\rInterface Tweaks\r\rA Pidgin/libpurple plugin that lets you send and receive bold/underline/italic/colored text in IRC chats/IMs.\r\r\r\r \r\rkeys per minute\r\r\r\r\rInterface Tweaks\r\rCounts the keys per minute while you are typing a message and displays it.\r\r\r\r \r\rLeftify tabs\r\r\r\r\rInterface Tweaks\r\rMoves a conversation tab to the leftmost position in the tab bar whenever a message arrives.\r\r\r\r \r\rMacOS Integration\r\r\r\r\rInterface Tweaks\r\rAdds native menu and notifications for OSX.\r\r\r\r \r\rMacOS Pidgin Bundle\r\r\r\r\rInterface Tweaks\r\rAdds dock icons for Pidgin on OSX\r\r\r\r \r\rManual Resize\r\r\r\r\rInterface Tweaks\r\rAllows manually resizing the conversation window entry area.\r\r\r\r \r\rMedia Emblems\r\r\r\r\rInterface Tweaks\r\rAdds emblems to the buddy list to show if a user supports Voice or Video calls.\r\r\r\r \r\rpidgin-cmds\r\r\r\r\rInterface Tweaks\r\rVarious conversation commands\r\r\r\r \r\rPidgin Conversation Locker\r\r\r\r\rInterface Tweaks\r\rPrevent closing of important conversations(/tabs) by selectively locking them.\r\r\r\r \r\rPidgin Conversation Save Order\r\r\r\r\rInterface Tweaks\r\rSave the order of chats and IMs and restore it the next time you open a conversation.\r\rKonrad Gräfe\r\r\r \r\rPidgin Group Chat Typing Notifications\r\r\r\r\rInterface Tweaks\r\rDisplay typing notifications of users in a compatible multi-user chat\r\r\r\r \r\rpidgin-nudge\r\r\r\r\rInterface Tweaks\r\rShakes your conversation window when you receive a nudge/buzz/zap\r\r\r\r \r\rPidgin PBar\r\r\r\r\rInterface Tweaks\r\rA toolbar to update some account settings globally.\r\r\r\r \r\rPidgin Personal Bar\r\r\r\r\rInterface Tweaks\r\rAdds a section at the top of your buddy list to change your display name and personal message.\r\r\r\r \r\rPidgin Windows Position Manager\r\r\r\r\rInterface Tweaks\r\rPlaces new conversation windows intelligently in Windows (i.e. doesn’t always put them in the top left corner).\r\r\r\r \r\rPurple Import Empathy\r\r\r\r\rInterface Tweaks\r\rA pidgin plugin that imports empathy accounts and logs\r\r\r\r \r\rProtocol Icon Override\r\r\r\r\rInterface Tweaks\r\rLets you pick the protocol icon to display per-account\r\r\r\r \r\rProtocol Status Icons\r\r\r\r\rInterface Tweaks\r\rAdds the protocol icon to the status icons in the buddy list.\r\rKonrad Gräfe\r\r\r \r\rQuickadd\r\r\r\r\rInterface Tweaks\r\rThis a simple plugin for pidgin. The idea is to alter the context menu of email addresses in conversations and add option to add the address as a buddy\r\r\r\r \r\rQuickpurple\r\r\r\r\rInterface Tweaks\r\rProvides quick buddy lookup, status switch, unread messages list and access to some Pidgin dialogs.\r\r\r\r \r\rQuote selected text\r\r\r\r\rInterface Tweaks\r\rQuick specify message to answer\r\r\r\r \r\rScroll to bottom\r\r\r\r\rInterface Tweaks\r\rScrolls chat history of created conversation windows automatically to the bottom.\r\r\r\r \r\rSession Save\r\r\r\r\rInterface Tweaks\r\rSession Save will remember what conversation windows you had open the last time you used Pidgin, and re-open them for you when you sign on.\r\r\r\r \r\rSmiley Shortcuts\r\r\r\r\rInterface Tweaks\r\rInserts a smiley on ctrl+(number) combination.\r\r\r\r \r\rTooBars\r\r\r\r\rInterface Tweaks\r\rAdd toolbar, status bar, context menu to Pidgin buddy list, hide main menu, change all status by menu (not through Statusbox!) and much more\r\r\r\r \r\rTooButtons\r\r\r\r\rInterface Tweaks\r\rAdd Send and Close buttons to Pidgin conversations\r\r\r\r \r\rToolbar Shrink\r\r\r\r\rInterface Tweaks\r\rShrinks the toolbar of the conversation windows by hiding the text of the buttons.\r\rKonrad Gräfe\r\r\r \r\rTranslit tools\r\r\r\r\rInterface Tweaks\r\rA virtual russian keyboard that decodes message written in ISO-9 translit in russian.\r\r\r\r \r\rUnhighlight System Messages\r\r\r\r\rInterface Tweaks\r\rRemove the highlight flag from system messages.\r\rKonrad Gräfe\r\r\r \r\rusercast\r\r\r\r\rInterface Tweaks\r\rCopies the nickname you’ve double clicked in the conference chat and pastes it into a conversation’s entry field\r\r\r\r \r\rWindow Merge\r\r\r\r\rInterface Tweaks\r\rMerges the Buddy List window with a conversation window\r\r\r\r \r\rWrapMenu\r\r\r\r\rInterface Tweaks\r\rWrap main menu if it is too wide\r\r\r\r \r\rWindows 7 Taskbar\r\r\r\r\rInterface Tweaks\r\rAdds new Windows 7 eye-candy such as task bar menu, progress and emblems\r\r\r\r \r\rWindows Smooth Scrolling\r\r\r\r\rInterface Tweaks\r\rGives more precise scrolling control eg with trackpads\r\r\r\r \r\rXfer Auto Path\r\r\r\r\rInterface Tweaks\r\rAllows you to automatically set the folder for saving your incoming file transfers by some criteria such as buddy alias.\r\rKonrad Gräfe\r\r\r \r\rAuto Authorization\r\r\r\r\rAccounts and Logs\r\rAutomatic handling of request of remote user who wants to appear in your buddy list\r\r\r\r \r\rforward2mobile\r\r\r\r\rAccounts and Logs\r\rForwards and sends your IM messages to/from your existing account that you already use on your mobile with your favorite mobile IM client\r\r\r\r \r\rHistory control\r\r\r\r\rAccounts and Logs\r\rBuddy- and Historysync as Perl Pidgin Plugin\r\r\r\r \r\rIM-History Plugin\r\r\r\r\rAccounts and Logs\r\rProvides easy and convenient way to store your chats and contact list online (using im-history.com service).\r\r\r\r \r\rLogstatus\r\r\r\r\rAccounts and Logs\r\rLogs all the status changes to the buddy history.\r\r\r\r \r\rLogviewer\r\r\r\r\rAccounts and Logs\r\rLogsearch for all chat logs\r\r\r\r \r\rOffice Hours\r\r\r\r\rAccounts and Logs\r\rA plugin that logs you out if you go idle outside your ‘office hours’ so you can log in the same account(s) at home. In perl so may not work on MS Windows\r\r\r\r \r\rpidgin-autoanswer\r\r\r\r\rAccounts and Logs\r\rA personal adviser, that tries to find suitable answers in your previous logs\r\r\r\r \r\rpidgin-juice\r\r\r\r\rAccounts and Logs\r\rWeb-based iPhone interface for Pidgin/Finch\r\r\r\r \r\rPidgin Backup\r\r\r\r\rAccounts and Logs\r\rSimply back up your preferences (prefs.xml)\r\r\r\r \r\rPurple History Since\r\r\r\r\rAccounts and Logs\r\rAvoid duplicated chat history on some XMPP servers\r\rKonrad Gräfe\r\r\r \r\rSQLite Logger\r\r\r\r\rAccounts and Logs\r\rIM/Chat logger with a SQLite backend\r\r\r\r \r\rWeb Pidgin\r\r\r\r\rAccounts and Logs\r\rAccess buddy list and conversations via mobile web browsers\r\r\r\r \r\rWeb Pidgin Z\r\r\r\r\rAccounts and Logs\r\rFork from the original Web Pidgin. A lot of new features and bugfixes like Ajax support, digest authentication, webserver logs and gtalk-like grouping of messages and much more\r\r\r\r \r\rAuto Translate\r\r\r\r\rMiscellaneous\r\rAuto translates incoming IMs\r\r\r\r \r\rb64\r\r\r\r\rMiscellaneous\r\rBase 64 encoding of chat messages (A very simple Perl plugin)\r\r\r\r \r\rBirthday Reminder\r\r\r\r\rMiscellaneous\r\rReminds you of your buddies birthdays.\r\rKonrad Gräfe\r\r\r \r\rBlock <user> has left the conversation.\r\r\r\r\rMiscellaneous\r\rVery simple plugin that blocks the message “has left the conversation.”\r\r\r\r \r\rBlock AOL System Msg\r\r\r\r\rMiscellaneous\r\rVery simple plugin that blocks messages from “AOL System Msg” when you are logged into AIM from multiple locations.\r\r\r\r \r\rbridgin\r\r\r\r\rMiscellaneous\r\rRelay messages between chat rooms via a plugin\r\r\r\r \r\rbridgin-php\r\r\r\r\rMiscellaneous\r\rRelay messages between chat rooms via a dbus plugin\r\r\r\r \r\rcore-answerscripts\r\r\r\r\rMiscellaneous\r\rFramework for hooking simple but powerful “answerscripts” to received messages.\r\r\r\r \r\rDockApp\r\r\r\r\rMiscellaneous\r\rAllows Pidgin to appear as an AfterStep Wharf icon.\r\r\r\r \r\rExtended Preferences\r\r\r\r\rMiscellaneous\r\rProvides some often-requested preferences\r\r\r\r \r\rFacebook Notifier\r\r\r\r\rMiscellaneous\r\rIndicates when there are unread Facebook notifications.\r\r\r\r \r\rFonomo Video\r\r\r\r\rMiscellaneous\r\rEnables Video-chat invitations via Fonomo.com (requires Adobe Flash v9 or higher)\r\r\r\r \r\rGoogle Invisibility Half Scan\r\r\r\r\rMiscellaneous\r\rWARNING! GOOGLE HAS FIXED THE BUG! THIS PLUGIN IS NO LONGER WORKING! Find out if your (Gtalk) buddies are INVISIBLE. Note: This is an “HALF SCAN” because you can not establish with certainty that a buddy is invisible (read Description).\r\r\r\r \r\rGoogle Invisibility Tracker\r\r\r\r\rMiscellaneous\r\rThis plugin alerts you when a buddy of yours (using Gmail, GTalk Lab Edition or iGoogle) go invisible\r\r\r\r \r\rGrowl\r\r\r\r\rMiscellaneous\r\rPerl plugin to use Growl. Requires growlnotify. Particularly useful for finch where an IM in a different window may go unnoticed.\r\r\r\r \r\rHeadset\r\r\r\r\rMiscellaneous\r\rSupports mute and hangup buttons from USB headsets\r\r\r\r \r\rHide Inactive Buddies\r\r\r\r\rMiscellaneous\r\rPlugin to hide inactive buddies in buddy list. Determine inactive buddy by status.\r\r\r\r \r\rInstant messaging Remote Access\r\r\r\r\rMiscellaneous\r\rClient/server plugin to exec commands/open a shell in a virtual terminal on buddies PC. It’s a kind of telnet via Instant Messaging\r\r\r\r \r\rInstant messaging NetCat Port Forwarding\r\r\r\r\rMiscellaneous\r\rDo a basic port forwarding via Instant messaging using NetCat\r\r\r\r \r\rInstant messaging Virtual Terminal\r\r\r\r\rMiscellaneous\r\rOpens a Virtual Terminal in your PC controlled by buddies via IM\r\r\r\r \r\rJuick Plugin\r\r\r\r\rMiscellaneous\r\rPlugin specially designed for [http://juick.com Juick] xmpp-microblogging service, providing support for moods and inline avatars\r\r\r\r \r\rLanguage Translator\r\r\r\r\rMiscellaneous\r\rPlugin to translate outgoing text from English language to selected language.\r\r\r\r \r\rMeebo\r\r\r\r\rMiscellaneous\r\rauto add and accept guests for meebo me widget for livechat from websites in pidgin\r\r\r\r \r\rMegaHAL\r\r\r\r\rMiscellaneous\r\rconnects Pidgin to MegaHAL. The contact will be answered by MegaHAL instead of by us\r\r\r\r \r\rMorse Code Talk\r\r\r\r\rMiscellaneous\r\rThis Plugin contains the entire Morse Code. Have one more friend around to use it, it can be a lot of fun to communicate in this way.\r\r\r\r \r\rNo IRC /who\r\r\r\r\rMiscellaneous\r\rRemoves the periodic /who check from the IRC protocol, to stop flooding, slowdowns and “Max sendq exceeded” errors\r\r\r\r \r\rPaintBoard\r\r\r\r\rMiscellaneous\r\rThis plugin allows you to draw with your friend on common board.\r\r\r\r \r\rpidginTeX\r\r\r\r\rMiscellaneous\r\rRenders mathematical expressions. Lots of options, size, colors, etc. Built upon Pidgin-LaTeX.\r\r\r\r \r\rPidgin-convreverse\r\r\r\r\rMiscellaneous\r\rReverses any word on all conversation.\r\r\r\r \r\rPidgin-eSpeak\r\r\r\r\rMiscellaneous\r\rReads incoming text messages via eSpeak (text-to-speech).\r\r\r\r \r\rPidgin-GeoURI\r\r\r\r\rMiscellaneous\r\rConvert geo URI scheme to Google Maps or OpenStreetMap link\r\r\r\r \r\rPidgin-google-contact\r\r\r\r\rMiscellaneous\r\rSyncs the buddy list with google contacts\r\r\r\r \r\rPidgin-googledesktop\r\r\r\r\rMiscellaneous\r\rGoogle Desktop Indexing Plugin for Pidgin\r\r\r\r \r\rPidgin-LaTeX\r\r\r\r\rMiscellaneous\r\rAllows you to include mathematical formulas in your conversations.\r\r\r\r \r\rPidgin Embedded Video\r\r\r\r\rMiscellaneous\r\rA GTK plugin to watch videos directly into your Pidgin conversation\r\r\r\r \r\rPidgin ZNC Helper\r\r\r\r\rMiscellaneous\r\rDisplay correct timestamps on messages replayed by a ZNC Bouncer.\r\rKonrad Gräfe\r\r\r \r\rPidglet\r\r\r\r\rMiscellaneous\r\rA Windows Vista Sidebar Gadget that displays your buddy list.\r\r\r\r \r\rPiFo\r\r\r\r\rMiscellaneous\r\rRenders various latex markups and procedural graphics code.\r\r\r\r \r\rPurple Plugin Pack\r\r\r\r\rMiscellaneous\r\rProvides over 50 various plugins, including oft-requested IRC-related plugins.\r\r\r\r \r\rQIP decoder\r\r\r\r\rMiscellaneous\r\rCorrects invalid incoming QIP 2005 diacritics and local symbols\r\r\r\r \r\rRainbow Bridge\r\r\r\r\rMiscellaneous\r\rSimple relay bot for Libpurple chats\r\r\r\r \r\rRSS / ATOM\r\r\r\r\rMiscellaneous\r\rShows Feed updates as messages in a conversation window. Requires Python and presently only works on Linux.\r\r\r\r \r\rSend Screenshot\r\r\r\r\rMiscellaneous\r\rTake a screenshot and send it to a buddy.\r\r\r\r \r\rSTFW\r\r\r\r\rMiscellaneous\r\rA plugin that helps you teach your buddies how to use google.\r\r\r\r \r\rURL Scout\r\r\r\r\rMiscellaneous\r\rThis plugin will lookup a url and display a web page title when you receive a link in a chat\r\r\r\r \r\rURL Shorten\r\r\r\r\rMiscellaneous\r\rPerl plugin to shorten long urls. Especially useful for finch. Download and put in plugins directory. URLs are shortened as they come in if they exceed maximum length setting. no action required. Requires some perl libraries to work.\r\r\r\r \r\rWhat's my IP\r\r\r\r\rMiscellaneous\r\rAllows buddies to get your external IP by writing ‘ip’ on IM chat\r\r\r\r \r\rWikipedia look-up\r\r\r\r\rMiscellaneous\r\rEasy look-up received and typed words on Wikipedia.\r\r\r\r \r\rXMPP HTTP File Upload\r\r\r\r\rMiscellaneous\r\rXEP-0363: HTTP File Upload plugin for libpurple (Pidgin, Finch, etc.)\r\r\r\r \r\rXMPP Ignore Groups\r\r\r\r\rMiscellaneous\r\rIgnores server-sent XMPP groups so that you can move buddies around on annoying servers (e.g. Facebook)\r\r\r\r \r\rXMPP MUC Presence\r\r\r\r\rMiscellaneous\r\rShows participant’s presence icon in chat room.\r\r\r\r \r\rXMPP Message Carbons\r\r\r\r\rMiscellaneous\r\rDisplays self-sent messages from other XMPP clients\r\r\r\r \r\rXMPP Receipts\r\r\r\r\rMiscellaneous\r\rShows a delivering notification if the recipient supports it\r\r\r\r \r\rXMPP URI Links\r\r\r\r\rMiscellaneous\r\rSupport clicking on xmpp links, such as xmpp:foo@bar.net?message to open a chat window.\r\r\r\r \r\rYouTube Title Adder\r\r\r\r\rMiscellaneous\r\rDisplays video titles for incoming YouTube links.\r\r\r\r\r\rShare this search:\n\r\r\r.hidden {\rdisplay: none;\r}\r#plugin-filters {\rtext-align: right;\r}\r#plugin-filter-search {\rtext-align: right;\rmax-width: 250px;\rdisplay: inline-block;\r}\r#plugin-selector label {\rtext-align: right;\rdisplay: inline-block;\r}\r#plugin-selector input {\rmargin: 8px;\rdisplay: inline-block;\r}\r#search-link-wrap {\rfont-size: small;\rtext-align: center;\r}\r\r"},{"uri":"https://pidgin.im/about/","title":"About","tags":[],"description":"","content":""},{"uri":"https://pidgin.im/help/protocols/gadugadu/","title":"Gadu-Gadu","tags":[],"description":"","content":"What is Gadu-Gadu? Gadu-Gadu is an IM protocol popular in Poland. You can find more about it here (website in Polish).\nI compiled Pidgin from source. Why doesn’t it have Gadu-Gadu support? We use an external libgadu. Install your distro’s libgadu-dev (Debian-based systems) or libgadu-devel (RPM systems) and rebuild Pidgin (making sure to re-run ./configure in the top of the source tree).\n"},{"uri":"https://pidgin.im/help/windows/","title":"Windows-Specific Questions","tags":[],"description":"","content":"Can I manually install spell-checking support? Yes! If the installer isn’t able to successfully download and install the dictionaries, you can do so manually.\nFirst, upgrade to the newest release if you aren’t on it!\nPidgin on Windows uses the dictionaries available from the OpenOffice.org Extensions Download Site. You need to download the appropriate language extension file(s). These files are OpenOffice.org extensions named with a file extension of .oxt; these are simply ZIP files with some extra data in them. Once you have downloaded one of these files, you can rename it to have a .zip extension and then extract the *.dic and *.aff files in it. These files need to be placed into %PIDGIN_INSTALL_DIR%\\spellcheck\\share\\enchant\\myspell\\. Create the directories if they don’t already exist. (%PIDGIN_INSTALL_DIR% is usually C:\\Program Files (x86)\\Pidgin or C:\\Program Files\\Pidgin.) If Pidgin is already running when you place the dictionary files, you will need to restart Pidgin for it to recognize the files.\nCan I script unattended installations or silent installations? Absolutely! The Offline Pidgin installer has a “silent” mode accessed with the following syntax:\npidgin-x.y.z-offline.exe /DS=1 /SMS=0 /L=1033 /S /D=C:\\Pidgin The /S flag activates the silent mode for the installer. The /L flag specifies the language using Windows LCID, and this affects both the installer and Pidgin itself. The /DS and /SMS flags enable (=1) or disable (=0) the desktop shortcut and Start menu shortcuts, respectively. The /D flag specifies the installation directory. If you wish to use this flag, it must be the last argument specified on the command line and may not contain any quotes, even if the installation path includes spaces. All flags are optional, except /S if silent mode is desired. Omitting the other flags will default to LCID 1033 (English), with Desktop and Start menu shortcuts enabled, and a default install path of %PROGRAMFILESx86%\\Pidgin\\ or %PROGRAMFILES%\\Pidgin depending on your version of Windows.\nWhat should I do if I get a Download Error while installing? The installer will, if necessary, download and install the GTK runtime, which is needed for Pidgin to run. If you need to use a proxy server to connect to the Internet, it is possible that the Pidgin installer will not be able to reach the resources it needs. The installer automatically checks for proxies configured in Internet Options. If you know the proxy settings, you can configure them by opening Internet Options directly from Control Panel, or by opening Internet Explorer and selecting Tools > Internet Options > Connections > LAN Settings.\nAlternatively, and likely preferred if errors occur, you can download the offline version of the installer\nCan I run Pidgin on Windows 98, Windows ME, Windows 2000, Windows XP, or Windows Vista? It is possible using old versions of Pidgin and GTK, but we do not support this. Don’t do it.\n"},{"uri":"https://pidgin.im/help/protocols/groupwise/","title":"GroupWise","tags":[],"description":"","content":"What is GroupWise? GroupWise is a messaging and collaboration platform originally developed by WordPerfect Corporation and later acquired by Novell but now owned by Micro Focus. (See this Wikipedia article for details.) The Groupwise protocol within Pidgin specifically supports the instant messaging portion of the GroupWise platform. Much of Pidgin’s support for the GroupWise Messenger service was generously provided by Novell several years ago.\nAre there any public servers? No. This protocol is designed to connect with a GroupWise Messenger server running on a corporate LAN. There are no known public servers.\nI can’t get it to work. We are told this protocol plugin works only with the GroupWise Messenger for Linux server or the GroupWise Messenger SP2 (or later) server running on NetWare or Windows, and then only if the server is secure (SSL/TLS-enabled).\n"},{"uri":"https://pidgin.im/help/protocols/irc/","title":"IRC","tags":[],"description":"","content":"How do I join a channel? Create an IRC account and sign into it. After you’ve signed on, you can use the Buddies -> Join a Chat menu option on the Buddy List window to join a channel. In any window, either a conversation or a chat, in which your IRC user is the sender, you can also use the /join command to connect to a new channel.\nCan I hide messages from NickServ, ChanServ, etc. on login? See the next question.\nHow do I automatically authenticate or identify on login? Try the irchelper plugin from the bitbucket.org/pidgin/purple-plugin-pack/. This plugin provides fields to enter the services bot’s nickname and your services password. It also automatically suppresses messages from the services bots sent on connection. Note that this plugin does, in fact, work with Q on Quakenet, and networks that use AuthServ, not just networks that use NickServ.\nAlternatively, see the next question for a way using Pidgin’s built in features.\nHow do I authenticate/identify with a buddy pounce or send a message to a user on login? Follow these steps:\n Create (if necessary) and enable your IRC account. Add the nick of the services bot to your buddy list using Buddies -> Add Buddy. Right-click the new buddy and click “Add Buddy Pounce” to create a new pounce. Make sure “Signs on” is the only checked box in the “Pounce When Buddy…” section. Make sure “Send a message” is checked under “Action”. Enter the message, such as identify mypassword if you’re trying to authenticate. Ensure “Recurring” is checked beneath “Options” or the pounce will only work once. Click “Save” to save the pounce. Note that you do NOT include /msg nickname as part of the message in the pounce.\nCan I automatically join channels on login? Absolutely. In the Buddy List window, select Buddies -> Add Chat. Use this dialog to add the chat to your buddy list. Once the chat appears in the buddy list, right-click the chat and select “Auto-Join”. The channel will autojoin whenever you sign onto your IRC account.\nIs it possible to change the username that appears in username@hostname? In the Buddy List window, select Accounts -> your IRC account -> Edit Account. Click the “Advanced” tab. Enter a name in the Username field.\nHow can I set/change my real name? In the Buddy List window, select Accounts -> your IRC account -> Edit Account. Click the “Advanced” tab. Enter a name in the Real Name field.\nWhy does text display incorrectly? IRC has no comprehension of character sets or encodings. It simply sends (almost) any random chunk of data a user enters. Pidgin by default assumes everything is UTF-8. If this is not the case, you will need to edit your account (in the Buddy List window, select Accounts -> your IRC account -> Edit Account) and change the Encoding setting on the “Advanced” tab. You will need to enter the correct encoding for your channels there. You can specify multiple encodings in a comma-delimited list, such as UTF-8,ISO-8859-15, to cause Pidgin to attempt multiple encodings. In this case, each encoding is tried in succession until a successful decode happens or all encodings listed are exhausted.\nHow can I hide join/part messages? In the Buddy List window, select Tools -> Plugins. Find and checkmark “Join/Part Hiding” and click the “Configure Plugin” button. Configure the plugin as you like.\n"},{"uri":"https://pidgin.im/help/protocols/sametime/","title":"Sametime","tags":[],"description":"","content":"Are there any public Sametime servers? Apart from a demonstration server hosted by Lotus/IBM, no. This protocol is designed to connect to a Lotus/IBM Sametime server running on a corporate LAN.\nWhy doesn’t Sametime appear in the protocols list? Sametime support in Pidgin depends on a separate library called Meanwhile. You will need to install the Meanwhile library and the libpurple-meanwhile (or similar, depending on distribution) package to enable Sametime support. If you are building Pidgin from source, then the Sametime plugin will be built automatically if you have the development headers for Meanwhile installed.\nWhy do I get the error “Not Authorized” when connecting? The Sametime server to which you’re attempting to connect has been configured with a whitelist of acceptable clients. This error indicates that the client ID used by Pidgin (0x1700) is apparently not in that whitelist, so the server denies your login. You can cause Pidgin to masquerade as the default Sametime Connect client by setting the “Hide client identity” option in your account preferences.\n"},{"uri":"https://pidgin.im/help/","title":"Help","tags":[],"description":"","content":"We get asked questions about Pidgin a lot. Many of those questions are actually the same questions over and over. Here we assemble a lot of them for your benefit, hoping that these questions and answers allow you to help yourself quickly.\n"},{"uri":"https://pidgin.im/help/protocols/silc/","title":"SILC","tags":[],"description":"","content":"What is SILC? SILC is an open, security-focused end-to-end encrypted protocol. Its website is currently hosted at silc.github.io.\nWhat do I need to use the SILC protocol? You need to install the SILC Toolkit and the libpurple SILC plugin. These were generally provided as packages in several Linux distributions, however, many distributions have begun dropping these packages due to being “unmaintained.” If you’re compiling Pidgin and libpurple yourself, see the ./configure --help for specifying the location of the SILC headers and libraries. If you’re compiling with an SRPM, use --with-silc to build the purple-silc RPM\nOn Windows, the SILC Toolkit is installed with Pidgin.\n"},{"uri":"https://pidgin.im/help/protocols/xmpp/","title":"XMPP (Jabber)","tags":[],"description":"","content":"General What is the difference between Jabber and XMPP? Jabber and XMPP are the same protocol. The only difference is that Jabber is a trademarked name and XMPP is the official name of the protocol.\nDoes Pidgin support Nimbuzz, Web.de Messenger, GMX Messenger, or 1&1 Messenger? Yes; they are simply services that use the XMPP protocol.\nHow do I choose which XMPP server to use or configure an XMPP account? The XMPP server is part of your XMPP ID. For example, in the ID foo@bar.com, bar.com would be the server to use. When entering your XMPP account information into Pidgin, specify everything before the @ (in the example, this would be foo) in the Username field and everything after the @ (in the example, this would be bar.com) in the Domain field.\nSetting Up Accounts What is the “Resource” field for in the account editor? The resource field specifies the XMPP resource you are using. The use of unique resources allows you to connect to your XMPP server from multiple locations simultaneously. Resources might have meaningful names, such as Home, Work, Mobile, etc. or something else entirely that you choose. Pidgin defaults to a blank resource, as most servers will assign one if the client doesn’t specify.\nHow do I change my resource string? Go to Accounts -> Add/Edit. Uncheck the “Enabled” box for your XMPP account. Then select the account and click the “Modify” button. Change the string in the Resource field, or put something there if it’s blank.\nHow can I configure resource priority? Libpurple does not currently support user-configurable priorities. We have a static priority list that’s used:\n Status Name Priority Available 1 Chatty 1 Away 0 Do Not Disturb 0 Extended Away 0 How do I use Pidgin with MeiVZ/StudiVZ’s chat box? These services use XMPP. Create an XMPP account using the e-mail address you log in with, but replace the “at sign” (@) with \\40. Set the Domain to vz.net. You won’t need to change anything on the Advanced tab.\nXMPP Buddies (Contacts) How can I deauthorize a buddy from seeing my status? Right-click the buddy in the Buddy List and select “Cancel Presence Notification”. Note that the buddy will have to request authorization again to be able to see your presence.\nWhat does “Cancel Presence Notification” do? See the previous question.\nWhat does “Unsubscribe” do? If you select this, you will no longer see that buddy’s presence. That means you will not see their online or offline status or if they’re away, extended away, idle, etc. If you select this option and later change your mind, you must re-request authorization to resume seeing the buddy’s presence.\nMulti-User Conferences (Chat Rooms) How do I create a conference? There are two ways to do this. One is by joining the conference and the other is by adding it to your Buddy List.\nJoin the conference In the Buddy List window, select Buddies -> Join A Chat. Select your XMPP account. Fill in the fields you see. Room should be the short name fo the conference, for example, “myconference”. Server is the server on which the conference will be created. It must be a MUC server, such as conference.jabber.org. The chat’s ID will be Room@Server, so the example “myconference” would have the ID “myconference@…” Handle is the name you wish to be displayed in the chat. It is similar in concept to a nickname on IRC. Click “Join”. You will see a dialog asking you about creating the new room. You can either accept the default configuration or configure to your liking, at your option. Add the conference to your roster (buddy list) In the Buddy List window, select Buddies -> Add Chat. Select your XMPP account. Fill in the fields you see. Room should be the short name fo the conference, for example, “myconference”. Server is the server on which the conference will be created. It must be a MUC server, such as conference.jabber.org. The chat’s ID will be Room@Server, so the example “myconference” would have the ID “myconference@…” Handle is the name you wish to be displayed in the chat. It is similar in concept to a nickname on IRC. Password is optional for creating a new room. You probably don’t want to fill this field in. Alias is the alias (display name) you wish to assign to the chat. By assigning an alias, you can display a useful description in the buddy list instead of the chat’s name. Group is the group in your buddy list (roster) in which you wish the chat to appear. Click “Add”. Find the chat in your Buddy List and double-click it. You will see a dialog asking you about creating the new room. You can either accept the default configuration or configure to your liking, at your option. How do I invite someone to a conference? In the chat’s tab, select Conversation -> Invite. Note that you can only invite people to a conversation that is already a chat/conference–you can’t “promote” a one-on-one conversation to a multi-user chat.\nMiscellaneous Why can’t I send a file? There are a number of possible reasons for this.\n If the user you’re trying to send to is using the old Google Talk client, it isn’t possible, as that client doesn’t use the standard XMPP file transfer mechanisms. The XMPP server you’re using may not support a file transfer proxy and your network doesn’t allow direct incoming connections. In this case, you may be able to specify an alternative file transfer proxy in the “Advanced” settings of your XMPP account. The file transfer proxy in use may be broken. (See Ticket 5840.) Does Pidgin support Service Discovery or Transports? Service discovery and transport registration are supported in Pidgin using the XMPP Service Discovery plugin.\nIf a transport has already been registered in another client, or does not require registration, Pidgin also supports this.\nIf you want to use a protocol that Pidgin and libpurple natively support, we recommend using Pidgin’s own implementation instead of an XMPP transport.\nWhy do I get a “Server does not use any supported authentication method” error? If you get this error, have a look in your debug log (Help -> Debug Window in the Buddy List window) to see if you also get the error message sasl: sasl_state is -1, failing the mech and trying again. If you are getting this, a possible workaround is to try adding your hostname (from /etc/hostname) to your /etc/hosts as an alias for 127.0.0.1 then trying to reconnect.\nGoogle Talk Why do I get a “Not authorized” error after turning on two-factor authentication? If you get this error, you might need to allow “less secure apps” to connect via this Google page or set an app password for Pidgin via this Google page.\nI’m using Google Apps with a non-Google e-mail address. How can I use this with Pidgin? You can’t. This is a server-side restriction.\nUsing Google Talk with a non-Google e-mail address (that is, an e-mail account that doesn’t live on a Google server) is not a good idea because these accounts appear to other users as <some terrible number>@talk.google.com rather than using something someone could remember.\nHow do I configure Pidgin to connect to Google Talk for my domain hosted on GSuite (Google Apps)? Put your username (the part before the @ in your e-mail address) in the “Username” field and your domain (the part after the @ in your e-mail address) in the Domain field. Enter your password in the Password field. This should be all that’s needed unless two-factor authentication is enabled.\nIf this doesn’t work, it is likely because your domain doesn’t have the appropriate DNS SRV records set up, or your local DNS doesn’t handle SRV records. See the next question for more information.\nIf you are unable to fix the DNS settings, as a workaround you can specify talk.google.com in the “Connect Server” field on the account’s “Advanced” tab. Note that you may get SSL/TLS certificate warnings if you do this.\nSee Google’s help page for more information.\nWhat are these DNS SRV records you talk about? DNS SRV records are special entries in the domain name system that allow clients such as Pidgin to find specific services. In the case of XMPP and Google Talk, these records specify what servers on the Internet provide the XMPP service for a given domain.\nMany home routers, especially older ones, are broken and can’t handle the SRV record lookups required for Pidgin to automatically determine the server to which to connect. If this is the case, in the debug log (on the Buddy List window, Help -> Debug Window), you will see dnssrv: found 0 SRV entries. You can confirm this by running dig +short SRV __xmpp-client._tcp.<server> on Linux or nslookup -type=SRV _xmpp-client._tcp.<server> on Windows, where <server> is the domain, such as gmail.com. If these commands return no results, then you will need to reconfigure the router to not act as the DNS server for the client computers. Typically, this setting is labeled something along the lines of “Use Router as DNS server” (this should be disabled) in the router’s configuration.\nIf you are using OpenWRT, you can fix this by editing /etc/dnsmasq.conf and commenting out the following line by adding a # in front of it: filterwin2k. OpenWRT 10.03.1 “Backfire” needs dnsmasq’s “Domain Needed” option to be disabled. In LuCI, this can be found under Network -> DHCP and DNS -> General -> Domain Required (unchecked). From the command line, remove the following option from the dnsmasq section in /etc/config/dhcp.\nIf your GSuite (Google Apps for Your Domain) domain does not have SRV records, add the following entries:\n_xmpp-server._tcp.yourdomain.com. IN SRV 5 0 5269 xmpp-server.l.google.com. _xmpp-server._tcp.yourdomain.com. IN SRV 20 0 5269 alt1.xmpp-server.l.google.com. _xmpp-server._tcp.yourdomain.com. IN SRV 20 0 5269 alt2.xmpp-server.l.google.com. _xmpp-server._tcp.yourdomain.com. IN SRV 20 0 5269 alt3.xmpp-server.l.google.com. _xmpp-server._tcp.yourdomain.com. IN SRV 20 0 5269 alt4.xmpp-server.l.google.com. How you do this will differ depending on your your DNS server or provider works.\n"},{"uri":"https://pidgin.im/help/protocols/zephyr/","title":"Zephyr","tags":[],"description":"","content":"What is Zephyr? Zephyr is an IM protocol developed at MIT for use with Project Athena. Its features include Kerberos 4 authentication and multi-level chats (aka “subscriptions”). You’re probably using this because your college/employer/organization uses it as a local IM/chat system. If not, you probably don’t have a server to connect to.\nOther Zephyr clients (zwgc, owl, tzc) work, but Pidgin dies with “Couldn’t initialize zephyr” Your site might require the use of Kerberos 4 for authentication, though few prepackaged Pidgin binaries use Kerberos. One solution is to compile Pidgin with the --with-krb4 flag to point to the location of your Kerberos 4 devel files, usually one of /usr, /usr/local, or /usr/athena, e.g. ./configure --with-krb4=/path/to/kerberos4\nPidgin isn’t working, but I never got any other Zephyr client working You need to have zhm (which comes with the standard Zephyr distribution) installed, and running, and pointed at your Zephyr servers. e.g. zhm z1.example.com z2.example.com z3.example.com\nAlternatively, there might be a firewall or a NAT between you and the Zephyr servers. Zephyr generally doesn’t work in an environment where incoming connections cannot be made to arbitrary UDP ports.\nHow do I avoid compiling Pidgin with Kerberos 4 support? See the next question; the same trick for firewall traversal applies to avoiding building with Kerberos support.\nHow do I use Zephyr from behind my firewall? You can use tzc (“Trivial Zephyr Client”) and ssh to run Zephyr from a machine that is behind a firewall or NAT. First, make sure that tzc is installed and working on the remote machine. The best version of tzc to use can be found here.\nMake sure that you can make a passwordless ssh connection to the remote machine and get Kerberos 4 tickets. Then, click the Advanced tab in the account editor, enable “Use tzc”, and set the tzc command to /path/to/ssh username@hostname /path/to/tzc -e "%s"\nAlternately, if you have tzc working on your machine, you can enable “Use tzc”, and set the tzc command to /path/to/tzc -e "%s"\nWhy can’t I use Zephyr on Windows? Pidgin does not support Zephyr on Windows due to upstream technical limitations. The current libzephyr library does not compile on the Windows platform and there are no known usable builds of “zhm” available for Windows. If you are a Windows user, you most likely do not have any use for Zephyr anyway.\n"},{"uri":"https://pidgin.im/development/gsoc/","title":"Google Summer of Code","tags":[],"description":"","content":"Pidgin has been involved in the Google Summer of Code for many years since it was started. This section contains a running list of project ideas as well as some documentation on our participation for the years we participated.\nProject Ideas You can find our current list of ideas on the Ideas page. If you have any ideas, feel free to email the mailing list or open a pull request.\nInstructions for Applications We have some detailed directions on how to make yourself stand out from the crowd on the instructions page.\nPrevious Years 2015 Project Student Mentor Status Port libpurple changes from Instantbird Abel Serrano Juste (akronix) Florian Quèze Unfinished Rewrite chat log backend and frontend Igor Gajowiak (igor.g) Tomek Wasilczyk unknown Facebook Messenger Protocol for libpurple James Geboski Eion Robb Merged 3.0 XMPP prpl improvements Koosha Khajehmoogahi Eion Robb Needs work Maintenance hero Michael McConville (mmcc) Ethan Blanton Merged 3.0 Google Hangouts Plugin: Protocol Implementation Nakul Gulati Etan Reisner Unfinished 2013 Project Student Mentor Status File Transfer Improvements Ashish Gupta Mark Doliner GTalk FT Pending Review Easy Plugins Website Bhaskar Kandiyal Eion Robb Community bonding Quail - A QT client for libpurple Phil Hannent Elliott Sales de Andrade ​View status blog GObjectification Ankit Vani Ethan Blanton Merged 2012 Project Student Mentor Status libpurple on Android Michael Zangl Mark Doliner Cleaning up Pidgin Plugin Website Nikhil Bafna Kevin Stange Never Started Usage Statistic Collection ​Sanket Agarwal Eion Robb ​http://stats.pidgin.im/, finished but not merged ​Gadu-Gadu protocol plugin improvements Tomasz Wasilczyk Ethan Blanton Merged 2010 Project Student Mentor Status Improving the ICQ implementation in Pidgin Ivan Komarov Mark Doliner Merged Better chat log viewer Adam Fowler Daniel Atallah Project wasn’t completed. Detachable libpurple sessions Gilles Bedel Ethan Blanton Waiting for 3.0.0; needs work MSN-prpl refactor and SLP rewrite Jorge Villaseñor Salinas Elliott Sales de Andrade Merged 2009 Project Student Mentor Status Telepathy prpl Felix Kerekes Will Thompson Unknown Windows GUI (High-level Toolkit) Wade Fagen Sadrul Chowdhury Unknown Privacy Rewrite Sulabh Mahajan Ethan Blanton Waiting 3.0.0; Needs Work Struct Hiding and GObjectification Eric Polino ​Gary Kramlich WIP Vulture (lower-level Windows GUI) Gregor Dick John Bailey Incomplete XMPP Transport Jan Kaluza Etan Reisner Development continues out-of-tree at ​http://spectrum.im ​Webkit Support Arnold Noronha Sean Egan Merged 2008 Project Student Mentor Status Finch spell checking and window manager Mark Schneider Sadrul Habib Chowdhury Unknown LibPurple theme manager and Pidgin interface improvements Justin Rodriguez ​Gary Kramlich Merged Master password support Vivien Bernet-Rollande Richard Laager Merged Improving Yahoo! Implementation of libpurple Sulabh Mahajan Mark Doliner Merged Voice and video support Mike Ruprecht Sean Egan Merged Improving XMPP support ​Tobias Markmann Etan Reisner Merged 2007 Project Student Mentor Status MonoLoader Eoin Coffey Gary Kramlich Merged MySpaceIM Protocol Plugin? Jeffrey Connelly Sean Egan Merged Remote Logging Michael Shkutkov Richard Laager Waiting 3.0.0; Needs Work Certificate Manager William Ehlhardt Ethan Blanton Merged Finch Improvements Eric Polino Sadrul Habib Chowdhury Unknown Virtual Classroom over Pidgin Prekshu Ajmera Richard Laager Unknown Stabilize and improve MSN support Carlos Silva Mark Doliner Unknown Telepathy Will Thompson ​Robert McQueen Telepathy Haze 2006 Project Student Mentor Status Curses-based Gaim using libgaim Sadrul Habib Chowdhury Evan Schoenberg Merged MSN protocol update Ma Yuan Sean Egan Merged Contact Availability Prediction Geoffrey Foster Mark Doliner Merged Improving Gaim’s Logging Capabilities Brian Chu Richard Laager Merged QQ Support for Gaim/Adium Mark Huetsch Timothy Thomas Ringenbach Merged Performance enhancement Aaron Sheldon Ethan Blanton Merged 2005 Project Student Mentor Status Implement UPnP NAT Traversal Adam Warrington Sean Egan Merged Gadu-Gadu Support Bartosz Oler Ethan Blanton Merged Music Messaging Christian Muise Gary Kramlich Merged OSCAR File Transfers Jonathan Clark Mark Doliner Merged Rendezvous Plugin Juanjo Molinero Horno Mark Doliner Merged D-Busified gaim-remote Piotr Zielinski Sean Egan Merged SIP/SIMPLE/STUN support Thomas Butter Ethan Blanton Merged "},{"uri":"https://pidgin.im/help/protocols/otherprotocols/","title":"Other Protocols","tags":[],"description":"","content":"Pidgin used to support MXit, Yahoo! Messenger, AIM, and ICQ. What gives? MXit and AIM no longer exist. MXit as a company no longer exists and their website is gone. AOL terminated AIM in December 2017.\nYahoo! Messenger and ICQ changed protocols and Pidgin doesn’t have the developer resources to support these protocols ourselves. See the Plugins page for community-maintained plugins for these and other services.\nWhat happened to Facebook Chat support? Facebook terminated their XMPP support in April 2014. An alternative Facebook Messenger plugin was developed as a Google Summer of Code project. That plugin is currently in the Pidgin 3 source tree and has been backported to Pidgin 2. The backport can be found either here or on the Plugins page, but it is not maintained by Pidgin’s developers.\nWhy doesn’t Pidgin support CyanChat, Microsoft LCS/Skype for Business, Skype, NateOn, NetSoul, etc.? It is an incredible amount of work to implement and maintain support for a protocol. Pidgin’s developers are volunteers who work on Pidgin in their spare time. As spare time is a limited resource, Pidgin’s developers can maintain only a limited number of protocols.\nThat said, there are a number of people in the Pidgin community that have spent the time to develop plugins for additional services including Skype, Microsoft LCS/Skype for Business, and others. A list of known community-maintained plugins is available on the Plugins page.\nIf you are willing and able to implement and maintain a plugin for a protocol that you use, we welcome and encourage you to do so! The beauty of Pidgin and libpurple is its plugin system, allowing anyone to enhance and extend Pidgin.\n"},{"uri":"https://pidgin.im/development/","title":"Development","tags":[],"description":"","content":""},{"uri":"https://pidgin.im/about/community/","title":"Community","tags":[],"description":"","content":"Pidgin is a huge project with a community that helps to provide support. We have a number of ways you can get in touch with us.\nE-mail The Pidgin team can be reached via mailing lists for support and development information.\n support@pidgin.im (List Info) (List Archive) devel@pidgin.im (List Info) (List Archive) We offer a few other mailing lists. See the full list. Chat If you prefer chat-based contact, the Pidgin community has two primary chat resources:\n #pidgin on irc.freenode.net on IRC devel@conference.pidgin.im, a Jabber/XMPP MUC (Multi-User Chat) Helping We often get people asking how they can help. Take a look at the Contributing page for suggestions! There are lots of things to do for people, and a lot of them don’t even involve the source code!\n"},{"uri":"https://pidgin.im/post/","title":"Blog","tags":[],"description":"","content":"Keep up to date with all things Pidgin, Finch and libpurple\n"},{"uri":"https://pidgin.im/posts/2020-01-nest-launch/","title":"Nest Launch","tags":[],"description":"","content":"Greetings, Programs!\nWe’re excited to announce the launch of our brand new website. The new site aims to bring the old website and the wiki from developer.pidgin.im into a single website. Development has been led by Jason Allan who is a new contributor to the project.\nWe haven’t transfered everything over yet, so if you’re looking for something and the search isn’t being helpful, all of the old content is still available at old and developer.pidgin.im.\nWe have a lot more going on in the near future so be sure to watch this section or subscribe to our RSS feed with your RSS aggregator of choice.\nFinally, if you would like to contribute please see the contributing page.\n–\nGary “grim” Kramlich\n"},{"uri":"https://pidgin.im/development/building/3.0.0/","title":"3.0.0","tags":[],"description":"","content":"Pidgin 3.0.0 is the in-development next major version of Pidgin. Its build instructions are quite different than Pidgin 2.x.y and have not yet been full documented.\n"},{"uri":"https://pidgin.im/development/building/2.x.y/windows/","title":"Windows","tags":[],"description":"","content":"Note: These instructions are kept current for the development version of release-2.x.y branch of Pidgin. You may need to look at an older version of this page in order to build a released version of Pidgin. Alternatively, you may need the instructions for 3.0.0 branch.\nSet up your build environment Install A Bash Shell The Pidgin build system requires a full Unix shell to run. You can install Cygwin or MSYS2 to accomplish this. However, these instructions are heavily geared towards Cygwin so MSYS steps may be different and/or missing all together.\nAlternatively, you may use the third-party script Pidgin Windev, which creates the development environment automatically. This tool works for both Cygwin and MSYS2.\nCygwin When installing Cygwin you will be asked which additional packages you would like to install. You need to make sure that the following packages are installed. Some of these are selected by default, but the ones in bold are not installed by default.\n bash bzip2 ca-certificates coreutils gawk gnupg grep gzip libiconv make patch sed tar unzip wget zip MSYS2 After installing MSYS2, you’ll need to make sure that you have all the base dependencies installed as well. You can do that with the following command:\n$ pacman -Sy ca-certificates gawk grep make patch tar unzip wget zip Setup The following instructions were written under the assumption that the Pidgin source will be extracted or checked out into $PIDGIN_DEV_ROOT/pidgin-<version> and that you install all of Pidgin’s build dependencies under $PIDGIN_DEV_ROOT/win32-dev (the point being that the pidgin source root and win32-dev directories should be on the same level). Similar to the example below:\npidgin-dev/ ├── pidgin-2.13.0 └── win32-dev You don’t have to actually define an environment variable called PIDGIN_DEV_ROOT, it is simply used here as a placeholder.\nNote You should avoid using a $PIDGIN_DEV_ROOT path that contains spaces as that can cause unnecessary complications.\nCustomizing Most people will find that the standard build environment directory is completely adequate. It is, however, possible to override the locations of the various dependencies and target directories. This is often useful to test against a development version of a library dependency or to override compiler flags.\nThis is done by overriding the various Makefile variables in a local.mak file in the $PIDGIN_DEV_ROOT/pidgin-<version> directory. This file does not exist by default.\nThe variables that can be overridden with this method are defined in the libpurple/win32/global.mak file. For example, to install Pidgin over c:\\Program Files\\Pidgin instead of $PIDGIN_DEV_ROOT/pidgin/win32-install-dir, create a $PIDGIN_DEV_ROOT/pidgin/local.mak containing:\n#Override the install location PIDGIN_INSTALL_DIR = /cygdrive/c/Program\\ Files/Pidgin PURPLE_INSTALL_DIR = /cygdrive/c/Program\\ Files/Pidgin One nice use of the local.mak file is for cross compiling, there is an additional example in the [#cross-compiling section below].\nGet the Pidgin source code The development source is available via Mercurial in the release-2.x.y branch. See version control for more information.\nIf you want to build a release tarball, the instructions in the rest of this document should work for you, however they are written for the most recent 2.x.y release so there may be issues with older versions.\nBuild Dependencies Compiler Installing all of the build dependencies can be tedious, so you may want to check out Pidgin Windev which will automate it.\nInstall the MinGW “GCC Version 4.7.2” packages from the MinGW site by following their instructions.\nDownload the following:\n binutils-2.24 mingw-runtime-3.20 (dev and dll) w32api-3.17 Required runtime libraries for GCC: mpc-0.8.1-1 (dev and dll) mpfr-2.4.1-1 (dev and dll) gmp-5.0.1-1 (dev and dll) pthreads-2.9.0-pre-20110507-2 (dev and dll) iconv (dev and dll) intl-0.18.1.1-2 gomp-4.7.2-1 ssp-4.7.2-1 quadmath-4.7.2-1 gcc-core-4.7.2-1 (bin and dev and dll) gcc-4.7.2-1-mingw32-src so we can distribute the libssp source since we distribute the binary Extract all of the above into the desired location (e.g. $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2)\nPrepare a libssp-src.tar.gz file containing the libssp sources and licenses:\ncd $PIDGIN_DEV_ROOT/win32-dev/mingw-4.7.2 mkdir libsspsrctmp tar -C libsspsrctmp -xf gcc-4.7.2-1-mingw32-src/gcc-4.7.2.tar.bz2 gcc-4.7.2/COPYING3 gcc-4.7.2/COPYING.RUNTIME gcc-4.7.2/libssp --strip-components=1 tar -C libsspsrctmp -czf bin/libssp-src.tar.gz . rm -r libsspsrctmp Finally, set the MinGW gcc’s bin directory to be before Cygwin’s in your PATH.\nFor example (You should add the following to your ~/.bashrc file, which is found in C:\\cygwin\\home\\YourUsername\\ by default):\nexport PATH=/cygdrive/c/devel/pidgin-devel/win32-dev/mingw-4.7.2/bin:$PATH Installing GTK Pidgin depends on GTK 2.14.7 (newer runtime versions can be used). The GTK All-in-one bundle contains all of GTK’s dependencies in one zip file. Download gtk+-bundle_2.14.7-20090119_win32.zip and extract to $PIDGIN_DEV_ROOT/win32-dev/gtk_2_0-2.14 (you’ll need to create this directory).\nVisit the GTK website for official binary and source releases.\ngettext You’ll need gettext to compile translations. Download gettext-tools-0.17.zip and gettext-runtime-0.17-1.zip. Extract both to $PIDGIN_DEV_ROOT/win32-dev/gettext-0.17 (you’ll need to create this directory).\nLibxml2 Download and extract libxml2-2.9.2_daa1.tar.gz to $PIDGIN_DEV_ROOT/win32-dev.\nPerl 5.20 You’ll need a functioning perl 5.20.x runtime (if the perl executable isn’t in your PATH, you will need to override the PERL variable in pidgin/local.mak to point to the appropriate perl executable). A good option is Strawberry Perl.\nDownload the perl-5.20.1.1.tar.gz development package and extract to $PIDGIN_DEV_ROOT/win32-dev (it creates its own directory). This is a subset of the full 32-bit strawberry perl zip containing just the headers, import lib, and source for perl.\nNote If using MSYS and you installed the mingw-developer-toolkit, keep in mind that it installs msys-perl-bin (Perl 5.6) which takes precedence over the newer perl in your path, and that will cause problems! The easiest solution is to set the PERL variable in your pidgin/local.mak to point to the right perl.exe.\nGtkSpell Download and extract gtkspell-2.0.16.tar.bz2 to $PIDGIN_DEV_ROOT/win32-dev.\nEnchant Download and extract enchant_1.6.0_win32.zip to $PIDGIN_DEV_ROOT/win32-dev/.\nMozilla NSS Download and extract nss-3.24-nspr-4.12.tar.gz under $PIDGIN_DEV_ROOT/win32-dev.\nNOTE NSS/NSPR are built from the upstream sources using these instructions.\nSILC Toolkit Download and extract silc-toolkit-1.1.12.tar.gz to $PIDGIN_DEV_ROOT/win32-dev.\nMeanwhile Download and extract meanwhile-1.0.2_daa3-win32.zip to $PIDGIN_DEV_ROOT/win32-dev.\nCyrus SASL Download and extract cyrus-sasl-2.1.26_daa1.tar.gz to $PIDGIN_DEV_ROOT/win32-dev.\nIntltool Download and extract intltool_0.40.4-1_win32.zip to $PIDGIN_DEV_ROOT/win32-dev/intltool_0.40.4-1_win32.\nCrash Reporting Library Download and extract pidgin-inst-deps-20130214.tar.gz to $PIDGIN_DEV_ROOT/win32-dev.\nBuild Building Pidgin The Windows build will take a while, but you can start it with the following command:\ncd $PIDGIN_DEV_ROOT/pidgin-<version> make -f Makefile.mingw install Now just wait and let your compiler do its thing. When finished, Pidgin will be in $PIDGIN_DEV_ROOT/pidgin-<version>/win32-install-dir.\nBuilding the Installer If you would like to build the Pidgin installer, you’ll need to setup NSIS. Once you have installed NSIS, please make sure that it is in your shell’s PATH.\nNext you’ll need to download the nsisunz plugin, and extract nsisunz.dll into the Plugins directory of your NSIS installation.\nYou’ll also need to install the SHA1Plugin from $PIDGIN_DEV_ROOT/win32-dev/pidgin-inst-deps-20130214/SHA1Plugin.dll into the NSIS Plugins directory.\nFinally, you’ll need to decide if you would like to sign the executables though this is not necessary for personal use.\nTo sign the executables, you’ll need to get an appropriate code signing certificate by downloading and installing Mono. In your local.mak file (see customizing above), define the MONO_SIGNCODE variable to the fully qualified path to the signcode batch file in the Mono bin directory, as well as the SIGNCODE_SPC and SIGNCODE_PVK variable to the appropriate files in your certificate.\nAlso, you’ll need a PGP key to verify add pgp signatures to the files. GnuPG is the primary PGP client most people use. You can read more here.\nOnce you have everything setup your local.mak should look something like the following:\nMONO_SIGNCODE=/cygdrive/c/Program\\ Files\\ \\(x86\\)/Mono-2.10.8/bin/signcode SIGNCODE_SPC=c:\\\\Path\\\\to\\\\authenticode.spc SIGNCODE_PVK=c:\\\\Path\\\\to\\\\authenticode.pvk #Set up gpg to use a separate keyring GPG_SIGN=gpg --no-default-keyring --secret-keyring /path/to/secring.gpg If you aren’t going to be signing anything, your local.mak should look like the following:\n#Disable Signing MONO_SIGNCODE=echo ***Bypassing signcode*** GPG_SIGN=echo ***Bypassing gpg*** At this point, you can finally build the installer. However, there are actually two different installers; an “Offline” installer that includes all dependencies (except spellchecking dictionaries) and the debug symbols and an “Online” installer that includes only Pidgin itself and will download the various dependencies if necessary.\nThe Makefile.mingw targets for these are installer_offline and installer respectively. You can build both with the installers target.\ncd $PIDGIN_DEV_ROOT/pidgin-<version> make -f Makefile.mingw installers When it finishes, your installer(s) should be in $PIDGIN_DEV_ROOT/pidgin-<version>/ directory.\nDebugging There is a quite good Just In Time debugger for MinGW named drmingw. You can download it from their releases.\nThere is also a version of gdb available from MinGW, if you prefer.\nCross Compiling It is quite easy to cross compile Pidgin for Windows on a Linux machine.\nTo begin, you’ll need to install MinGW. On Debian/Ubuntu, this involves installing packages mingw32, mingw32-binutils, and mingw32-runtime. On other distributions, the packages may be named differently.\nSet up a build environment as described above. You should already have a bash shell and have just installed the mingw compiler.\nCreate a local.mak file in the source directory root to override the Makefile variables, something like the following:\nSHELL := /bin/bash CC := /usr/bin/i586-mingw32msvc-cc GMSGFMT := msgfmt MAKENSIS := /usr/bin/makensis WINDRES := /usr/bin/i586-mingw32msvc-windres STRIP := /usr/bin/i586-mingw32msvc-strip INTLTOOL_MERGE := /usr/bin/intltool-merge INCLUDE_PATHS := -I$(PIDGIN_TREE_TOP)/../win32-dev/w32api/include LIB_PATHS := -L$(PIDGIN_TREE_TOP)/../win32-dev/w32api/lib If your distribution doesn’t include a recent enough win32api, you can download it from the MinGW site, extract it into your win32-dev directory, and override the INCLUDE_PATHS and LIB_PATHS variables in your local.mak as shown above.\nNSIS version 2.46 or greater is required to cross-compile. If compiling NSIS from source, the scons package is a dependency. This can usually be installed through your linux distribution’s package archive. An example of how to install the NSIS package is given below (Assuming use of the NSIS 2.46 version).\nmkdir nsis; cd nsis wget https://prdownloads.sourceforge.net/nsis/nsis-2.46-src.tar.bz2?download wget https://prdownloads.sourceforge.net/nsis/nsis-2.46.zip?download tar -jxvf nsis-2.46-src.tar.bz2 cd nsis-2.46 scons SKIPSTUBS=all SKIPPLUGINS=all SKIPUTILS=all SKIPMISC=all NSIS_CONFIG_CONST_DATA_PATH=no sudo scons install-compiler cd .. sudo unzip nsis-2.46 -d /usr/local/share sudo mv /usr/local/share/nsis-2.46/ /usr/local/share/nsis Once this is done, you’ll need to update local.mak to point to the new NSIS location:\nMAKENSIS := /usr/local/bin/makensis Finally, you should be able to follow the build instructions above.\n"},{"uri":"https://pidgin.im/about/philosophy/","title":"Philosophy and Goals","tags":[],"description":"","content":"Philosophy Pidgin has a number of design goals that we consider our philosophy. For example:\nProtocol/Service Agnosticism We believe that once all your accounts are configured in Pidgin, it shouldn’t matter what protocol or service is being used when messaging a contact. The purpose of using Pidgin is to communicate; the communication itself is more important than the gritty details of how it’s happening. This is exemplified as “I want to talk to John” versus “I want to talk to John on his XMPP account at jabber.org.” It’s our belief that “I want to talk to John” is our users’ expectation, and we aim to make Pidgin that simple.\nProject Goals Pidgin, as a project, has overarching goals for the future of the project:\nProtocols/Services The main protocol-related goal for the Pidgin project is to remove support for the proprietary services from the libpurple source code and have them as separate plugins. This protects the core project from some legal issues and allows much faster response to protocol-level changes if the owners of a given service make changes that break the plugin. There is no specific timeline to do this; we simply aim to do it at some point in the future.\n"},{"uri":"https://pidgin.im/help/protocols/xmpp/supportedxep/","title":"Supported XEP's","tags":[],"description":"","content":"This is an attempt to document the various XMPP Extensions (XEP’s) supported by XMPP protocol plugin in libpurple. Please note that this list is incomplete and that libpurple almost certainly supports more XEP’s than are listed here!\n XEP Feature Name Status Notes XEP-4 Data Forms Final Since at least 2.4.1 XEP-12 Last Activity Final XEP-20 Feature Negotiation Draft (for file transfers) XEP-22 Message Events Obsolete Superseded by XEP-85, support updated. XEP-30 Service Discovery Final (no UI implementation in Finch) XEP-38 Icon Styles Deferred For smileys. Standard seems abandoned? Last revised 2003. XEP-45 Multi-User Chat Draft XEP-47 In-band Bytestreams (IBB) Final Since 2.6.0 XEP-50 Ad-Hoc Commands Draft XEP-54 vcard-temp Active (Historical) XEP-55 Jabber Search Active (Historical) XEP-60 Publish-Subscribe Draft (partial/minimal support, used for PEP) XEP-65 SOCKS5 Bytestreams Draft XEP-66 Out of Band Data Draft XEP-71 XHTML-IM Draft XEP-77 In-Band Registration Final XEP-84 User Avatar Draft v1.1 XEP-85 Chat State Notifications Final XEP-91 Legacy Delayed Delivery Obsolete Deprecated in favour of XEP-203. Still around. XEP-92 Software Version Draft XEP-95 Stream Initiation Draft XEP-96 SI File Transfer Draft (SOCKS5 bytestreams, IBB) XEP-100 Gateway Interaction Active minimal support in Pidgin/Finch XEP-107 User Mood Draft XEP-115 Entity Capabilities Draft v1.5 since 2.6.0 XEP-118 User Tune Draft XEP-124 Bidirectional-streams Over Synchronous HTTP (BOSH) Draft Since 2.6.0 XEP-146 Remote Controlling Clients Active Since 2.2.1 XEP-153 vCard-Based Avatars Active (Historical) XEP-156 Discovering Alternate XMPP Connection Methods Draft partial support since 2.6.0 (for BOSH) XEP-163 Personal Eventing Protocol Draft XEP-166 Jingle Draft Since 2.6.0 XEP-167 Jingle RTP Sessions Draft Since 2.6.0 when compiled with voice and video support XEP-172 User Nickname Draft XEP-174 Serverless Messaging Final (via the Bonjour prpl) XEP-176 Jingle ICE-UDP Transport Method Draft Since 2.6.0 when compiled with voice and video support XEP-177 Jingle Raw-UDP Transport Method Draft Since 2.6.0 when compiled with voice and video support XEP-191 Simple Communications Blocking Draft Since 2.5.4 XEP-199 XMPP Ping Final XEP-202 Entity Time Final XEP-203 Delayed Delivery Final Since 2.2.1 XEP-206 XMPP Over BOSH Draft Since 2.6.0 XEP-224 Attention Draft Started life as a Pidgin “buzz” extension in 2007, now an XEP :-) XEP-231 Bits of Binary Draft Since 2.5.2, used for custom emoticons. XEP-232 Software Information Deferred Intended to replace XEP-92 using XEP-115 XEP-237 Roster Versioning Obsolete Since 2.6.5. XEP now part of RFC-4621 XEP-245 The /me Command Active Since forever. XEP-249 Direct MUC Invitations Draft Support added in 2.6.4 XEP-256 Last Activity in Presence Draft Since 2.6.0 XEP-264 Jingle Content Thumbnails Experimental Thumbnails disabled in XMPP since 2.7.2 until it gets Draft status. "},{"uri":"https://pidgin.im/development/voice-and-video/","title":"Voice and Video","tags":[],"description":"","content":"Voice and Video Voice and video in libPurple is being worked on using ​Farstream (formerly Farsight). There are a few parts to this implementation. Firstly, basic API support needs to be added to libPurple. Then Pidgin and Finch need to be able to initiate, participate in, and terminate the voice and video sessions. After these two requirements are met, each protocol will require both the signaling to be implemented (such as SIP or Jingle) and the proper Farstream plugins.\nFarstream has rawudp, iceudp, and multicast transmitter plugins and an MSN webcam plugin. Basic voice and video support for libPurple, Pidgin, and Finch (voice support only) have been added to the “default” development branch. XMPP/GTalk/Gmail is working, but not complete. None of the other protocols have had much work done.\nProtocol Specific Information XMPP/GTalk XMPP, GTalk, and Gmail use RTP. XMPP uses Jingle. GTalk and Gmail use their own flavor of Jingle. XMPP uses rawudp and XMPP, GTalk, and Gmail use the libnice Farstream transmitter plugin.\nVoice and video support for XMPP/GTalk was worked on for a Summer of Code project\nSametime Sametime seems to support at least voice chat according to ​this IBM document\nGadu-gadu This is a placeholder for information regarding GG voice.\nAn announcement that might be of interest\nBuilding with Voice and Video Please be familiar with compiling and installing code from source. Please also submit any bugs you find to Trac (TipsForBugReports).\nMake sure you are using the latest release of Pidgin.\nFarsight 2 0.0.9 and libNice 0.0.7 are the minimum versions required, but the newest versions you can get are best. Make sure to check Farsight2’s README and make sure you have all of the dependencies for it. gst-plugins-base is also required for the gstreamer-interfaces-0.10 interface. Some distros call it libgstreamer-plugins-base0.10-dev. If everything in order, the configure script should output this line:\n Build with voice and video…. yes\n For help with building, see Installing Pidgin. Please carefully read through that section and any extra information for the distribution you’re using.\nCodec Configuration If a certain codec isn’t working for you, you need to create an “fs-codec.conf” file in your purple config directory. See this for the specification: ​fs-codec-list-from-keyfile\nSo, for example, if you want to disable the MPV codec you’d put this in the fs-codec.conf file:\n[video/mpv] id=-1 Links ​http://www.freedesktop.org/wiki/Software/Farstream/ ​http://code.google.com/apis/talk/libjingle/index.html ​http://trac.adium.im/wiki/VoiceAndVideo ​http://trac.adium.im/wiki/PidginVV "},{"uri":"https://pidgin.im/development/voice-and-video/voice-and-video-api/","title":"Voice and Video API","tags":[],"description":"","content":"For functions that could be per conference, session, participant, or stream, they would have a session and a participant parameter. A NULL for either of these would be a wildcard.\nPurpleMediaManager? Functions *_initiate # Creates a PurpleMedia instance. Probably have a flag as to whether it's the initiator or responder Signals init-media\t# Same as the current signal. Is triggered when *_initiate is called init-video-src\t# These are all triggered when the corresponding *_get_\\* functions are called init-video-sink\t# The one problem I've thought of with them is that this way it wouldn't init-audio-src\t# be very easy to have multiple srcs or sinks of the same type. init-audio-sink Get *_get # Returns a global instance of the PurpleMediaManager *_get_pipeline # Returns a global pipeline to be used for all PurpleMedia instances. *_get_video_src # These all create their respective types if they don't exist. *_get_video_sink # Otherwise they return a src/sink-pad for the existing src/sink. *_get_audio_src *_get_audio_sink # The next three functions will probably have a type parameter (audio or video, src or sink) *_get_plugins # Return a list of audio/video GStreamer plugins (eg. v4lsrc, alsasrc) *_get_devices # Return a list of devices for a specific plugin *_get_devices_autodetect # Eventually, return a list of devices detected for all supported plugins PurpleMedia? Functions All of these functions will have parameters for session_id and participant_id NULL for either of these would indicate a wildcard and do this operation for all matching streams\n*_add_stream # Adds a stream/session/participant to the conference, automatically creates participants and FsSessions as necessary *_add_candidate # Adds a single candidate to the stream (May not be necessary. Could alternately add a list) *_set_candidates # Sets a list of candidates for the stream *_set_codecs # Sets a list of codecs for the stream *_set_direction # Changes the direction of a stream/session/participant (could use *_add_stream to accomplish this) *_accept # Accept a session (User clicked the accept button) # The following two could probably be merged into one function *_mute # Mutes an audio stream/session/participant (sending and/or receiving?) *_pause # Pauses a video stream/session/participant (sending and/or receiving?) *_end # Ends a stream/session/participant/conference Signals These signals also apply to the wildcard note above\nready # Waits for both codecs-ready to be TRUE and candidates-prepared to have fired (possibly also wait for the user to click accept if they are the responder otherwise we'll probably need an "accepted" signal) state-changed # Has an enum state (containing such states as connected, end, and ice-specific values) Signals for stream/session/participant/conference More signals may be necessary for different protocols. Jingle ice-udp may also need a new-candidate and/or new-candidate-pair and a codecs-changed equivalent\nGet I’m not certain all of these will be necessary\n*_codecs # gets codecs per sessions *_candidates # gets candidates per stream *_streams # gets stream_ids by session or by participant *_sessions # gets session_ids in the conference *_participants # gets participant names by conference or by session "},{"uri":"https://pidgin.im/development/contributing/mercurial/","title":"Using Mercurial","tags":[],"description":"","content":"Configure Mercurial Mercurial is configured through several rc files. You can override the system-wide settings on a per-user or per-repository basis by changing either ~/.hgrc or <repository>/.hg/hgrc. See man hgrc for details.\nYou must set your username when working with Mercurial repositories. To do that, add two lines to ~/.hgrc (or optionally <repository>/.hg/hgrc, if you want to use a different username for other Mercurial repositories):\n[ui] username = First Last <email@address.tld> Other useful options that can be set in the [ui] section of an hgrc are the merge tool and to make Mercurial verbose or not:\n[ui] username = First Last <email@address.tld> verbose = True merge = meld Git diffs can be useful too, and making hg log -v the default behavior for hg log can be helpful:\n[diff] git = True [defaults] log = -v Clone the Repository and Select a Branch To start working with Pidgin from Mercurial, you’ll probably want to clone our main repository:\nhg clone https://bitbucket.org/pidgin/main/ pidgin This will give you a pidgin directory with the 3.0.0 development code by default. If you want to develop against Pidgin 3.0.0, you’re all set!\nNaturally, Pidgin has a number of branches within its repository, and these branches handle various projects including our maintenance of Pidgin 2.x.y. We won’t go into all the branches here, as there are a lot of them, but we know some people would like to work against Pidgin 2.x.y instead of 3.0.0. In order to do that, clone the repository as above, but then do this:\ncd pidgin hg up release-2.x.y You now have a Pidgin 2 tree to work with. Happy hacking!\n"},{"uri":"https://pidgin.im/development/version-control/","title":"Version Control","tags":[],"description":"","content":"All of the source code relating to Pidgin and its libraries is hosted in Mercurial repositories and are specified below.\nRepositories Pidgin itself lives in the bitbucket.org/pidgin/main/, repository. This include Pidgin 2 on the release-2.x.y branch as well as Pidgin 3 on the default branch.\nThe default branch has moved libgnt out to its own repository at bitbucket.org/pidgin/libgnt/ to make it more accessible to other developers. The intent here is to have it be a separate package on all distributions to make it more accessible to users as well as developers. This will help on distributions such as Slackware that enforce rules of one distribution package per source package.\nPidgin 3 also depends on bitbucket.org/pidgin/talkatu/ for reusable GTK widgets that are geared towards messaging clients.\nPurple 3 has adopted bitbucket.org/gplugin/gplugin/, which is a library that handles plugins in multiple langauages leveraging gobject-introspection. It currently supports C/C++, Python, and Lua plugins, with more languages planned for the future.\n"},{"uri":"https://pidgin.im/development/i18n/","title":"Internationalization","tags":[],"description":"","content":""},{"uri":"https://pidgin.im/development/i18n/tips/","title":"Tips","tags":[],"description":"","content":"Can I help translate? Yes! Our translations are provided by volunteers. To improve consistency and quality we prefer to have a designated person or group of people maintain each translation.\nIf Pidgin already has a translation for your language, please contact the designated translator(s) and ask if you can help. It’s possible they are looking for someone to take over. You can find their email address in Pidgin’s Help→Translator Information window. Or, for some languages you can try contacting the translator(s) via Transifex.\nIf you’re unable to contact the designated translator(s) or if Pidgin does not yet have a translation for your language, email the translators mailing list and ask if anyone is already working on translating that language.\nWhen should I submit a translation update? The translations are shipped with each Pidgin release, so there is no great advantage to submitting a translation multiple times during a release cycle. We announce a string freeze on the translators mailing list before each release. This is a promise to you that we will not add any new strings or change any existing ones. During this time you should finish translating any new strings and submit a new translation to us.\nWhere should I submit a translation update? The preferred method for submitting updated translations is via Transifex. If you’re the designated translator for your language then you can request to create a new language team for your language in Transifex (and please also send an email to the translators mailing list and let us know!).\nIf you’re opposed to using Transifex there are two other methods you could use to send us translations. These cause slightly more overhead for us, so we try to avoid them.\n By creating a new ticket and attaching your translation file. Please provide your full name, a contact email address, and the language and country code for your translation Or you can ask a Pidgin developer to give you commit access directly to our version control system, then commit the translation yourself. Before you commit a translation update, please strip line numbers from the .po file by running XGETTEXT_ARGS=--no-location intltool-update LL. This makes the diff smaller and more human-friendly. Translation Stats and a .pot File You can see the current translation statistics at https://developer.pidgin.im/l10n/. There is also a link to the nightly version of the pidgin.pot at the bottom of the page. The .pot file includes the strings from our Windows installer. Providing a full translation of this file automatically ensures that Windows users will be able to have a translated installer for their convenience.\nHow Pidgin Handles Translation Updates Current translators are always listed in Pidgin’s About dialog (Help → About from Pidgin’s Buddy List window) by name, and each translator’s e-mail address is included. Because of this, we need current translators to inform us if their e-mail address changes. Translation updates for each language are accepted only from its current translator, except when: The current translator has told us he/she wishes to retire from translating Pidgin The current translator has not submitted an update for at least one year and does not respond to inquiries. The current translator tells us to accept the update and/or treat a new translator as a co-maintainer of the translation. We become aware through verifiable means that the current translator has passed away. In short, this means that if you are not the current translator for a specific language, we will not normally accept the translation update from you, except as described above. We do this to minimize confusion among users–we’ve found over time that some translators will choose different ways to translate a given word or phrase, which inevitably confuses users. We apologize for any inconvenience this may cause, but we believe that following these rules makes translations better for everyone.\nHelpful links Transifex Translation statistics Our translators mailing list "},{"uri":"https://pidgin.im/development/gsoc/instructions/","title":"GSoC Instructions","tags":[],"description":"","content":"Our project has historically allowed a wide variety of applications on topics both solicited and unsolicited, and we do not intend to change this policy. However, every application must meet some criteria, which we have set out here, to be considered.\nApplicant credentials The application should demonstrate (by reference to previous projects, completed coursework, job experience, description, etc.) that the applicant possesses the following skills:\n Competence in programming in the applicable language for the task at hand. For Pidgin, Finch, or libpurple themselves this means C. An ability to effectively communicate, via written language, technical topics and precise thoughts. Project description Every application must describe the project the applicant intends to pursue. While this may contain information from our ideas page or other online sources, it must primarily consist of the applicant’s own words and plans. It should include:\n A description of the general task to be completed The applicant’s estimate of the skills required to complete the task, particularly noting those skills that will need to be developed during the course of the project. Note that it is absolutely fine if the applicant, for example, is unfamiliar with a library or protocol necessary to complete the project, if they can demonstrate that they understand what needs to be learned and how that learning will be approached. A general timeline of the project as envisioned, with a breakdown including major milestones (e.g., “necessary UI infrastructure”, “supporting changes to protocol X”, “draft specification for Y”). Note that project applications need not be for projects from our ideas page. If you have a great idea for a project, that’s fine, propose it! Just be sure to describe what it is, why you can do it, and how you plan to accomplish it within the summer.\nExternal factors If a project or applicant has any external factors that the project should be aware of, those must be spelled out explicitly along with an explanation of how the project will be affected if those factors fail to come through or otherwise interfere. For example, if a project depends on a third-party library that is known to have limitations that may affect the success of the project, the application should describe those limitations and how they will be mitigated if they get in the way. Something like this would be appropriate:\n I plan to use libfoo 3.1 to implement a foo protocol plugin, but it doesn’t yet support a pluggable main loop, which libpurple requires. The libfoo developers intend to address that, but if they do not address it by midsummer, I will implement it myself and submit a patch upstream. If this happens, I probably will not be able to complete the extended frobnicator API in libpurple, but the project will still successfully speak the foo protocol by the end of the summer.\n Any potential major demands on the student’s time MUST be included, such as: finals (we know that not all school schedules line up with SoC precisely, and this will absolutely not disqualify an application!), scheduled vacations or holidays, existing summer commitments for work or school, potentially conflicting job applications, etc.\nImproving your chances After submitting a great proposal, PLEASE join us on IRC (irc.freenode.net #pidgin) or XMPP MUC (devel@conference.pidgin.im) and discuss your ideas with the community. Experience has shown that students who are involved before the Summer of Code starts are more likely to stick with it and make good progress during the summer. In addition, this provides us more and better information about how you work with other developers and what your skill set is. You can greatly improve your chances of selection by engaging with the community early.\n"},{"uri":"https://pidgin.im/","title":"Pidgin","tags":[],"description":"","content":"Pidgin is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.\nPidgin runs on Windows, Linux, and other UNIX-like operating systems. Looking for Pidgin for OS X? Try Adium!\nPidgin is compatible with the following chat networks out of the box: Jabber/XMPP, Bonjour, Gadu-Gadu, IRC, Novell GroupWise Messenger, Lotus Sametime, SILC, SIMPLE, and Zephyr. It can support many more with plugins.\nPidgin supports many features of these chat networks, such as file transfers, away messages, buddy icons, custom smileys, and typing notifications. Numerous plugins also extend Pidgin’s functionality above and beyond the standard features.\nPidgin is under constant development. Releases are usually frequent and driven by user contributions, such as bug reports and patches.\nPidgin is free and contains no ads. All our code is open source and licensed under the GNU General Public License. This means you can get Pidgin’s underlying code and modify it to suit your needs, as long as you publish the changes you make for everyone to benefit from as well.\n Download\r\r\rPlatforms:\r\r\r\r\r\r\r\r.download-now {\rdisplay: block;\rtext-align: center;\rwidth: 250px;\rborder-radius: 6px;\rbackground-color: lightgrey;\rmargin: 0 auto;\r}\r.download-now .download-btn {\rborder-radius: 6px;\rbackground-color: #8451a1;\rcolor: white;\rwidth: 100%;\rpadding: 15px;\rfont-size: large;\rtext-align: center;\rdisplay: block;\r}\r.download-now .download-btn:hover {\rbackground-color: #322a38;\rtext-decoration: none !important;\r}\r.download-now .download-btn::after {\rcontent: none !important;\r}\r.download-now .download-thing {\rdisplay: table-cell;\rtext-align: center;\rvertical-align: middle;\r}\r.download-now .dl-icon {\rdisplay: inline-block;\rvertical-align: middle;\r}\r.download-now .dl-text {\rdisplay: inline-block;\rvertical-align: middle;\r}\r.download-now ul {\rdisplay: block;\rlist-style-type: disc;\rmargin-block-start: 0;\rmargin-block-end: 0;\rmargin-inline-start: 0;\rmargin-inline-end: 0;\rpadding-inline-start: 0;\r}\r.download-now a {\rcolor: #8451a1;\r}\r\rSupported Languages Pidgin is translated into many different languages, thanks to the generous contributions of our volunteer translators.\nAfrikaansAlbanianAmerican EnglishAmharicArabicArmenianAustralian EnglishAzerbaijaniBelarusian LatinBengaliBokmal NorwegianBosnianBritish EnglishBulgarianCanadian EnglishCatalanChineseCzechDanishDutchDzongkhaEnglishEsperantoEstonianEuskera (Basque)FinnishFrenchGalicianGeorgianGermanGreekGujaratiHebrewHindiHong Kong ChineseHungarianIndonesianIrishItalianJapaneseKannadaKhmerKoreanKurdishLaoLithuanianMacedonianMalayMarathiMongolianMyanmar (Burmese)NepaliNorwegian NynorskOccitanOriyaPashtoPersianPolishPortuguesePortuguese-BrazilPunjabiRomanianRussianSerbianSerbian LatinSimplified ChineseSinhalaSlovakSlovenianSpanishSwahiliSwedishTamilTeluguThaiTraditional ChineseTurkishUkrainianUrduValencian-CatalanVietnameseXhosa If your native language is missing from this list or you’ve found that a translation contains errors, you can help us! Take a look at our tips for translators page!\n"},{"uri":"https://pidgin.im/development/building/2.x.y/","title":"2.x.y","tags":[],"description":"","content":"Building If you’re building for Windows you’ll want to have a look at windows instead.\nPidgin’s default build has a lot of dependencies. This document will hopefully help you find and install them all.\nPackaged Dependencies These dependencies are ones that should be found in your distribution’s package manager.\nI have the source; how do I build this thing? Assuming you have all of the necessary libraries and their headers installed (see the next few questions), you compile libpurple, Pidgin and Finch just like most applications:\n$ tar xjvf pidgin-2.x.y.tar.bz2 $ cd pidgin-2.x.y $ ./configure && make && sudo make install This will install libpurple, Pidgin and Finch to /usr/local. If you want to install it elsewhere, pass --prefix=/some/other/prefix to ./configure. (You really don’t want to install it to /usr.) See ./configure --help for other options you can change at compile-time.\nIf you got the source tree from our Mercurial database (which you probably shouldn’t have), you’ll need to run ./autogen.sh instead of ./configure the first time around. If you get an error like the following, you may need a newer version of automake.\nrunning /usr/bin/automake -a -c --gnu... failed. Makefile.am:79: directory should not contain `/' pidgin/pixmaps/Makefile.am:4: directory should not contain `/' If you are trying to compile on Windows, you need the answer to a different question.\nWhy can’t I compile Pidgin? You’re probably missing some dependencies. The configure script will tell you when you are missing required dependencies. Remember that if you’re using an RPM-based (RedHat Enterprise Linux, CentOS, SUSE, Mandriva, etc.) or Debian-based system (Debian, Ubuntu, etc.) that having just a library’s package installed is not sufficient–you must also have the -devel (RPM systems) or -dev (Debian-based systems) package for each library installed. If configure is succeeding, but make fails, this is harder to diagnose and you will probably want to drop by the IRC channel or XMPP conference listed on Community to get help.\nHow do I install the dependencies on Debian or Ubuntu? You need to install the development headers; these are the -dev packages. A simple apt-get build-dep pidgin will find and install all of the required header packages for you.\nIf apt-get build-dep fails with a message like\nE: You must put some 'source' URIs in your sources.list then you need to add deb-src lines to your /etc/apt/sources.list corresponding to each of the deb lines already there. If editing configuration files scares you, Ubuntu has a “Software Sources” control panel in System -> Administration which has some magic checkboxes to do this for you.\nHow do I install the dependencies on Fedora (or similar)? RPM-based distribution users may find yum-builddep pidgin useful if a source RPM is available and the distribution uses the yum tools.\nNote that on current Fedora, you would use dnf builddep pidgin, which is in the dnf-plugins-core package. If you’re still using yum, the yum-builddep command is in the yum-utils package, which is not necessarily installed by default.\nHow do I apply the patch “something.diff”? Type patch -p1 < something.diff from the top level of the source directory (pidgin/, not pidgin/pidgin/ or pidgin/finch/).\nIs there a way to compile without some protocols? There are actually two ways:\n Run ./configure with the --with-static-prpls option with the --disable-plugins option. This will let you choose which protocols to include by specifying them as a comma-separated list, such as the following (but note that you won’t be able to use any other protocols or plugins): ./configure --disable-plugins --with-static-prpls=irc,bonjour Use the --with-dynamic-prpls option to ./configure by specifying a comma-separated list, like so: ./configure --with-dynamic-prpls=irc,xmpp Can I compile just Finch, not Pidgin? Sure. Pass --disable-gtkui to ./configure.\n"},{"uri":"https://pidgin.im/development/gsoc/ideas/","title":"GSoC Ideas","tags":[],"description":"","content":"These ideas are starting points for Google Summer of Code projects that the Pidgin, Finch, and libpurple community has agreed are generally desirable and high impact. For smaller projects, community-submitted ideas, or projects that for some reason we are not sure are in scope for SoC, please see [wiki:SoCAndBountyIdeas]. (You can submit SoC proposals with those ideas, or your own ideas, as well, you just have to convince us they’re suitable!)\nProtocol-specific ideas Encryption for XMPP libpurple supports no native end-to-end encryption over XMPP. There are several XEP’s for this, and there is absolutely room for a new protocol that is better/easier/more secure/whatever than the existing proposals. See [wiki:EndToEndXMPPCrypto] and talk to [wiki:elb Ethan Blanton]. Note that designing a new protocol would absolutely require getting some crypto gurus on board!\nXMPP Modernization omemo carbons Add Voice and Video to the SIP Plugin New Protocol Plugins There are new IM protocols all the time, and some of them even get popular. If you have a favorite IM protocol, you can propose implementing it. The bar here is high, though! You need to convince us not only that it is desirable and that you can do it, but that it will be maintainable; that means that there needs to be a plausible community to maintain it (maybe you?) after the summer is over. Convince us that will happen in your proposal.\nTwitch Plugin Instagram Plugin Forward Progress Update more things to the Modern Way We are replacing as many parts of libpurple and Pidgin with modern library-provided functionality as feasible for 3.0. For example, we have ripped out our custom DNS infrastructure and replaced it with GIO DNS that did not exist when our infrastructure was written. There’s still a lot left to do here. For example, we do not use the GTK icon infrastructure everywhere. Talk to Michael McConville about some things he identified during his 2015 Maintenance Hero project.\nTests and proof of functionality libpurple has always had an anemic test suite. Part of this is that it’s hard to test the protocol plugins, as we cannot hammer the official servers and we do not have our own implementations of the protocols. Even where we do (such as XMPP), that doesn’t mean the existing servers are appropriate for testing. Propose a set of tests that you think can be applied to the codebase and (ideally) run automatically.\n[wiki:grim Gary Kramlich] has an idea for a coordinated testing plugin and server that would effectively run scripts implementing client-server interaction unit tests for specific functionality. The idea is that server scripts emulating specific activities (e.g., successful login or an authentication failure at login) would be started by a plugin in a libpurple client, which would then attempt that activity and check for the expected result on the client side.\nBetter UI Pidgin has historically led the way in instant messaging UI design. Several Pidgin behaviors have gone on to become ubiquitous. That said, our UI has stagnated over the years, and it seems like IM UI in general has not done much in recent history. Propose something novel and interesting and convince us people would want it - or at least that it’s worth seeing if they will. We’re not necessarily looking for crazy or off the wall, but we are looking for plausibly better.\nInternals Code hardening libpurple has a large amount of network-facing C code, which makes it a big target. Code hardening, security auditing, and elimination of common errors have the potential to be a big win affecting a lot of users. libpurple 3.0 also offers us an interesting opportunity in that it should make possible protocol plugins written in a VHLL, which would reduce entire classes of vulnerabilities significantly. Propose some specific hardening or auditing activities to improve the code quality of libpurple or a libpurple client.\nUser Highlighting and Name Completion Pidgin implements a very basic form of name completion which doesn’t work with some of the newer protocols (namely Hipchat which has a distinction between highlight names and display names). This project is to create an interface for protocol plugins to expose what is complete-able as well as implement an API in libpurple that will be used by the user interfaces.\nAlso, some of the new protocols have added additional highlights (that should be complete-able) and cause the user to be notified (blue tab in Pidgin). Examples of the additional highlights are @here and @all in Hipchat, and @channel in Slack.\nAdvanced Features Screen sharing Many modern messenger protocols have the capability of sharing the user’s screen, with or without remote control. While this can be dangerous, viewing a shared desktop or sharing the local desktop is interesting to many users, particularly in managed environments. The maintainers of the purple SIPE protocol have implemented RDP sharing over Lync, and are interested in helping Pidgin/libpurple adopt a protocol-agnostic interface for screen sharing as well as working with us to get XMPP screen sharing capabilities in place.\nSupporting Tools Canary A libpurple UI that watches the status of the IM networks and reports it back to a reporting server. The clients would attempt to stay connected to the network and report on a set interval. Ideally there would be many of these running all over the world all reporting to a redundant server.\nPlugin Website GPlugin Perl Loader Swift Loader PHP Loader Vala Example "},{"uri":"https://pidgin.im/development/faq/","title":"FAQ","tags":[],"description":"","content":"The following is a list of Frequently Asked Questions (FAQs), with answers, and notes related to development using LibPurple.\nAccounts I created an account, but it’s not being saved! You need to use purple_accounts_add() to add the account to the list of available accounts. This list of accounts is saved. Note that many of the functions require an account to be on that list. So you should always call purple_accounts_add() after creating an account.\nHow do I get online with an account? There are two ways you can do this:\n If you have other accounts online, and you want the new account to have the same status as those, then call purple_savedstatus_get_current() to get the current status, and use purple_savedstatus_activate_for_account() for the account. Otherwise, you can simply do purple_account_set_status() to set the status of the account. An account needs to be enabled before it can be connected. So after doing either of the above, you need to enable the account by calling purple_account_set_enabled().\nConversations How can I create a conversation with someone? Use purple_conversation_new(). Use PURPLE_CONV_TYPE_IM if the conversation is an IM (one-to-one person conversation), and use PURPLE_CONV_TYPE_CHAT if it’s a multi-user conversation. One important thing to note here is that the name property of the PurpleConversation struct is the name of the buddy you are creating a conversation with (the documentation states that this is the name of the conversation itself, but it is in fact also the name of the receiving buddy). So a call to purple_conversation_new() takes the name of the buddy as its third argument.\nHow can I send a message in a conversation? Use either purple_conv_im_send() or purple_conv_chat_send(). Note that the first parameter to either of these functions are not the conversation itself. Rather, it’s the IM data or chat data of the conversation which you can get from PURPLE_CONV_IM/PURPLE_CONV_CHAT.\nIs there a way that I can print something in the conversation window, but not send the message? Yes. Use purple_conv_im_write() or purple_conv_chat_write().\nFiles and File Paths What do I do with DATADIR, LOCALEDIR, and LIBDIR? DATADIR, LOCALEDIR, and LIBDIR are defined as functions in the Windows build. Therefore, doing something like this will break the Windows build:\n printf("File in DATADIR is: %s\\n", DATADIR G_DIR_SEPARATOR_S "pic.png") Instead, it should be:\n printf("File in DATADIR is: %s%s%s\\n", DATADIR, G_DIR_SEPARATOR_S, "pic.png"); Why are files opened with mode b? Without this, on Windows systems the opened files will use Windows default translation (for newline, for example). This will cause errors due to newline format and the “bytes read” counts, which will be wrong when comparing the return value of read() to stat().\nWhy are G_DIR_SEPARATOR_S and G_DIR_SEPARATOR used everywhere? This is a matter of maintaining cross-platform compatibility. Windows uses a backslash ("") for directory separators in paths, while UNIX-like systems use the forward slash ("/"). Other OSes may choose to use other separators–for example, prior to Mac OS X, it was common for the directory separator on Macs to be a colon (":").\nIt is impractical to use preprocessor directives throughout the code to determine the path style to use, especially if a new OS were to appear and use a different directory separator. GLib, which we already use, provides the convenient separator macro, so we use this to reduce our code complexity and maintain cross-platform portability.\nGeneral What should I do to get the contents of an environment variable? Use g_getenv().\nShould I use snprintf() or vsnprintf()? No. Use the GLib wrapper functions instead. They are g_snprintf() and g_vsnprintf().\nHow do I get the settings directory? Use purple_home_dir(). You should not use g_get_home_dir() or getenv("HOME").\nWhat is the versioning scheme? This is already defined elsewhere, we should probably just have a page for it… –grim\nThere are three fields in the version: major.minor.micro.\n If the major is changing, you can break plugins. That means both forward- and backward- compatibility. API can be added or removed or whatever you like. If only the minor is changing, you can break forward compatibility only. You may add API, but you can’t remove it. You can mark API as deprecated instead. If only the micro is changing, you can’t break the API at all. Headers Why is win32dep.h causing problems for me? You need to make sure it is the last header you include if you need to include it. Not doing so is asking for problems.\nWhy? –grim\nPlugins and Protocols How should I handle global variables? Use G_MODULE_IMPORT for any global variable located outside your dynamic library. Not doing this will cause “Memory Access Violation” errors on Windows systems.\nWhat should I do for “exported” functions? If your plugin has functions that are to be accessed from outside the scope of its file (.dll or .so), G_MODULE_EXPORT those functions.\n"},{"uri":"https://pidgin.im/development/design-guidelines/","title":"Design Guidelines","tags":[],"description":"","content":"Applicability These guidelines are informal descriptions of the sort of thinking that goes into the design of Pidgin, libpurple, and family. These are not hard-and-fast rules, but they are conscious decisions made by the Pidgin developers which will be violated only after careful consideration. (Or by mistake, and corrected shortly thereafter!)\nUniformity While Pidgin is a multi-protocol IM client, the goal is to hide protocols from the user as much as possible. Obviously users have to know about individual protocols when they create or modify accounts, but in day-to-day communication and usage, the intent is that users don’t have to think about protocols at all.\nThe workflow in Pidgin is intended to be “I would like to chat with Sean about wibbles”, not “I would like to create an XMPP conversation with seanegan@pidgin.im”.\nThe focus is on the goal, not the process. In reaching toward this focus, we have chosen to paper over the differences between the various protocols and features as much as possible (without crippling or needlessly complicating things). This has led to decisions such as the removal of protocol icons from the buddy list and the implementation of contact-aware chats and logs.\nSimpler Is Better Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away. –Antoine de Saint-Exupery\n In general we try to keep the code and the user interface simple. Especially when it comes to preferences in the UI. Pidgin should be as streamlined as possible. It is an IM client, so messaging someone should be easy. See this essay by Havoc Pennington for an explanation of some ideas that we try to follow.\nIt’s important for the code to be simple because this is an open source project and developers come and go. You never know who’s going to be looking at your code next. If you write a function that’s hard to follow then the next person that comes along will end up rewriting it, and that’s counterproductive.\nClean Layering In plain language, this means that the protocol-specific code goes in the protocol plugin (prpl), and that libpurple exists, and is cleanly separated from the user interface. There are practical implications to this. While all of our code depends on glib, only the Pidgin specific parts depend on GTK.\nTo implement, for example, file transfer; there are 3 steps. First, the protocol(s) have to support it. By themselves, however, the protocols can do nothing. So the “core,” libpurple, has to support it also (the second step).\nWe do not want massive amounts of very similar code in libpurple, so the implementation of file transfer at the libpurple level has to abstract away from how individual protocols handle it, so as to be able to use the same calls from all file transfer supporting protocols.\nLast, but not least, before the user can actually send or receive a file, the UI (Pidgin, Finch, or Adium) must support it. These interfaces know nothing about the protocol, and have only limited contact with the core. This helps to enforce the desire for uniformity explained above. It also makes it easier for the only sort of duplication we encourage: many interfaces. The core implementation cannot assume too much about what the UI will do, because the GTK UI (Pidgin) might need to handle a file transfer somewhat differently than the ncurses-based UI (Finch).\nPatches that violate this layering will be rejected. In practice, this means that there is more work involved to introduce a new class of functionality, say file transfer, white-boarding, voice, or video. On the other hand, it means less work to implement any given class of functionality for a new protocol or for a new UI.\nLiving Code Our source code is very much a ‘live’ document. It should reflect what is currently needed, not what used to be needed or what might be needed in the future. Old code should be removed if it isn’t being used (of course, you can only remove public functions and structures when the major version number increases)—it’ll always be in the source code repository if anyone needs it. The code should contain documentation about what it does and why.\nNon-blocking Pidgin and libpurple are single threaded. That means that the network code runs in the same process as the user interface. Network code must be non-blocking, otherwise the UI will be unresponsive. Code should be event-driven. Long running tasks should be asynchronous. File descriptors that need to be watched for changes should be added to the event loop.\n"},{"uri":"https://pidgin.im/categories/","title":"Categories","tags":[],"description":"","content":""},{"uri":"https://pidgin.im/tags/","title":"Tags","tags":[],"description":"","content":""}]