Mercurial > pidgin.yaz
changeset 16795:db06d4a18246
Add a python script plugins/startup.py which will first check whether a
client with the same home directory is running. If so, it will do a
purple_blist_show() and exit. Otherwise, it will start the client.
Usage example: startup.py pidgin -c /tmp/
I wanted to do a purple_notify_ to notify the user. But because we can't/
don't expose functions with callbacks as parameters to dbus, that was not
possible.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Wed, 02 May 2007 16:18:45 +0000 |
parents | c5bcac0d593d |
children | 6101faae5d92 987882fcb49b |
files | libpurple/plugins/Makefile.am libpurple/plugins/startup.py |
diffstat | 2 files changed, 51 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/plugins/Makefile.am Wed May 02 16:14:09 2007 +0000 +++ b/libpurple/plugins/Makefile.am Wed May 02 16:18:45 2007 +0000 @@ -122,7 +122,8 @@ filectl.c \ fortuneprofile.pl \ ipc-test-client.c \ - ipc-test-server.c + ipc-test-server.c \ + startup.py AM_CPPFLAGS = \ -DDATADIR=\"$(datadir)\" \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libpurple/plugins/startup.py Wed May 02 16:18:45 2007 +0000 @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# +# Makes sure only one purple instance is running +# +# Purple is the legal property of its developers, whose names are too numerous +# to list here. Please refer to the COPYRIGHT file distributed with this +# source distribution. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +import sys +import dbus +import os + +home = os.path.expanduser('~/.purple/') +for arg in range(1, len(sys.argv[1:])): + if sys.argv[arg] == "-c": + home = os.path.expanduser(sys.argv[arg + 1]) + break + +bus = dbus.SessionBus() + +try: + obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") + purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") + userdir = purple.PurpleUserDir() + if not os.path.isabs(userdir): + userdir = os.path.join(purple.PurpleHomeDir(), userdir) + if home == userdir: + print "Already running." + purple.PurpleBlistShow() + else: + print "Starting client from a different home directory." + raise +except: + os.execlp(sys.argv[1], " ".join(sys.argv[2:]))