int main()
{
Display *d = XOpenDisplay(0);
int s = DefaultScreen(d);
int w = DisplayWidthMM(d, s);
int h = DisplayHeightMM(d, s);
printf("ширина = %u мм, высота = %u мм\n", w, h);
printf("диагональ = %.f\"\n", sqrt(w * w + h * h) / 25.4);
return 0;
}
tmp$ gcc -I/usr/X11R6/include a.c -L/usr/X11R6/lib -lX11 -lm
tmp$ ./a.out
ширина = 363 мм, высота = 272 мм
диагональ = 18"
tmp$
> Кстати прога отбрасывает дробную часть диагонали
Кстати, прога _не_ отбрасывает дробную часть. А округляет до целых так, как принято в математике.
А что диагональ получилась 13" -- так это потому что Х сервер считает монитор 14-дюймовым. А считает он так, потому что либо видеокарта не поддерживает DDC, либо монитор не поддерживает DDC, либо иксовый драйвер видеокарты не умеет DDC, либо драйверу это запрещено в настройках. Надо в лог глядеть, чтобы причину выяснить.
Если ты найдешь хотя бы в одном паспорте на какой-нибудь монитор дробную диагональ -- я тебе пиво поставлю.
> А вообще красивую ты прогу наваял. Мы тут соображаем включить её в наш дистрибутив linux. На наше щастье ты неоставил никаких копирайтов.
Флаг в руки. Только непонятно, кто ее юзать станет. Юзер -- не станет точно, потому что и сам знает, какая у него диагональ. Из других прог вызывать? Проще 5 строчек добавить в свою, чем запускать какую-то другую и парсить потом ее вывод. Короче, не вижу резона. (А если бы видел -- обязательно копирайтов бы навставлял :).