This page contains a list of plugins from trusted authors and the community. This index is to help users find useful plugins but inclusion on this list does not imply that the Pidgin Team endorses the plugins, their quality, or even their usefulness.
To have a plugin included in this index there are a few requirements. The plugin must be released under an OSI Approved License and the code must be audited by a member of the Pidgin Team.
If you believe a plugin should be on this list, please use this issue template to make your request and start the process.
-
What makes an author trusted you ask? Basically they’ve been working with us for a long time and they put out some great software! -
Created by the pidgin community. That is individuals that we haven’t had the opportunity to work with as much as others.
Name | Type | Info | Audited | Maintainer | ||
---|---|---|---|---|---|---|
Adium to Pidgin themes converter |
|
Interface Tweaks | Allows to convert themes from www.adiumxtras.com | |||
Amazon Chime |
|
Protocol | Online meeting and video conferencing | Amazon Web Services — Labs | ||
Attention Button |
|
Interface Tweaks | Hide the attention button | |||
Audible Alerts |
|
Notifications | Audible notification of a received IM by reading the buddy’s screen name | meiser024 | ||
Authorization Blocker |
|
Security and Privacy | The 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. | Konrad Gräfe | ||
Auto Authorization |
|
Accounts and Logs | Automatic handling of request of remote user who wants to appear in your buddy list | |||
Auto Translate |
|
Miscellaneous | Auto translates incoming IMs | |||
Autohide (broken link) |
|
Interface Tweaks | Buddy list improvements like autohide, always on top and hide min/max buttons | |||
Autojoin Chat |
|
Interface Tweaks | Skips the ‘x invited you to join a chat’ message | EionRobb | ||
autoresize |
|
Interface Tweaks | Automatically update the buddy list to fit its contents (vertically). | |||
Away-on-Lock (broken link) |
|
Profile and Status Updates | Sets you as away when the screensaver gets activated. (Linux Gnome and KDE4) | |||
b64 (broken link) |
|
Miscellaneous | Base 64 encoding of chat messages (A very simple Perl plugin) | |||
Battle.net Classic |
|
Protocol | Blizzard’s gaming network: notably for StarCraft, Diablo II, and WarCraft III | nmbook | ||
Battle.net v2 |
|
Protocol | Blizzard’s gaming network for WoW, Overwatch and others | EionRobb | ||
Birthday Reminder |
|
Miscellaneous | Reminds you of your buddies birthdays. | Konrad Gräfe | ||
Block <user> has left the conversation. |
|
Miscellaneous |
Very simple plugin that blocks the message “ has left the conversation.” |
|||
Block AOL System Msg |
|
Miscellaneous | Very simple plugin that blocks messages from “AOL System Msg” when you are logged into AIM from multiple locations. | |||
Bluetooth Notifier |
|
Notifications | Sends new chat messages directly to your cell phone or any other Bluetooth-enabled device | holthuis | ||
Bot Sentry |
|
Security and Privacy | Stop spam bots | deckrider | ||
bOt_tOOls (broken link) |
|
Security and Privacy | Configurable plugin for auto-ignoring yahoo spammers | Eric Dziewa | ||
bridgin |
|
Miscellaneous | Relay messages between chat rooms via a plugin | |||
bridgin-php |
|
Miscellaneous |
Relay messages between chat rooms via a dbus plugin Deprecated for bridgin |
|||
Campfire |
|
Protocol | Protocol plugin for Basecamp’s Campfire IM | jrfoell | ||
Character Counter |
|
Interface Tweaks | Plugin for displaying the character count of the current message. | Konrad Gräfe | ||
ChatGPT |
|
Protocol | Lets you create and chat with OpenAI GPT bots | 2024-11-07 | EionRobb | |
Chatpop |
|
Notifications | Show open chats when receiving a persistent chat message | teleshoes | ||
Command-execute |
|
Notifications | Executes a command on a new message and works for both Pidgin and Finch | tymm | ||
Command-notification |
|
Notifications | Based off Led-notification this plugin will execute a command on receiving a new message | GuySoft | ||
core-answerscripts |
|
Miscellaneous | Framework for hooking simple but powerful “answerscripts” to received messages. | |||
Deltachat |
|
Protocol | IM over email | ccpp | ||
Discord |
|
Protocol | Text chat for gamers | EionRobb | ||
DockApp |
|
Miscellaneous | Allows Pidgin to appear as an AfterStep Wharf icon. | |||
Docker |
|
Protocol | Send stdin commands to Docker containers | samuelkarp | ||
Expand |
|
Interface Tweaks | Automatically expand shortened URLs. No more rick-rolling! | |||
Extended Buddy List Sort |
|
Interface Tweaks | Adds more buddy list sorting options | Konrad Gräfe | ||
Extended Preferences |
|
Miscellaneous | Provides some often-requested preferences | |||
F-List |
|
Protocol | F-List roleplaying community | fchat-pidgin | ||
|
Protocol | Facebook chat | dequis | |||
Facebook Notifier (broken link) |
|
Miscellaneous | Indicates when there are unread Facebook notifications. | |||
Fonomo Video (broken link) |
|
Miscellaneous | Enables Video-chat invitations via Fonomo.com (requires Adobe Flash v9 or higher) | |||
forward2mobile |
|
Accounts and Logs | Forwards and sends your IM messages to/from your existing account that you already use on your mobile with your favorite mobile IM client | |||
Full Screen Busy |
|
Profile and Status Updates | Sets the status to busy (or any saved status) when a full screen application is detected. (Windows) | |||
Gammu |
|
Protocol | Send SMS through your feature phone via usb/serial/bluetooth/irda | EionRobb | ||
|
Google Chat |
|
Protocol | Alternative plugin for Google Chat | EionRobb | |
Google Invisibility Half Scan |
|
Miscellaneous | WARNING! 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). | |||
Google Invisibility Tracker |
|
Miscellaneous | This plugin alerts you when a buddy of yours (using Gmail, GTalk Lab Edition or iGoogle) go invisible | |||
Google Shared Status |
|
Profile and Status Updates | Adds Google Shared Status compatibility that permit to set the status for all the resources connected. This allows to go Invisible… | |||
Google Talk Invisible (broken link) |
|
Profile and Status Updates | Adds the ability to go invisible with Google Talk (XMPP/Jabber protocol) | |||
GroupMe |
|
Protocol | GroupMe group messaging | djhaskin987 | ||
Growl |
|
Miscellaneous | Perl plugin to use Growl. Requires growlnotify. Particularly useful for finch where an IM in a different window may go unnoticed. | |||
Guifications |
|
Notifications | Provides toaster popup notifications | Gary Kramlich | ||
Guiops |
|
Interface Tweaks | GUIOps plugin provides more GUI customization options | |||
Hangouts |
|
Protocol | Alternative plugin for Google Hangouts | EionRobb | ||
Headset |
|
Miscellaneous | Supports mute and hangup buttons from USB headsets | |||
Heroes of Newerth |
|
Protocol | Online video game | theli-ua | ||
Hide Chat |
|
Interface Tweaks | Hides the window/tab for a channel when the account is connected. (useful for auto-join channels) | Konrad Gräfe | ||
Hide Inactive Buddies |
|
Miscellaneous | Plugin to hide inactive buddies in buddy list. Determine inactive buddy by status. | |||
History control (broken link) |
|
Accounts and Logs | Buddy- and Historysync as Perl Pidgin Plugin | |||
Ignore Nick Change |
|
Interface Tweaks | Hides the “X is now known as Y” messages in chats | |||
IM Pusher |
|
Notifications | An extension of Notifo Notifications, pushes your messages at specified statuses (e.g. when you are away), two push services (notifo & pushme.to) are supported | coolwanglu | ||
IM-History Plugin (broken link) |
|
Accounts and Logs | Provides easy and convenient way to store your chats and contact list online (using im-history.com service). | |||
Instant messaging NetCat Port Forwarding |
|
Miscellaneous | Do a basic port forwarding via Instant messaging using NetCat | |||
Instant messaging Remote Access |
|
Miscellaneous | Client/server plugin to exec commands/open a shell in a virtual terminal on buddies PC. It’s a kind of telnet via Instant Messaging | |||
Instant messaging Virtual Terminal |
|
Miscellaneous | Opens a Virtual Terminal in your PC controlled by buddies via IM | |||
Internet Citizen’s Band (ICB) |
|
Protocol | ICB | pelotasplus | ||
IRC Away (broken link) |
|
Profile and Status Updates | Changes your IRC nick to indicate you are away. | |||
IRC Format |
|
Interface Tweaks | A Pidgin/libpurple plugin that lets you send and receive bold/underline/italic/colored text in IRC chats/IMs. | |||
IRC Status |
|
Profile and Status Updates | Changes your IRC nick to indicate you are away | rickyepoderi | ||
Jabber Pseudo Invisibility |
|
Profile and Status Updates | Adds 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!!! | |||
JRC |
|
Protocol | libpurple implementation of a JRChat client | telyn | ||
Juick Plugin |
|
Miscellaneous | Plugin specially designed for [http://juick.com Juick] xmpp-microblogging service, providing support for moods and inline avatars | |||
Keyboard LED Notification (broken link) |
|
Notifications | LegLedNot is a keyboard LED notification plugin for Pidgin | Gabriel Cséfalvay | ||
keys per minute (broken link) |
|
Interface Tweaks | Counts the keys per minute while you are typing a message and displays it. | |||
KNotifications |
|
Notifications | Perl plugin that provides KDE 4 notifications | mrovi | ||
Language Translator |
|
Miscellaneous | Plugin to translate outgoing text from English language to selected language. | |||
Last.FM Plugin |
|
Profile and Status Updates | Shows information from your Last.FM / Audioscrobbler profile in your status message. | natureshadow | ||
Led-notification |
|
Notifications | Provides notifications with laptops’ extra LEDs and similar | Simo Mattila | ||
led-notification |
|
Notifications | Fork of Led-notification. Adds support for ThinkPads | Sitwon | ||
Leftify tabs |
|
Interface Tweaks | Moves a conversation tab to the leftmost position in the tab bar whenever a message arrives. | |||
LINE |
|
Protocol | Mobile SMS replacement | supersonictw | ||
Lock ‘n’ Roll |
|
Profile and Status Updates | Set 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) | DanielLaberge | ||
Logstatus |
|
Accounts and Logs | Logs all the status changes to the buddy history. | |||
Logviewer |
|
Accounts and Logs | Logsearch for all chat logs | |||
lurch |
|
Security and Privacy | Encrypts XMPP conversations using OMEMO | gkdr | ||
MacOS Integration |
|
Interface Tweaks | Adds native menu and notifications for OSX. | |||
MacOS Pidgin Bundle |
|
Interface Tweaks | Adds dock icons for Pidgin on OSX | |||
Manual Resize |
|
Interface Tweaks | Allows manually resizing the conversation window entry area. | |||
Master Password |
|
Security and Privacy | Protects account passwords by a master password. | Konrad Gräfe | ||
Matrix |
|
Protocol | Distributed IM | matrix-org | ||
Mattermost |
|
Protocol | Open-source replacement for Slack | EionRobb | ||
Media Emblems |
|
Interface Tweaks | Adds emblems to the buddy list to show if a user supports Voice or Video calls. | |||
Meebo |
|
Miscellaneous | auto add and accept guests for meebo me widget for livechat from websites in pidgin | |||
MegaHAL |
|
Miscellaneous | connects Pidgin to MegaHAL. The contact will be answered by MegaHAL instead of by us | |||
Meshtastic |
|
Protocol | A Meshtastic plugin for Pidgin | dadecoza | ||
Microblog |
|
Protocol | Twitter/Identica/Laconica updates | fr0nk | ||
Morse Code Talk |
|
Miscellaneous | This 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. | |||
msn-pecan |
|
Protocol | Alternative MSN access | felipec | ||
Mumble |
|
Protocol | Gaming voice chat | petteripitkanen | ||
Music Tracker |
|
Now Playing | Displays the music track currently playing in the status message. Supports a wide range of audio players. | |||
MusicInfo (broken link) |
|
Now Playing | Displays the currently-playing music in your status message and profile. Winamp API compatible. | |||
MX610-notification |
|
Notifications | Provides notifications with Logitech MX610’s IM led | Simo Mattila | ||
NateOn |
|
Protocol | Korean network | kaisyu | ||
NetNexus |
|
Protocol | netnexus.com’s chatrooms | EionRobb | ||
Netsoul |
|
Protocol | French network | wlallemand | ||
Ning |
|
Protocol | Ning-based social networks | EionRobb | ||
No IRC /who |
|
Miscellaneous | Removes the periodic /who check from the IRC protocol, to stop flooding, slowdowns and “Max sendq exceeded” errors | 2024-08-29 | EionRobb | |
Off-the-Record Messaging (OTR) (broken link) |
|
Security and Privacy | Encrypts conversations and provides security even when keys are compromised | OTR Development Team | ||
Office Hours |
|
Accounts and Logs | A 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 | |||
OkCupid |
|
Protocol | OKCupid dating website | EionRobb | ||
Omegle |
|
Protocol | omegle.com’s web-based random chat | EionRobb | ||
PaintBoard |
|
Miscellaneous | This plugin allows you to draw with your friend on common board. | |||
Pidgin Advanced Sound Notification |
|
Notifications | This plugin adds sounds for some notifications to pidgin (Incoming file transfer, Authentication requested, etc.) | Konrad Gräfe | ||
Pidgin Backup |
|
Accounts and Logs | Simply back up your preferences (prefs.xml) | |||
Pidgin Conversation Locker |
|
Interface Tweaks | Prevent closing of important conversations(/tabs) by selectively locking them. | |||
Pidgin Conversation Save Order |
|
Interface Tweaks | Save the order of chats and IMs and restore it the next time you open a conversation. | Konrad Gräfe | ||
Pidgin current track |
|
Now Playing | Current 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. | |||
Pidgin Embedded Video |
|
Miscellaneous | A GTK plugin to watch videos directly into your Pidgin conversation | |||
Pidgin Group Chat Typing Notifications |
|
Interface Tweaks | Display typing notifications of users in a compatible multi-user chat | |||
Pidgin PBar |
|
Interface Tweaks | A toolbar to update some account settings globally. | |||
Pidgin Personal Bar |
|
Interface Tweaks | Adds a section at the top of your buddy list to change your display name and personal message. | |||
Pidgin Windows Position Manager |
|
Interface Tweaks | Places new conversation windows intelligently in Windows (i.e. doesn’t always put them in the top left corner). | |||
Pidgin ZNC Helper |
|
Miscellaneous | Display correct timestamps on messages replayed by a ZNC Bouncer. | Konrad Gräfe | ||
Pidgin-Audacious-Remote |
|
Now Playing | Updates 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…). | |||
pidgin-autoanswer |
|
Accounts and Logs | A personal adviser, that tries to find suitable answers in your previous logs | |||
pidgin-capsnot |
|
Notifications | Keyboard LED Notification (caps-lock/num-lock/scroll-lock) for Pidgin/Finch | EionRobb | ||
pidgin-cmds |
|
Interface Tweaks | Various conversation commands | |||
Pidgin-convreverse |
|
Miscellaneous | Reverses any word on all conversation. | |||
Pidgin-Countdown |
|
Profile and Status Updates | Sets your status counting down to a specific date & time. | Stephen English | ||
Pidgin-dock |
|
Notifications | Emulate Mac OS X — dock behaviour with cairo-dock | Sergey Klimov | ||
Pidgin-Encryption |
|
Security and Privacy | Encrypts conversations using stored RSA keys | obobo | ||
Pidgin-eSpeak |
|
Miscellaneous | Reads incoming text messages via eSpeak (text-to-speech). | |||
Pidgin-GeoURI |
|
Miscellaneous | Convert geo URI scheme to Google Maps or OpenStreetMap link | |||
pidgin-gnome-keyring |
|
Security and Privacy | Stores account passwords in the system keyring instead of as plaintext | aebrahim | ||
Pidgin-google-contact |
|
Miscellaneous | Syncs the buddy list with google contacts | |||
Pidgin-googledesktop |
|
Miscellaneous | Google Desktop Indexing Plugin for Pidgin | |||
Pidgin-GPG |
|
Security and Privacy | Pidgin GPG/OPENPGP (XEP-0027) Plugin | Alex Segler | ||
Pidgin-Identica-Status |
|
Profile and Status Updates | Use a feed from identi.ca as your Pidgin status. | |||
pidgin-im-gnome-shell-extension |
|
Notifications | Make Pidgin IM conversations appear in the Gnome Shell message tray | muffinmad | ||
pidgin-juice |
|
Accounts and Logs | Web-based iPhone interface for Pidgin/Finch | |||
Pidgin-LaTeX |
|
Miscellaneous | Allows you to include mathematical formulas in your conversations. | |||
pidgin-nudge |
|
Interface Tweaks | Shakes your conversation window when you receive a nudge/buzz/zap | |||
Pidgin-Paranoia |
|
Security and Privacy | Encrypts conversations using one-time pads | boognu, nowic | ||
Pidgin-privacy-please |
|
Security and Privacy | Stop spam bots | hwms | ||
Pidgin-Twitter |
|
Protocol | Twitter plugin | honeyplanet | ||
Pidgin-Twitter-Status |
|
Profile and Status Updates | Use a feed from Twitter as your Pidgin status. No OAuth required. Works via RSS. | guysoft | ||
pidgin-wincred |
|
Security and Privacy | Save passwords as windows credentials instead of as plaintext | aebrahim | ||
PidginSnarl |
|
Notifications | Notifications using Snarl on Windows | sven | ||
pidginTeX |
|
Miscellaneous | Renders mathematical expressions. Lots of options, size, colors, etc. Built upon Pidgin-LaTeX. | |||
Pidglet |
|
Miscellaneous | A Windows Vista Sidebar Gadget that displays your buddy list. | |||
PiFo |
|
Miscellaneous | Renders various latex markups and procedural graphics code. | |||
pilt spotify |
|
Now Playing | ‘now listening’ plugin for spotify | |||
Protocol Icon Override |
|
Interface Tweaks | Lets you pick the protocol icon to display per-account | |||
Protocol Status Icons |
|
Interface Tweaks | Adds the protocol icon to the status icons in the buddy list. | Konrad Gräfe | ||
PubNub |
|
Protocol | Real-time messaging system | pubnub | ||
Pulse SMS |
|
Protocol | SMS messaging via your Android phone | EionRobb | ||
Purple History Since |
|
Accounts and Logs | Avoid duplicated chat history on some XMPP servers | Konrad Gräfe | ||
Purple Import Empathy |
|
Interface Tweaks | A pidgin plugin that imports empathy accounts and logs | |||
Purple Plugin Pack |
|
Miscellaneous | Provides over 50 various plugins, including oft-requested IRC-related plugins. | |||
Purple Twitter Syncup |
|
Profile and Status Updates | Set User Tweet as Pidgin Status. Standalone application using reliable OAuth Authentication and DBus. | yogeshpathade | ||
purple-feed |
|
Protocol | RSS and Atom feed reader | moraxy | ||
purple-libnotify+ |
|
Notifications | Provides libnotify notifications | sardemff7 | ||
Purple-Presence (broken link) |
|
Profile and Status Updates | Provides GnomeSession Presence status support to Purple | sardemff7 | ||
Pushbullet |
|
Protocol | Send pushes and SMS (Android-only) via Pushbullet | EionRobb | ||
QIP decoder (broken link) |
|
Miscellaneous | Corrects invalid incoming QIP 2005 diacritics and local symbols | |||
QQ (libqq-pidgin) |
|
Protocol | QQ protocol support | libqq-pidgin | ||
QQ (pidgin-lwqq) |
|
Protocol | QQ protocol support (Based on WebQQ) | xiehuc | ||
QQ (purple-oicq) |
|
Protocol | A binding to takayama-lily’s OICQ library. | axon-oicq | ||
Quickadd |
|
Interface Tweaks | This 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 | |||
Quickpurple |
|
Interface Tweaks | Provides quick buddy lookup, status switch, unread messages list and access to some Pidgin dialogs. | |||
Quote selected text |
|
Interface Tweaks | Quick specify message to answer | |||
Rainbow Bridge |
|
Miscellaneous | Simple relay bot for Libpurple chats | |||
Rediffbol |
|
Protocol | Indian network | Arnold Noronha | ||
Rocket.Chat |
|
Protocol | Open-source replacement for Slack | EionRobb | ||
Roster |
|
Profile and Status Updates | contact suggestions for Jabber, as described in XEP-0144 | dzzinstant | ||
RSS / ATOM |
|
Miscellaneous | Shows Feed updates as messages in a conversation window. Requires Python and presently only works on Linux. | |||
Scroll Lock Indicator |
|
Profile and Status Updates | Flashes scroll/caps/num lock light on new message | dotdias | ||
Scroll to bottom (broken link) |
|
Interface Tweaks | Scrolls chat history of created conversation windows automatically to the bottom. | |||
Send Screenshot (broken link) |
|
Miscellaneous | Take a screenshot and send it to a buddy. | |||
Session Save (broken link) |
|
Interface Tweaks | Session 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. | |||
Signal (presage) |
|
Protocol | A libpurple/Pidgin protocol plugin for Signal (formerly textsecure) using presage. | hoehermann | ||
Signal (signald) |
|
Protocol | Secure mobile messaging. (Deprecated see purple-presage) | hoehermann | ||
Silence |
|
Profile and Status Updates | Mutes everything | megacoder | ||
SIPE |
|
Protocol | Microsoft Office Communicator, Reuters Messaging | Stefan Becker | ||
Skype |
|
Protocol | Skype IM protocol support | EionRobb | ||
Slack |
|
Protocol | Team collaboration tool | dylex | ||
Sluggish |
|
Profile and Status Updates | Sluggish will delay changing your status to Available until you have been back at your keyboard for several minutes. | jamesboston | ||
Smart Ear (broken link) |
|
Notifications | Customized per-buddy sound events | Matt Perry | ||
Smiley Shortcuts |
|
Interface Tweaks | Inserts a smiley on ctrl+(number) combination. | |||
SMS |
|
Protocol | Purple SMS plugin using ModemManager | Librem5 | ||
Spinp |
|
Protocol | Decentralised chat | farcdev | ||
SQLite Logger |
|
Accounts and Logs | IM/Chat logger with a SQLite backend | |||
Status Hot Keys |
|
Profile and Status Updates | Global shortcut keys to set status and manipulate the buddy window visibility | castledragmire | ||
Status RSS (broken link) |
|
Profile and Status Updates | Update status from RSS feed | |||
Status to Twitter |
|
Profile and Status Updates | Update Twitter with your Pidgin Status | |||
Steam IM (mobile) |
|
Protocol | Steam Friends gaming network | EionRobb | ||
Steam IM (native) |
|
Protocol | Steam Friends gaming network | seishun | ||
STFW (broken link) |
|
Miscellaneous | A plugin that helps you teach your buddies how to use google. | |||
Teams |
|
Protocol | Microsoft Teams | EionRobb | ||
Telegram (modern) |
|
Protocol | Secure messenger | BenWiederhake | ||
Telegram (original) |
|
Protocol | Secure messenger | majn | ||
Threema |
|
Protocol | Threema | hbruintjes | ||
TooBars |
|
Interface Tweaks | Add toolbar, status bar, context menu to Pidgin buddy list, hide main menu, change all status by menu (not through Statusbox!) and much more | |||
TooButtons |
|
Interface Tweaks | Add Send and Close buttons to Pidgin conversations | |||
Toolbar Shrink |
|
Interface Tweaks | Shrinks the toolbar of the conversation windows by hiding the text of the buttons. | Konrad Gräfe | ||
TorChat (broken link) |
|
Protocol | p2p instant messaging through Tor hidden service tunnels | prof7bit | ||
Tox |
|
Protocol | Secure instant messaging via Tox protocol | EionRobb | ||
Translit tools |
|
Interface Tweaks | A virtual russian keyboard that decodes message written in ISO-9 translit in russian. | |||
Trillian (IMPP) |
|
Protocol | Trillian Astra protocol | Hi-Angel | ||
Twitter in your Profile |
|
Profile and Status Updates | Insert your Twitter history into your profile. It gets updated periodically. | |||
Twitter Protocol |
|
Protocol | Access Twitter (and status.net / identi.ca) feeds like chat rooms | mikeage | ||
Unhighlight System Messages |
|
Interface Tweaks | Remove the highlight flag from system messages. | Konrad Gräfe | ||
URL Scout |
|
Miscellaneous | This plugin will lookup a url and display a web page title when you receive a link in a chat | |||
URL Shorten |
|
Miscellaneous | Perl 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. | |||
usercast |
|
Interface Tweaks | Copies the nickname you’ve double clicked in the conference chat and pastes it into a conversation’s entry field | |||
Web Pidgin (broken link) |
|
Accounts and Logs | Access buddy list and conversations via mobile web browsers | |||
Web Pidgin Z (broken link) |
|
Accounts and Logs | Fork 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 | |||
|
Protocol | Wechat Protocol Support | sbwtw | |||
What’s my IP |
|
Miscellaneous | Allows buddies to get your external IP by writing ‘ip’ on IM chat | |||
|
Protocol | WhatsApp IM protocol | davidgfnet | |||
WhatsApp (purple-gowhatsapp) |
|
Protocol | WhatsApp IM protocol | hoehermann | ||
Wikipedia look-up |
|
Miscellaneous | Easy look-up received and typed words on Wikipedia. | |||
Window Merge |
|
Interface Tweaks | Merges the Buddy List window with a conversation window | |||
Windows 7 Taskbar |
|
Interface Tweaks | Adds new Windows 7 eye-candy such as task bar menu, progress and emblems | |||
Windows 8 Toast Notifications |
|
Notifications | Native win8 toast notifications | Adrian Keenan | ||
Windows Smooth Scrolling |
|
Interface Tweaks | Gives more precise scrolling control eg with trackpads | |||
Windows Toast Notifications |
|
Notifications | Shows notifications when receiving messages, in the standard Windows design | Christian Galla | ||
WinMX Peer Network |
|
Protocol | File sharing network | ranma42 | ||
WrapMenu |
|
Interface Tweaks | Wrap main menu if it is too wide | |||
Xfer Auto Path |
|
Interface Tweaks | Allows you to automatically set the folder for saving your incoming file transfers by some criteria such as buddy alias. | Konrad Gräfe | ||
XMPP HTTP File Upload |
|
Miscellaneous | XEP-0363: HTTP File Upload plugin for libpurple (Pidgin, Finch, etc.) | |||
XMPP Ignore Groups |
|
Miscellaneous | Ignores server-sent XMPP groups so that you can move buddies around on annoying servers (e.g. Facebook) | EionRobb | ||
XMPP Message Carbons |
|
Miscellaneous | Displays self-sent messages from other XMPP clients | |||
XMPP MUC Presence |
|
Miscellaneous | Shows participant’s presence icon in chat room. | |||
XMPP Receipts |
|
Miscellaneous | Shows a delivering notification if the recipient supports it | |||
XMPP URI Links |
|
Miscellaneous | Support clicking on xmpp links, such as xmpp:foo@bar.net?message to open a chat window. | |||
xssidle |
|
Profile and Status Updates | Set idle time based on information from X11 Screen Saver (such as xscreensaver). | mehturt | ||
Yahoo |
|
Protocol | Replacement plugin for Yahoo 2016 | EionRobb | ||
YouTube Title Adder |
|
Miscellaneous | Displays video titles for incoming YouTube links. | |||
YuLastFM |
|
Now Playing | Yu Last.fm Pidgin tune status plugin. |
Share this search:
Here are
27 public repositories
matching this topic…
Pidgin/libpurple plug-in for WhatsApp Web.
-
Updated
May 5, 2025 -
C
Pidgin libpurple bridge to signald.
-
Updated
Jul 21, 2024 -
C
HTTP File Upload plugin for libpurple (XMPP Protocol)
-
Updated
Sep 2, 2022 -
C
Windows Toast Notification Plugin for Pidgin
-
Updated
Apr 16, 2025 -
C++
Pidgin/libpurple plugin for signal using libsignal-service-java (and parts of signal-cli).
-
Updated
Mar 20, 2022 -
C++
A pidgin/libpurple plugin for the F-List roleplaying webchat
-
Updated
Jun 30, 2021 -
C
ZNC Helper uses message timestamp from a ZNC Bouncer and sets them within Pidgin so that replayed messages will be displayed with the correct timestamp.
-
Updated
Jun 3, 2022 -
C
Hide group chats while auto-joining them.
-
Updated
Feb 26, 2021 -
C
Pidgin plugin for windows 8 toast notifications
-
Updated
Oct 31, 2017 -
Perl
Pidgin plugin adding macOS shell integration
-
Updated
Nov 20, 2021 -
Swift
This plugin saves the order of chats and IMs and restores it the next time you open a conversation.
-
Updated
Feb 26, 2021 -
C
This plugin allows you to sort your buddy list more flexible than Pidgin does.
-
Updated
Feb 26, 2021 -
C
Join Microsoft Lync Conference via invite link on Linux
-
Updated
Oct 12, 2019 -
Shell
Avoid duplicated chat history on some XMPP servers.
-
Updated
Feb 26, 2021 -
C
Trillian IMPP plugin for libpurple
-
Updated
Dec 10, 2022 -
C++
Pidgin Birthday Reminder reminds you of your buddies birthdays. Birthdays can be set by hand or be automatically filled-in for ICQ, MSN and XMPP protocols.
-
Updated
Feb 26, 2021 -
C
Protects account passwords by a master password.
-
Updated
Feb 26, 2021 -
C
brew tap for Pidgin plugins
-
Updated
Aug 31, 2022 -
Ruby
Plugin that allows to use zx2c4 pass to store passwords
-
Updated
Mar 29, 2017 -
C
Pidgin/libpurple plugin that displays incoming messages on a Logitech G15 LCD screen
-
Updated
Nov 5, 2021 -
C
Improve this page
Add a description, image, and links to the
pidgin-plugins
topic page so that developers can more easily learn about it.
Curate this topic
Add this topic to your repo
To associate your repository with the
pidgin-plugins
topic, visit your repo’s landing page and select «manage topics.»
Learn more
Pidgin is our favorite instant messaging application for Windows, not only for all its great built-in features, but for all the features you can add to it via plugins. It comes with a few built-in, but there are a ton of others out there if you know where to find them. Here are our favorites.
Some of these plugins come baked in with Pidgin, and you don’t need to download or install anything extra—you just need to turn them on under Tools > Plugins in Pidgin.. Others will require installation, which can vary from plugin to plugin. Sometimes they come with a Windows installer, but other times they’ll just come as a set of folders or DLL files inside a ZIP file. In this case, copy them to your Pidgin folder so that the DLL files end up in C:\Program Files\Pidgin\plugins (or C:\Program Files (x86)\Pidgin\plugins for 64-bit machines), and that any other files get dropped into their associated folders inside Program Files\Pidgin. Check each plugin’s documentation for exact instructions on how to install it. Once it’s installed, you’ll be able to find it in Tools > Plugins—no need to restart Pidgin or anything.
Note: This guide is mainly geared toward Windows users, but Pidgin is our favorite Linux IM client too, so a few of these will work great on Linux as well. Linux also has some other great plugins that we didn’t mention here, though, and installing plugins on Linux could be a little different, so be sure to check each plugin’s documentation for more info.
GTK Theme Control
Pidgin’s default colors are a little bright for my tastes, and the fonts are a little big. So, I like to use the Pidgin GTK Theme Control plugin to tweak the interface more to my liking. It comes with Pidgin, and lets you change the colors you see in conversations, the fonts and font sizes, and even the horizontal separation of the tree view in your buddy list. You can also disable the typing notification text, if that bugs you.
Note that this doesn’t theme Pidgin, per se, it just lets you tweak a few things here and there. To give it a different theme completely, you’ll want to check out the GTK Theme Switcher program, which you can read more about on this page of Pidgin’s documentation.
I’dle Mak’er
No one seems to follow IM etiquette anymore. It’s like we’re a bunch of cavemen. If you find that your friends keep messaging you even when you’re away, you can set your idle time manually with the the pre-bundled I’dle Mak’er plugin. That way, you can appear idle when you’re really not, and people will hopefully leave you alone. After enabling in the Plugins section, just head to Tools > I’dle Mak’er to set your idle time for a specific account, or for all your accounts at once. And give your friends a subtle hint by sending them our primer on instant messaging status etiquette, while you’re at it.
History and SessionSave
If you need to remember your last conversation with someone, the built-in History plugin will show it every time you open a new IM window—so you’ll never just have a blank box with no text. Coupled with the non-standard SessionSave plugin, which reopens all your old conversations and tabs on each launch, you can pick up right where you left off every time you restart Pidgin.
Windows 7 Taskbar
The Windows 7 Taskbar plugin adds a number of Windows-specific features to Pidgin, including jumplist support, a status icon on the taskbar, support for showing file transfer progress, and tab thumbnail previews on Aero Peek. I’m a little shocked none of this is baked into Pidgin, as for other Windows programs, this is basic functionality. If you use Pidgin on Windows 7, you should absolutely have this extension.
Extended Buddy List Sort
If Pidgin’s default buddy sorting options aren’t enough for you, the Extended Buddy List Sort plugin gives you a bit more control. You can give your buddy list three different rules for sorting, in order of importance. You can sort them by status then by name, by online time then by protocol, and more. It’s pretty useful.
Message Notification, Pidgin GNTP, and Audible Alerts
Pidgin isn’t great at notifying you when new IMs come in or buddy statuses change, but a number of plugins can help with that. Message Notification, built into Pidgin, gives you a few more options like flashing the window and showing the number of unread messages in the titlebar. If you use Growl for Windows, you can also download the Pidgin GNTP plugin to get Growl notifications for all sorts of events. And, lastly, the Audible Alerts plugin replaces the beeps and dings with a text-to-speech reading of who’s IMing you, so if you’re away from your keyboard you can tell whether it’s important or not.
Off the Record and Windows Credentials
If you need to add a layer of security to your IMs, Off the Record is the plugin to do it for you. Not only can you disable logging and send encrypted messages, you can even make sure your buddy is who you think they are through a question-and-answer system, a shared secret, or digital fingerprint verification. There’s a lot to this plugin, so you can read more about it at its homepage and in its readme. Note that this extension is not the same as Gtalk’s built-in «off the record» feature that just disables logging; you can’t get that in Pidgin.
While you’re tweaking security settings, though, you might want to deal with one of Pidgin’s biggest sources of complaints and install the Windows Credentials plugin. By default, Pidgin stores its passwords in plain text, which many see as insecure—though the Pidgin team has an explanation for why they do it. If it still makes you uncomfortable, though, the Windows Credentials extension saves your passwords using the Windows Credentials API instead.
Lock ‘n’ Roll
Ever leave your computer, but forget to change your status to Away? Lock ‘n’ Roll fixes that, automatically setting you as Away when you lock your computer, with whatever status you want. We wish it could set you to Offline or Invisible, too, but for right now it can only change your status to away.
Advanced Shorturl and Expand
If you frequently share long URLs that clutter up your IM window, the Advanced Shorturl plugin will automatically shorten URLs after a specific length with is.gd. You can choose the maximum length for a URL before it becomes shortened, which is nice, though this plugin takes a bit more work to install (you’ll need ActivePerl 5.10 installed, which you can grab along with the plugin on its download page).
Alternatively, if you don’t like short URLs because of the security issues surrounding them, you can instead install the Expand plugin, which automatically expands URLs from a ton of different shorteners, so you always know where you’re headed—which is great, since IM and Facebook Chat is so often used to spread spam and viruses.
There are a ton of great Pidgin plugins out there, but these are definitely our favorites for customizing the look and usability of our favorite IM client. Do you have one that you love, but we forgot to mention? Share it with us in the comments below.
В данной статье мы рассмотрим как собрать плагин поддержки протокола Skype для Pidgin под ОС Microsoft Windows, который работает без оригинального клиента. Ранее мы уже подробно рассматривали сборку под GNU/Linux.
Загрузка и установка MSYS2
Для сборки плагина skypeweb нам потребуется полный инструментарий, необходимый для компиляции Pidgin из исходных текстов. В данном руководстве будет использоваться MSYS2.
Загружаем официальный инсталлятор MSYS2 со страницы проекта на SourceForge для платформы i686 и запускаем его.
После запуска появится приветственное окно, где следует сразу же нажать кнопку Далее для перехода к следующему этапу.
Второй шаг программы — выбор каталога, в который будет устанавливаться MSYS2 и все его компоненты. По умолчанию предлагается C:\msys32. Оставим предложенный вариант.
Больше здесь изменить ничего нельзя, поэтому сразу жмём Далее.
Программа начнёт распаковывать базовые пакеты MSYS2, необходимые для работы. Ждём окончания процесса и снова жмём Далее.
На предпоследнем шаге мастера можно ознакомиться со списком установленных файлов и каталогов. По окончании следует нажать Далее.
На этом установка MSYS2 завершена. Ставим флажок в чекбокс Запустить MSYS2 сейчас и нажимаем кнопку Завершить.
Устанавливаем необходимые пакеты
Запускаем терминал MSYS2 если не сделали этого ранее при помощи файла C:\msys32\msys2_shell.bat или Пуск — (Все) Программы — MSYS2 — MSYS2 Shell.
Обновим список доступных пакетов:
pacman -Sy
Теперь загрузим нужные нам пакеты:
pacman -S mingw-w64-i686-toolchain mingw-w64-i686-json-glib automake autoconf tar unzip pkg-config wget
Утилита pacman запросит подтверждение, поэтому смело жмём Y для продолжения и ждём окончания загрузки и установки. Закрываем MSYS2, он нам больше не понадобится.
Запустим консоль MinGW при помощи C:\msys32\mingw32_shell.bat или Пуск — (Все) Программы — MSYS2 — MinGW 32-bit Shell.
Для начала создадим каталог C:\dev, в котором и будем собирать Pidgin и плагин SkypeWeb:
mkdir C:/dev
Перейдём в этот каталог:
cd C:/dev
Загрузим скрипт, который подготовит всё для сборки:
wget --no-check-certificate https://github.com/renatosilva/pidgin-windev/raw/master/pidgin-windev.sh
Теперь запустим его:
./pidgin-windev.sh .
Если всё нормально, то начнётся загрузка и установка необходимых для сборки компонентов. Это займёт несколько минут (зависит от скорости Интернет-соединения).
Загрузим исходники SkypeWeb в архиве и распакуем только каталог skypeweb из него в C:/dev.
Загрузим исходники библиотеки libjson-glib из официального репозитория и распакуем в каталог C:\dev\win32-dev.
Теперь открываем файл C:\dev\skypeweb\Makefile.eion в любом текстовом редакторе и вносим правки с исправлениями путей.
Запускаем сборку:
cd C:/dev/skypeweb /usr/bin/make -f Makefile.eion
Если всё прошло успешно, получаем на выходе libskypeweb.dll.
Время на прочтение7 мин
Количество просмотров1.7K
Преамбула
Будучи поклонником многопротокольных IM-клиентов, я довольно долго пользовался Miranda NG. Но кривоватая поддержка некоторых современных протоколов вроде Discord мешала пользоваться только ей, хотя возможности кастомизации у неё очень широкие. В конце-концов практичность взяла верх над перфекционизмом, и я установил Pidgin 2.14. Несмотря на некоторую страшноватость, программа оказалось весьма практичной. Однако была и ложка дёгтя.
Как выяснилось, трёхуровневая иерархия Discord (сервер — категория — канал) скверно ложится на двухуровневую иерархию списка контактов (группа — контакт), и соответствующил плагин решил эту коллизию просто — каждая категория была группой, чьё имя содержало префикс сервера. Разумеется, это привело к тому, что даже при моём скромном круге общения в контакт-листе образовалось 30+ групп — помимо групп из других протоколов. Ориентироваться в этом было не слишком удобно — хотелось иметь возможность устроить какую-то иерархию, например, сделать над-группы.
Однако быстрый поиск вывел на старый баг-трекер Pidgin, где такая возможность была упомянута… и отмечена как wont-fix. Упс. Ну что ж, где наша не пропадала — сделаю имитацию сам!
Полезные ресурсы
-
Старая вики проекта Pidgin
-
Актуальная документация разработчика
-
Репозиторий Pidgin
-
Новый баг-трекер Pidgin
-
Репозиторий purple plugin pack для Pidgin
Концепция
Pidgin в основном поддерживает плагины, написанные на C. Есть загрузчики дла плагинов на Perl, а также механизм взаимодействия с DBus, но C является основным средством разработки. Кроме того, из всех затронутых языков он мне наименее незнаком.
Далее, ключевая идея плагина была сформулирована следующим образом: скрывать или комбинировать группы в списке контактов согласно некоторому набору правил. При этом наборы правил должны задаваться пользователем, иметь читаемое имя и, желательно, иконку. Поскольку плагин для Discord генерировал группы вида «Имя сервера: Категория», то напрашивалась идея использования wildcards в плагинах, чтобы не пришлось перечислять все категории сервера по отдельности. Также показалось стоящим предусмотреть возможность указания нескольких правил в наборе, а также создания отрицающих правил (исключение группы из показа).
Таким образом, задача была декомпозирована на составляющие:
-
Понять, как устроен плагин Pidgin.
-
Разобраться, какое средство использовать для wildcard-matching’а, и реализовать логику применения правил к группе.
-
Понять, как устроен контакт-лист libpurple (бэкенд клиента Pidgin), и как получить сведения о группе.
-
Понять, как устроено отображение списка контактов в Pidgin, и как скрыть или показать контакт в списке.
-
Понять, как устроен GUI Pidgin в целом, и как в него добавить свою панель инструментов.
-
Разобраться с хранением настроек, и созданием диалога настроек для своего плагина.
Простой плагин для Pidgin
К счастью, в репозитории нашёлся довольно понятный hello-world.c, описывающий базовую структуру плагина для Pidgin. Все плагины можно разделить на несколько категорий:
-
core — плагины, работающие только с libpurple и никаким образом не затрагивающие UI.
-
prpl — плагины, реализующие протоколы месседжеров.
-
lopl — загрузчики для плагинов на скриптовых языках.
-
gtk, gtk-x11 и gtk-win32 — плагины, работающие с GUI — универсальные, Linux-специфичные и Windows-специфичные.
-
gnt — плагин для консольной версии клиента (Finch).
Очевидно, нас интересует gtk-плагин, на худой конец gtk-win32.
И сам Pidgin, и нижележащая библиотека libpurple построены на базе GLib и графического тулкита GTK — правда, довольно старых версий. Из этого следует несколько выводов. Во-первых, для управления памятью часто используется механизм счётчика ссылок, что несколько упрощает решение вопросов, касающихся времени жизни объектов. Во-вторых, GLib предоставляет механизм сигналов, позволяющий достаточно прозрачно реализовать обработку событий, в том числе событий интерфейса. libpurple активно использует сигналы для оповещения клиентского кода о событиях, поступающих из IM-сетей, а также об операциях над хранимыми данными вроде списка контактов. Поэтому вопрос реакции на то или иное событие будет сводиться к поиску нужного сигнала и подписке на него.
Попутно решилась задача реализации windcard-matching’а — GLib представляет соответствующие средства, над которыми потребовалась лишь небольшая логическая надстройка.
BuddyList и все-все-все
По итогам вдумчивого чтения документации (и осторожных расспросов на полуофициальном Discord-сервере проекта) выяснилось следующее. Формально список контактов (buddy list) из libpurple представляет собой дерево из разнородных узлов, подобно известному паттерну «компоновщик». Это дерево обёрнуто в объект PurpleBuddyList.
Однако на практике это дерево формирует фиксированную трёхуровневую иерархическую структуру. На верхнем уровне находятся группы контактов, представленные объектами PurpleGroup, на нижнем — индивидуальные участники (PurpleBuddy), а на промежуточном — чаты (PurpleChat) и контакты (PurpleContact) как таковые. Элементы на каждом уровне дерева связаны в двусвязный список — таким образом, родитель хранит только ссылку на своего первого потомка.
По сути, контакты в libpurple являются аналогами мета-контактов в других клиентов — они позволяют объединить несколько учётных записей одного человека в одну сущность, что довольно удобно. Однако это никак не помогало в решении задачи по группировке групп контактов. Пришлось отказаться от идеи о группировке, и остановиться на варианте со скрытием «ненужных» групп.
Ради этого пришлось прошерстить исходный код, отвечающий за отображение контакта в графическом интерфейсе Pidgin. И тут всплыли так называемые флаги контакта, среди которых был флаг INVISIBLE. Элементы с таким флагом не отображались в списке контактов независимо от их типа. Бинго?
Почти. Как быстро выяснилось, скрытие контакта в группе могло приводить к скрытию всей группы. Такое поведение являлось следствием логики в функции pidgin_blist_update_group(), которая скрывала всю группу, если обновлялся скрытый контакт в ней. Почему так, я до сих пор не понял. Тем не менее, это ещё не означало непригодности данного механизма — только ограничивало плагин скрытием групп целиком.
Графический интерфейс
Сам же графический элемент списка контактов оказался устроен и проще, и сложнее чем я предполагал. Проще, потому что это оказался всего один компонент — GtkTreeView. Сложнее, потому что этот компонент имеет дело с отдельным объектом-моделью (скрытом за интерфейсом GtkTreeModel), и обладает заковыристым механизмом для кастомизации рендеринга элементов модели на экране. Как следствие, чтобы вмешаться в его работу в достаточной степени, мне пришлось бы повторить реализацию солидного куска списка контактов Pidgin — что было бы долго, сложно и плохо совместимо с другими плагинами. Как итог, для реализации скрытия пришлось остановиться на описанном выше флаге INVISIBLE.
Тем не менее, GtkTreeView мне пригодился в ходе реализации диалога редактирования правил.
Что касается остального графического интерфейса, то там всё оказалось достаточно просто. TreeView завернут в несколько контейнеров, ссылки на которые хранятся в публично доступной структуре данных. Таким образом, создав свой собственный контейнер, можно добавить его в уже существующие. Но такой подход серьёзно ограничен в возможностях. Можно только добавить панель статического размера выше или ниже списка контактов, но не слева или справа. Плагин mystatusbox из purple plugin pack добавляет панель с изменяемым размером, но для этого ему приходится перелопачивать половину интерфейса. Я не настолько был уверен в своих силах, чтобы провернуть подобное и не сломать совместимость с mystatusbox (которым пользовался и сам), поэтому ограничился простой панелью.
Хранение настроек
Для хранения настроек libpurple реализует свой собственный механизм — своего рода иерархическую базу данных (на практике она сохраняется в XML-документ). К счастью, нашелся неплохой пример работы с ней. Хотя подход довольно прямолинейный — есть операции создания, чтения, задания и удаления настроек, а также несколько базовых типов данных — не обошлось без подводных камней.
В первую очередь, для проверки ситуации, когда настройка существует, но имеет неправильный тип, требуется довольно громоздкий код. Добавление отсутствующей настройки выполняется куда как проще. Также остаётся открытым вопрос о миграции с одной схемы настроек на другую, например, при обновлении плагина.
Также, самый сложный стандартный тип данных — это список строк. Поскольку в моём случае нужно было иметь дело со списком структур данных, пришлось писать умеренно сложный код для десериализации этой структуры.
Наконец, Pidgin предоставляет три механизма для изменения настроек плагина.
Первый, упрощённый, позволяет указать список из записей, содержащих имя параметра и его желаемое представление. На основании этого списка Pidgin автоматически сформирует диалог настроек, и выполнит их привязку к элементам управления.
Второй, чуть более сложный, позволяет задать кастомный диалог в качестве диалога настроек, и показывать его вместо стандартного.
Третий, наиболее универсальный — воспользоваться механизмом действий, т.е. дополнительных пунктов меню, добавляемых плагинами. В рамках действий можно выполнять практически любые операции, в том числе показ нужных диалоговых окон. Единственное ограничение — эти окна будут работать параллельно с остальной программой.
В итоге настройки плагина были разбиты на две секции. Одна описывает только правила скрытия/показа групп, и размещается в меню действий плагина — так как пользователь будет пользоваться ей более часто. Вторая описывает внешний вид и размещение селектора правил, и спрятана в станадртном диалоге настройки плагина. По идее, ей достаточно воспользоваться однажды, а далее о ней можно будет забыть.
Результат
Интерфейс выбора показываемых групп выглядит примерно так:
Под главным меню располагается панель выбора наборов правил. Каждому набору сопоставлено название и иконка для облегчения восприятия. Для примера приведены три набора — один показывает всё, второй — только группу General, третий — всё кроме General.
Настройка правил осуществляется через диалог настроек, показанный ниже. Не слишком красиво, но свои функции выполняет.
Сам плагин можно найти на Github.
Итоги проекта
Считаю ли я плагин полезным? Мне он пригодился. Если сам плагин, или приведённая в статье информация пригодятся кому-то ещё, будет замечательно.
Насколько сложно было въехать в тематику? На удивление просто, несмотря на то, что я ранее не имел дела ни с разработкой на чистом C, ни с GTK. Кодовая база pidgin достаточно хорошо организована, хотя документация иногда оставляет желать лучшего.
Что было самым трудным в разработке? Как ни странно, настроить окружение для сборки проекта на Windows. Под Linux это оказалось намного проще, так что почти вся разработка велась на домашнем сервере под Debian. Инструкция по сборке есть, но она требует адаптации. В итоге пришлось просить помощи на Discord-сервере Pidgin.
Почему я счёл необходимым написать эту статью? Потому что мне пришлось повозиться, собирая крупицы документации и продираясь через мёртвые ссылки, и захотелось сохранить полученные знания.
И хотя сейчас Pidgin переживает переход на версию 3.0 с сопутствующей переработкой кодовой базы, версия 2.x.y ещё долго будет актуальна. Да и в целом ситуация выглядит так, словно мультипротокольные клиенты находятся в некотором упадке. Если это не так, отпишитесь в комментариях — буду рад ошибиться.