I've used Gajim, a GUI chat client for a long time, but since I am stuck using Campfire for work and no real XMPP transports exists for it, it's been a clunky outlier from my normal chat workflow. I've also been looking for a way to have a persistent, cross platform, chat presence. After a bit of searching, I ended up with the following setup.
But first. where to set this up? Since I didn't want to run this on my main host, I spun up a new small instance on DigitalOcean. I figured this would be a good trial for the service. Next up, a persistent shell, Byobu with tmux for that. Then an IRC bouncer, ZNC. ZNC will be the gateway, via IRC, into the various chat services I want to connect to. For XMPP, Bitlbee. For Campfire, CamperVan and finally for old school IRC, ZNC will just talk to Freenode.
With all of that setup, I can now seamlessly connect and disconnect to conversations from any IRC client.
Some extras... Bitlebee supports Twitter and Identi.ca. I can now read and reply in a IRC window. I also added email notifications when I am away and mentioned in any conversation.