Keep the classic Pidgin 2 buddy list alive on modern Linux desktops.
A fork of Pidgin 2.15.0dev (the 2.x line) ported from GTK+ 2 to
GTK 3. It keeps the classic Pidgin 2 experience β the same buddy list,
conversation windows, status box, plugins and protocols β while running on a
modern, still-maintained toolkit.
This is not Pidgin 3. The goal is to keep the mature 2.x UI alive on current systems, not to migrate to the 3.x codebase.
β Like keeping Pidgin 2 alive? Star the repo β it genuinely helps others find it.
See AUTHORS and COPYRIGHT for the list of contributors.
| Component | Description |
|---|---|
libpurple |
Core library for IM clients that connect to many networks (XMPP, etc.). |
| Pidgin | Graphical IM client written in C, using the GTK 3 toolkit. |
finch |
Text-based IM client written in C, using the ncurses toolkit. |
The port replaces the deprecated GTK 2 APIs that either warn loudly or render nothing under GTK 3, and fixes the layout and teardown regressions that came with the toolkit change:
- Theming moved from GTK 2 RC files to GTK 3 CSS providers and live
style contexts β buddy-list colors, dark-mode detection, the
pidginrcplugin, per-tab conversation colors, and custom fonts. - Deprecated widgets/APIs replaced β
GtkArrow,GtkMisc/GtkAlignmentalignment,gtk_widget_modify_font,gdk_cairo_create,gdk_screen_width/height(now per-monitor geometry), tree-view rules hints, and stock item / item-factory menus. - Layout fixes β collapsed conversation history, dead voids below the entry
box,
GtkPanedchild collapse in the log viewer, a buddy list that now shrinks horizontally, and the status box no longer stretching over the list. - Status box β self-painted dropdown arrow (
gtk_render_arrow(), always visible under any theme), restored avatar box, and fixes for the status-dropdown hang and shutdownGObjectassertions. - Menu icons β restored under GTK 3 (which hides
GtkImageMenuItemicons by default) and aligned into one column with check items. - Built-in tray icon β an Ayatana AppIndicator (SNI) docklet backend that works on modern desktops out of the box.
Pidgin is built with Meson and Ninja:
meson setup build
ninja -C buildRun meson configure build to see the available options, and set them with,
for example:
meson setup build -Dgtk=enabled -Ddbus=disabledBuilding Pidgin requires GTK 3 and its development files; Meson fails to configure without them. Install them via your distribution's package manager.
Optional dependencies:
- Sound β GStreamer.
- Spellchecking β GtkSpell.
- Tray icon β
ayatana-appindicator3-0.1(falls back toappindicator3-0.1); auto-detected.
Read the INSTALL file for more detailed directions.
Install so plugins and other files land where they are expected:
sudo ninja -C build installThen run pidgin (or finch) and add a new account to get started.
To run straight from the build tree without installing:
env LD_LIBRARY_PATH=build/libpurple \
PURPLE_PLUGIN_PATH="$PWD/build/libpurple/plugins:$PWD/build/pidgin/plugins" \
./build/pidgin/pidginPlugin support is enabled by default. To disable it entirely, configure with
-Dplugins=false and rebuild.
ninja -C build install puts plugins in $PREFIX/lib/purple ($PREFIX
defaults to /usr/local, set it with meson setup build --prefix=...).
libpurple looks there by default. Plugins may also be installed per-user in
~/.purple/plugins. Pidgin and Finch additionally look in $PREFIX/lib/pidgin
and $PREFIX/lib/finch for UI-specific plugins.
To build a plugin from a .c file, add it to the appropriate plugins/
directory's meson.build and rebuild with ninja -C build.
For upstream Pidgin issues, see https://issues.imfreedom.org/. For problems specific to this GTK 3 fork, use this repository's issue tracker.