[![pidgin wordmark](img/wordmark.png)](https://pidgin.im/)

# Purple and Pidgin

libpurple is a library intended to be used by programmers seeking to write an
IM client that connects to many IM networks. It comes with support for Bonjour,
IRC, and XMPP, among others and there are many more networks supported via
[third party plugins](https://pidgin.im/plugins/).

Pidgin is a graphical IM client written in C, which uses the GTK toolkit.

These programs are not endorsed by, nor affiliated with, any proprietary
instant messaging company in any way.

## Contributors

See COPYRIGHT for the list of contributors.

## Building

There are two main ways you can build Pidgin. If you are on Linux you may use
[Flatpak](https://www.flatpak.org/) to get going quickly. The other option is
to do a normal build.

Please note, that Pidgin 3 will not be targeting Long Term Support
distributions or even stable distributions until it gets closer to a general
release. Doing so is likely to generate tech debt as the libraries we're
using are also constantly updating. If you would like to try Pidgin 3 on one of
these operating systems using the Flatpak is highly recommended.

### Flatpak

Building with Flatpak is very straight forward. To get started you'll need to
make sure that you have the `flatpak` package installed. You may find the
official [Flatpak Setup page](https://flathub.org/setup) useful here.

Once Flatpak is setup, you can install the `flatpak-builder` flatpak to make
sure you have the most recent version. You can install it with the following
command:

```
flatpak install --user org.flatpak.Builder
```

Now that you have `flatpak` and `flatpak-builder` installed, you can build and
install Pidgin3 with this command:

```
flatpak run org.flatpak.Builder --user --force-clean --sandbox --install-deps-from=flathub --repo=repo build-flatpak --install im.pidgin.Pidgin3.yml
```

Once that's successful, you can run it with `flatpak run im.pidgin.Pidgin3`

### Meson

Pidgin uses [Meson](https://mesonbuild.com) as its build system. There is a
long list of dependencies that is not currently documented here due to
differences in package names across operating systems. We plan to fix this
soon, if you have any suggestions on how to handle this, please let us know.

You can quickly build and run Pidgin 3 with the following commands:

```
meson setup build
meson compile -C build
meson devenv -C build pidgin3
```

If you're looking to customize the build there are quite a few options to set.
You can view them by running `meson configure` in your build directory. When
you've found a setting to change, you can specify the options when running
meson like the following:

```
meson setup -Ddoc=true build
```

If you have already run `meson setup` you can use `meson configure` instead:

```
cd build
meson configure -Ddebug=true
```

Previously while developing in our code base you would need to install
everything to be able to run or test anything. With meson this is no longer the
case. You can compile via the steps above, and then run directly from the build
directory with the following command to run Pidgin 3:

```
cd build
meson devenv pidgin3
```

This can also be used to work on external projects and plugins but entering the
`devenv` with `meson devenv` and then `cd`'n to your projects directory. The
`devenv` will set everything up and your build system should be able to find
everything by the normal means.

Obviously you're still free to install into your system directly, but then
you'll most likely end up having orphaned files laying around that our build
system doesn't know how to remove once they're removed from our code base. This
is one of the primary reasons we recommend building and running from a devenv
as meson doesn't provide an uninstall target.

Another benefit is that the devenv uses a configuration directory inside of the
build directory rather than in your home directory which makes it much easier
to avoid issues between your development and normal instances.

If you come across a bug, please report it at:
[issues.imfreedom.org/issues/PIDGIN](https://issues.imfreedom.org/issues/PIDGIN)

## Plugins

libpurple and Pidgin ship with a number of plugins, but you can find additional
third party plugins at [pidgin.im/plugins](https://pidgin.im/plugins).

## Developing

You can find more information about Pidgin development in the
[development section](https://pidgin.im/development/) of our website.

## Sponsors

Pidgin is supported by DigitalOcean who graciously sponsors all of our
infrastructure.

[![DigitalOcean referral link](img/DO_Logo_horizontal_blue.png)](https://www.digitalocean.com/?refcode=b69e5dddf595&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge)

