Skip to content

Commit 2c09ddf

Browse files
authored
Merge pull request #251 from Monsterovich/master
Make sure that applet.py is running one instance per user
2 parents 80f8ec2 + 0bec5b4 commit 2c09ddf

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

applet.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
from functools import reduce
2222
cups.require ("1.9.42")
2323
import sys
24+
import socket
25+
import getpass
2426
from debug import *
2527

2628
import dbus
@@ -459,6 +461,16 @@ def check_for_jobs (self, *args):
459461
except:
460462
pass
461463

464+
try:
465+
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
466+
# Create an abstract socket, by prefixing it with null.
467+
sock.bind("\0printer-applet-lock-user-" + getpass.getuser())
468+
except socket.error as err:
469+
error_code = err.args[0]
470+
error_string = err.args[1]
471+
print("Process already running ({0}:{1}). Exiting.".format(error_code, error_string))
472+
sys.exit(0)
473+
462474
loop = GLib.MainLoop ()
463475
runloop = RunLoop (session_bus, system_bus, loop)
464476
try:

0 commit comments

Comments
 (0)