Кажется простой проблемой, но я не могу найти ответ: как вы запрашиваете (через X11), какие мониторы существуют и какие разрешения?Как запросить разрешение дисплея X11?
ответ
Отъезд display macros и screen macros от Xlib manual.
В частности:
- От first link:
ScreenCount()
,ScreenOfDisplay()
- С second link:
WidthOfScreen()
,HeightOfScreen()
Если Xinerama используется, попробуйте XineramaQueryScreens
. В противном случае, вы можете быть в состоянии взять на себя один экран и использовать (X)WidthOfScreen
/(X)HeightOfScreen.
(Также смотрите другой ответ. Это отдаленно возможно кто-то использует старую модель X экрана, где ваши экраны :x.0
, :x.1
и т.д.)
Для современных серверов X имеется также расширение XRandR, которое предоставляет самую современную модель информации о многоэкранном макете, включая перекрывающиеся экраны и динамические изменения экрана.
Документация по нему доступна в XRandR 1.3.1 Protocol spec и libXrandr man page.
Это может быть полезно для кли и сценариев
xwininfo -root
Но XRandR может быть более точным, особенно, когда есть множественная среда монитора:
xrandr
Казалось 'xrandr' по сравнению с' xwininfo -root' не расскажите о мониторе, который в настоящее время активен. Однако это говорит вам о мониторе по доверенности активного корневого окна. – CMCDragonkai
Чистый xrandr
выход для использования ImageMagick
xrandr |grep \* |awk '{print $1}'
Это не связано с X11? –
Библиотека X11 работает только с unix-подобная ОС, поэтому это не межплатформенное решение.
Полный код
#include <stdio.h>
#include <X11/Xlib.h>
int
main(const int argc, const char *argv[])
{
Display *display;
Screen *screen;
// open a display
display = XOpenDisplay(NULL);
// return the number of available screens
int count_screens = ScreenCount(display);
printf("Total count screens: %d\n", count_screens);
for (int i = 0; i < count_screens; ++i) {
screen = ScreenOfDisplay(display, i);
printf("\tScreen %d: %dX%d\n", i + 1, screen->width, screen->height);
}
// close the display
XCloseDisplay(display);
return 0;
}
Компиляция
gcc -o setup setup.c -std=c11 `pkg-config --cflags --libs x11`
Результат (актуально для моего компьютера)
Total count screens: 1
Screen 1: 1366X768
основе:
Благодарим за предоставленный код. Вы знаете ответ на мой вопрос: http://stackoverflow.com/questions/42987932/is-a-monitor-in-gtk3-the-same-as-a-screen-in-x11. Я спрашиваю, являются ли экраны, которые вы находите в этом коде, так же, как то, что Gtk3 3.22 вызывает мониторы. –
- 1. Насколько высоки номера дисплея X11?
- 2. HTML-разрешение дисплея
- 3. Обнаружить разрешение дисплея
- 4. Как запросить разрешение на хранение?
- 5. Запросить разрешение на PACKAGE_USAGE_STATS
- 6. Запросить разрешение на f5
- 7. UAC запросить разрешение программно
- 8. Как получить физическое разрешение дисплея в SDL2?
- 9. Как определить разрешение дисплея в VB6?
- 10. AppleScript как получить текущее разрешение дисплея?
- 11. Android: запросить разрешение на bluetooth
- 12. Запросить новое разрешение для приложения
- 13. Как запросить разрешение на вход FB
- 14. Как запросить разрешение в новом Android M?
- 15. Как запросить разрешение на Android Things?
- 16. Как запросить разрешение в приложении для facebook?
- 17. Как запросить разрешение с другого вида?
- 18. Как запросить разрешение до инициализации фактического объекта?
- 19. Facebook - JavaScript SDK - как запросить разрешение автоматически
- 20. HybridAuth: Как запросить дополнительное разрешение для пользователя?
- 21. Запросить разрешение на обновление приложения
- 22. Автоматическое изменение размера дисплея X11 при подключении внешнего монитора
- 23. Почему Javascript возвращает другое разрешение дисплея устройства?
- 24. Измените разрешение дисплея при удаленном выполнении
- 25. Почему система может изменить разрешение дисплея?
- 26. Запросить разрешение пользователя с программным обеспечением?
- 27. Запросить разрешение на доступ к Контакты iOS
- 28. Без головы X11 Angstrom
- 29. Запросить разрешение на доступ к сеансу
- 30. Запросить всегда разрешение в Кордове Geolocation
+1 для Xinerama – asveikau