Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e722c5f

Browse files
committed
Print out available screen info on macos
1 parent 790fc17 commit e722c5f

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

.github/workflows/tests.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,9 @@ jobs:
312312

313313
- name: Run pytest
314314
run: |
315+
if [[ "${{ runner.os }}" == 'macOS' ]]; then
316+
python -c 'from matplotlib.backends._macosx import print_screen_info; print_screen_info()'
317+
fi
315318
pytest -raR -n auto \
316319
--timeout=300 --durations=25 \
317320
--cov-report=xml --cov=lib --log-level=DEBUG --color=yes

src/_macosx.m

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1796,6 +1796,47 @@ - (void)flagsChanged:(NSEvent *)event
17961796
},
17971797
};
17981798

1799+
static PyObject*
1800+
print_screen_info(PyObject* self)
1801+
{
1802+
NSScreen *main = [NSScreen mainScreen];
1803+
if (main != nil) {
1804+
NSRect frame = [main frame];
1805+
NSWindowDepth depth = [main depth];
1806+
printf("mainScreen: %s (%fx%f)+%f+%f @%ld\n",
1807+
[[main localizedName] UTF8String],
1808+
NSWidth(frame), NSHeight(frame), NSMinX(frame), NSMinY(frame),
1809+
(long)NSBitsPerSampleFromDepth(depth));
1810+
} else {
1811+
printf("mainScreen: (unknown)\n");
1812+
}
1813+
1814+
NSScreen *deepest = [NSScreen deepestScreen];
1815+
if (deepest != nil) {
1816+
NSRect frame = [deepest frame];
1817+
NSWindowDepth depth = [deepest depth];
1818+
printf("deepestScreen: %s (%fx%f)+%f+%f @%ld\n",
1819+
[[deepest localizedName] UTF8String],
1820+
NSWidth(frame), NSHeight(frame), NSMinX(frame), NSMinY(frame),
1821+
(long)NSBitsPerSampleFromDepth(depth));
1822+
} else {
1823+
printf("deepestScreen: (unknown)\n");
1824+
}
1825+
1826+
NSArray *screensArray = [NSScreen screens];
1827+
printf("Available screens: %lu\n", [screensArray count]);
1828+
[screensArray enumerateObjectsUsingBlock:^(NSScreen* screen, NSUInteger idx, BOOL *stop) {
1829+
NSRect frame = [screen frame];
1830+
NSWindowDepth depth = [screen depth];
1831+
printf(" %lu: %s (%fx%f)+%f+%f @%ld\n",
1832+
idx, [[screen localizedName] UTF8String],
1833+
NSWidth(frame), NSHeight(frame), NSMinX(frame), NSMinY(frame),
1834+
(long)NSBitsPerSampleFromDepth(depth));
1835+
}];
1836+
1837+
Py_RETURN_NONE;
1838+
}
1839+
17991840
static struct PyModuleDef moduledef = {
18001841
PyModuleDef_HEAD_INIT, "_macosx", "Mac OS X native backend", -1,
18011842
(PyMethodDef[]){
@@ -1823,6 +1864,10 @@ - (void)flagsChanged:(NSEvent *)event
18231864
(PyCFunction)choose_save_file,
18241865
METH_VARARGS,
18251866
"Query the user for a location where to save a file."},
1867+
{"print_screen_info",
1868+
(PyCFunction)print_screen_info,
1869+
METH_NOARGS,
1870+
"Show information about available screens."},
18261871
{} /* Sentinel */
18271872
},
18281873
};

0 commit comments

Comments
 (0)