def _broadcastScreen(self, fullscreen=''):
if self.vncserver is None:
import random
import string
pwdfile=os.path.expanduser('~/.config/epoptes/vncpasswd')
pwd=''.join(random.sample(string.letters + string.digits, 8))
subprocess.call(['x11vnc', '-storepasswd', pwd, pwdfile])
f=open(pwdfile)
pwd=f.read()
f.close()
self.pwd=''.join('\\%o' % ord(c) for c in pwd)
self.vncserverport = self.findUnusedPort()
self.vncserver = subprocess.Popen(['x11vnc', '-noshm', '-nopw',
'-quiet', '-viewonly', '-shared', '-forever', '-nolookup',
'-24to32', '-threads', '-rfbport', str(self.vncserverport),
'-rfbauth', pwdfile])
# Running `xdg-screensaver reset` as root doesn't reset the D.E.
# screensaver, so send the reset command to both epoptes processes
self.execOnSelectedClients(['reset_screensaver'],
mode=EM_SYSTEM_AND_SESSION)
self.execOnSelectedClients(["receive_broadcast", self.vncserverport,
self.pwd, fullscreen], mode=EM_SYSTEM_OR_SESSION)
评论列表
文章目录