Skip to content

Commit 7dcb85e

Browse files
author
BoboTiG
committed
Linux: possibility to specify a display on init
1 parent 8874537 commit 7dcb85e

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

mss/linux.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ class MSS(MSSBase):
7474
# pylint: disable=R0902
7575

7676
display = None
77+
use_mss = False
78+
mss = None
79+
xlib = None
80+
xrandr = None
81+
display = None
82+
screen = None
83+
root = None
7784

7885
def __del__(self):
7986
''' Disconnect from X server. '''
@@ -82,19 +89,18 @@ def __del__(self):
8289
self.xlib.XCloseDisplay(self.display)
8390
self.display = None
8491

85-
def __init__(self):
92+
def __init__(self, display=None):
8693
''' GNU/Linux initialisations. '''
8794

88-
self.use_mss = False
89-
disp = None
90-
try:
91-
if version > '3':
92-
disp = bytes(environ['DISPLAY'], 'utf-8')
93-
else:
94-
disp = environ['DISPLAY']
95-
except KeyError:
96-
err = '$DISPLAY not set. Stopping to prevent segfault.'
97-
raise ScreenshotError(err)
95+
if not display:
96+
try:
97+
if version > '3':
98+
display = bytes(environ['DISPLAY'], 'utf-8')
99+
else:
100+
display = environ['DISPLAY']
101+
except KeyError:
102+
err = '$DISPLAY not set. Stopping to prevent segfault.'
103+
raise ScreenshotError(err)
98104

99105
x11 = find_library('X11')
100106
if not x11:
@@ -118,11 +124,11 @@ def __init__(self):
118124
self._set_argtypes()
119125
self._set_restypes()
120126

121-
self.display = self.xlib.XOpenDisplay(disp)
127+
self.display = self.xlib.XOpenDisplay(display)
122128
try:
123129
assert self.display.contents
124130
except ValueError:
125-
raise ScreenshotError('Cannot open display "{0}".'.format(disp))
131+
raise ScreenshotError('Cannot open display "{0}".'.format(display))
126132
self.screen = self.xlib.XDefaultScreen(self.display)
127133
self.root = self.xlib.XDefaultRootWindow(self.display, self.screen)
128134

0 commit comments

Comments
 (0)