nullprpl: pidgin null protocol plugin

Nullprpl is a mock protocol plugin for Pidgin and libpurple. You can create accounts with it, sign on and off, add buddies, and send and receive IMs, all without connecting to a server.

Nullprpl was added to Pidgin on 5/30/2007 and debuted in version 2.0.2. See the Pidgin ticket and the original SourceForge tracker for more. Nullprpl was originally distributed as a stand-alone protocol plugin; the last release was mockprpl 0.3.

Beyond basic buddy list and IM functionality, nullprpl supports presence and away/available messages, offline messages, user info, typing notification, privacy allow/block lists, chat rooms, whispering, room lists, and protocol icons and emblems. Notable missing features are file transfer and account registration and authentication.

Nullprpl is intended as an example of how to write a libpurple protocol plugin. It doesn’t contain networking code or an event loop, but it does demonstrate how to use the libpurple API to do pretty much everything a prpl might need to do.

Nullprpl is also a useful tool for hacking on Pidgin, Finch, and other libpurple clients. It’s a full-featured protocol plugin, but doesn’t depend on an external server, so it’s a quick and easy way to exercise test new code. It also allows you to work while you’re disconnected.

14 thoughts on “nullprpl: pidgin null protocol plugin

  1. Hello all,
    I installed null protocol plugin for gaim but I am not able to send IMs to my null protocol buddies.
    Please help me out as soon as possible.
    you can reply me at

    Thnaks in advance…

    – Varun Prakash Shrivastava

  2. hi varun! sorry to hear you’re having trouble. lots of other people have used it successfully, so it might be a problem with your environment or installation. feel free to post more detailed info if you can’t get it to work…

  3. Hi Ryan.
    I folllowed d installation procedure as per d README file.
    After MAKE, file was genrated which i copied into ~/.gaim/plugins directory.
    After d installtion i culd create an account and add buddies as well. but was unable to send m recieve messages.
    could u point out a few areas regarding installtion or environment dat might have gone wrong.
    P.S i am using SUSE -10 and gaim-1.5.0
    thanks in advance.

    – varun

  4. i built and tried the prpl with gaim 1.5.0, and it works ok. i can send messages to anyone, and if i IM myself on the nullprpl account, it sends the message back to me, as it should.

    when you say you’re “unable to send [and] receive messages,” what exactly do you mean?

    actually, now that i’ve looked at it again, it is missing true multiple account support. you can create multiple accounts, and they work fine, but if you send messages between them, they don’t get delivered. logon signals also don’t always happen. neither of those sounds like your problem, though…

  5. Thanks Ryan for helping us.
    actually the problem basically is that When I try to send IM to someone on some other comp it never goes there.Probably coz we dont have any server / mechanism for locating our other buddies.

  6. and more over we have function which only echos back the message.We check if contact name == buddy.I could not find a function to send message to every one.

  7. ah! i think you misunderstood the plugin. from the description above:

    You can create accounts with it, sign on and off, add buddies, set away messages and status, and send and receive IMs…all without connecting to a server.

    it’s not supposed to send IMs across a network. it’s only meant for use on a single computer. it’s intended to allow gaim developers to work on gaim offline, e.g. on the train or at the beach.

  8. Yeah, Gaim 2.0 is a major version number increment, which means it breaks plugin API compatibility. Updating nullprpl is on my todo list. Until then, I’ve added a note that it only supports Gaim 1.x.

  9. hi Ryan,

    Hey here is my problem. We have written our own protocol and registered onto the Gaim as a part of our project. For printing the message onto the chat window i used the same function used in Null Protocol i.e. serv_got_im. But with that function it is printing the the response first and request sent by the user next. We want the other way. So can you help us in this?

    By the way i am varun’s team mate.

    Thanks in Advance…

    PS: u can send to

    – vyshnavi

  10. I was trying to compile it with Gaim 2.0 beta 3 and had an error and a lot of warnings as following:

    nullprpl.c: In function ???nullprpl_login???:
    nullprpl.c:41: warning: implicit declaration of function ???serv_finish_login???
    nullprpl.c: In function ???nullprpl_add_buddy???:
    nullprpl.c:48: warning: implicit declaration of function ???serv_got_update???
    nullprpl.c: At top level:
    nullprpl.c:58: error: syntax error before ???GaimConvImFlags???
    nullprpl.c: In function ???nullprpl_send_im???:
    nullprpl.c:60: error: ???who??? undeclared (first use in this function)
    nullprpl.c:60: error: (Each undeclared identifier is reported only once
    nullprpl.c:60: error: for each function it appears in.)
    nullprpl.c:60: error: ???message??? undeclared (first use in this function)
    nullprpl.c:62: error: ???gc??? undeclared (first use in this function)
    nullprpl.c:64: error: ???flags??? undeclared (first use in this function)
    nullprpl.c: In function ???nullprpl_away_states???:
    nullprpl.c:73: error: ???GAIM_AWAY_CUSTOM??? undeclared (first use in this function)
    nullprpl.c:74: warning: passing argument 2 of ???g_list_append??? discards qualifiers from pointer target type
    nullprpl.c: At top level:
    nullprpl.c:93: warning: initialization from incompatible pointer type
    nullprpl.c:103: warning: initialization from incompatible pointer type

    Sorry for flooding here. I don’t know other ways to look for support. Thank you.

  11. Hi. I am engaged in creating a protocol plugin. Started it today with nullprpl. I added few buddies (test@default, test1@default). But all of them are on offline only. Is there a way to bring them online ???

  12. ooh .. Sorry that was a silly question. I found the answer by adding those accounts.

Leave a Reply

Your email address will not be published. Required fields are marked *