Как узнать текущее разрешение экрана ?
Из Qt ? Из X-ов ? Где почитать документацию на иксы (желательно на русском) ?!
Re: Как узнать текущее разрешение экрана ?
QApplication::desktop()->size() не канает?
Re: Как узнать текущее разрешение экрана ?
2yuriy123: огромное спасибо !
Re: Как узнать текущее разрешение экрана ?
Re: Как узнать текущее разрешение экрана ?
размер рутового окна не всегда равен разрешению экрана, hint: Virtual
надо смотреть в сторону XF86VidModeGetModeLine(), и соответсвенно на компоненты HDisplay и VDisplay структуры XF86VidModeModeLine
Re: Как узнать текущее разрешение экрана ?
Объясните плиз еще такую фигню — если я буду пользоваться для вывода на экран функциями иксов и если в системе стоят драйвера nvidia получу ли я ускорение либо для этого нужно дергать функции драйвера ? наверно первое ? 🙂
Re: Как узнать текущее разрешение экрана ?
> если я буду пользоваться для вывода на экран функциями иксов и если в системе
> стоят драйвера nvidia получу ли я ускорение
ускорение в сравнении с чем?
Re: Как узнать текущее разрешение экрана ?
с простым выводом через функции иксов. Меня интересует написание полноэкранной 2D игрушки. Возможно стоит использовать OpenGL ? Создавать поверхность и отображать на нее ?
Re: Как узнать текущее разрешение экрана ?
Re: Как узнать текущее разрешение экрана ?
хм а как ты думаешь зачем тогда драйвер нужен? если видяха сама умеет обрабатывать подаваемую инфу то это как раз будет делать драйвер — преобразоввывать данные в формат который понятен видяхи, если нет то будет использован memory mapped io — то есть у тебя видимая область экрана это буффер видяхи который мапиться в память и соответсвенно результат записи туда будет виден на экране 🙂
Linux разрешение экрана в консоли
Иногда, особенно при настройке сервера, работа в консоли Linux Ubuntu, мягко говоря, не совсем удобна — разрешение экрана по умолчанию 640х480 при убогом шрифте 16-го размера. Это изрядно раздражает.
Можно уcтановить разрешение экрана в зависимости от видеокарты и монитора для более комфортной работы в командном режиме. Делается это очень просто на основании таблицы:
Depth | 800×600 | 1024×768 | 1152×864 | 1280×1024 | 1600×1200 |
---|---|---|---|---|---|
8 bit | vga=771 | vga=773 | vga=353 | vga=775 | vga=796 |
16 bit | vga=788 | vga=791 | vga=355 | vga=794 | vga=798 |
24 bit | vga=789 | vga=792 | vga=795 | vga=799 |
Для этого открываем любимым редактором файл /etc/default/grub и в строчку командной строки GRUB_CMDLINE_LINUX_DEFAUL добавляем еще один парамер — vga=xxx, например:
После этого обновляем загрузчик GRUB:
Можно так-же подправить экранные шрифты и их стиль. Для этого набираем:
Выбор шрифтов и их написания конечно не богат:
но выбрать можно. И в завершении подобрать размер консольного шрифта в соответствие с установленным разрешением экрана.
С развитием технологий экраны для компьютеров смогли значительно увеличить разрешение. Если старые экраны показывали 640х800 пикселей, то более новые отображают уже 1920х1080. У последних моделей разрешение ещё выше.
В операционной системе Linux существует несколько способов настройки разрешения экрана. В обычных системах, как правило, это не нужно. Но если вы хотите использовать несколько мониторов или решили запустить Linux на виртуальной машине, то разрешение может определиться неправильно и тогда придётся его настроить. В этой статье мы рассмотрим, как изменить разрешение экрана в Linux через графический интерфейс и терминал.
Настройка разрешения экрана в GUI
Разберём настройку разрешения на примере дистрибутива Ubuntu и окружения рабочего стола Gnome. Откройте утилиту Настройки из главного меню:
Перейдите на вкладку Устройства, а затем выберите пункт Настройка экранов:
Если к компьютеру подключено два монитора Linux или больше, то у вас будет три варианта работы экранов:
- Объединение – все экраны объединяются в одно рабочее пространство;
- Зеркальное отображение – одинаковая картинка на всех экранах;
- Один экран – картинка только на одном экране, другие отключены.
Независимо от того, какой режим вы выбираете, будут доступны настройки Разрешение и Частота обновления, где вы сможете настроить нужные вам параметры:
Так выполняется настройка монитора Linux через графический интерфейс. Если вы хотите объединить экраны, то можно указать разрешение мониторов Linux для каждого из них отдельно:
Но здесь есть один недостаток, вы можете выбрать только то разрешение экрана, которое предлагает система. Если вы захотите установить разрешение выше или ниже тех, что есть, то у вас ничего не выйдет. Для этого надо воспользоваться терминалом.
Как изменить разрешение экрана через терминал
Для управления настройками экрана из терминала можно использовать утилиту xrandr. Синтаксис утилиты очень прост:
xrandr опции параметры
Разберём основные опции утилиты, которые будем использовать:
- –verbose – включить более подробный вывод;
- –version – версия программы;
- –query – когда установлена эта опция или не указанно никаких опций, выводится текущая конфигурация;
- -d, –display – позволяет указать какой X экран использовать по имени;
- -s, –screen – устанавливает дисплей для настройки по ID;
- –output – устанавливает дисплей для настройки по имени или ID;
- –primary – выбрать основной экран;
- –size – позволяет указать размер экрана;
- –rate – устанавливает частоту обновления;
- –dpi – устанавливает DPI, количество точек на дюйм, которое позволяет вычислить правильный размер для окон;
- –newmode – создаёт новый режим отображения по размеру и частоте;
- –rmmode – удаляет режим отображения;
- –addmode – добавляет созданный режим к списку доступных для использования;
- –delmode – удалить режим из списка доступных;
- –mode – активирует указанный режим;
- –off – отключает экран;
- –gamma – позволяет установить коррекцию гаммы, в формате красный:зеленый:синий;
Чтобы посмотреть текущие параметры системы, запустите утилиту без параметров:
Как видите, к моей системе подключено два экрана:
- LVDS-1 – встроенный экран ноутбука;
- HDMI-1 – внешний экран;
Для каждого экрана доступно несколько разрешений, текущее разрешение отмечено звёздочкой. Чтобы изменить разрешение экрана Linux на одно из доступных, используйте опцию –mode вместе с –output:
xrandr –output HDMI-1 –mode 1680×1050
Теперь звёздочка выводится около разрешения 1680х1050.
Хорошо, мы разобрались с тем, как добавить одно из существующих разрешений. По сути, то же самое, что и в графическом интерфейсе. Но если нужного разрешения в списке нет, то его можно добавить. Для этого сначала нужно конвертировать обычную запись в формат VESA. Для этого используйте утилиту cvt. Например, создадим режим с разрешением 2000х1100 и частотой обновления 60:
cvt 2000 1100 60
Дальше надо скопировать из вывода утилиты всё, что написано после "Modeline". Осталось использовать скопированный текст в xrandr:
xrandr –newmode "2000x1100_60.00" 183.75 2000 2136 2344 2688 1100 1103 1113 1141 -hsync +vsync
Добавляем только что созданное разрешение к списку доступных для нужного нам экрана:
xrandr –addmode HDMI-1 2000x1100_60.00
А затем активируем, как описывалось выше:
xrandr –output HDMI-1 –mode 2000x1100_60.00
Но будьте аккуратны с новыми разрешениями. Если вы устанавливаете разрешение выше, чем поддерживает ваш монитор, то он просто не будет показывать. Но такая штука может быть полезна с VirtualBox, или если компьютер не определяет, что ваш монитор поддерживает более высокое разрешение.
Чтобы сохранить настройки после перезагрузки, добавьте команду активации разрешения в конфигурационный файл
Синтаксис файла очень похож на
/.xinitrc. Все команды из него автоматически выполняются при старте сессии. Или же вы можете использовать любой другой метод автозагрузки, который работает после запуска X.
Выводы
В этой статье мы рассмотрели несколько способов настроить разрешение экрана Linux с помощью графического интерфейса или через терминал. Как видите, это не так сложно, как может показаться на первый взгляд.
Доброе время суток. Сегодня в этом небольшом топике речь пойдет о разрешении экрана в операционной системе Linux. Все действия проводились в Linux openSuSE 11.04. На моем компьютере со злосчастными видеокартой ATI Radeon 9600 и монитором Acer AL1916W на абсолютно любом дистрибутиве Linux автоматом не определялись поддерживаемые разрешения, как и собственно монитор с видеоадаптером. Год я провел на разрешении 1024х768@60Hz и сегодня решил, что так дальше продолжаться не может, надо менять разрешение или монитор. Остановился на первом. Перерыв весь интернет и найдя всего два полезных совета я приступил к шаманству над иксами, который я постараюсь в понятном виде изложить ниже.
Итак, приступим! Но для начала учтем, что мой дистрибутив — Linux openSuSE 11.04 и монитор Acer AL1916W.
1. Найдите в инструкции к Вашему монитору максимальное поддерживаемае разрешение и частоту (у моего — 1440×900, частота 75Гц), они понадобятся для генерации Modeline строки.
2. Узнали? Далее мы приступим к генерации Modeline строки: откройте «Терминал» и введите команду
gtf разрешение_по_горизонтали разрешение_по_вертикали частота_обновления_экрана
#например gtf 1440 900 75
Запустите команду (нажатием Enter). В выводе получим следующее:
# 1440×900 @ 75.00 Hz (GTF) hsync: 70.50 kHz; pclk: 136.49 MHz
Modeline "1440x900_75.00" 136.49 1440 1536 1688 1936 900 901 904 940 -HSync +Vsync
Именно строка Modeline и все что за ней нам и нужно, копируем ее.
3. Дальше открываем папку /etc/X11/xorg.conf.d/ и копируем файл 50-monitor.conf в вашу домашнюю папку (например /home/Dimon/).
4. Открываем скопированный (/home/Dimon/)50-monitor.conf в текстовом редакторе (в GNOME по-умолчанию — gedit) и после строки
## Add your mode lines here, use e.g the cvt tool
вставьте тот самый скопированный вами Modeline. У вас должно получиться что-то вроде этого:
Section "Monitor"
Identifier "Default Monitor"
## If your monitor doesn’t support DDC you may override the
## defaults here
#HorizSync 28-85
#VertRefresh 50-100
## Add your mode lines here, use e.g the cvt tool
Modeline "1440×900@75" 136.49 1440 1536 1688 1936 900 901 904 940 -HSync +Vsync
Сохраните файл и закройте редактор.
5. Теперь нам необходимо скопировать измененный файл в директорию /etc/X11/xorg.conf.d: откройте «Терминал», введите след. команду (под root’ом):
sudo cp 50-monitor.conf /etc/X11/xorg.conf.d
и нажмите Enter. Если ничего не выдаст, значит файл скопировался, но все же проверьте, если не доверяете своей интуиции.
6. Теперь все готово! Осталось перезагрузить компьютер и изменить разрешение в настройках. Если после перезагрузки запустился X-сервер, значит уже радуйтесь тому, что не сгубили его :).
7.После загрузки щелкните «Система» — «Оборудование» — «Мониторы» и напротив слова «Разрешение» выберите 1440х900 и нажмите «Применить». Если после применения настроек экран черный либо вывел «Частота не поддерживается» или еще что-то в этом роде, не вздумайте жать на все кнопки подряд! Разрешение поменяется само через 15 секунд после смены на предыдущее.
Совместимость данного мануала с другими дистрибутивами и версиями ОС Linux не гарантируется.
А в следующих топиках я расскажу как воспроизводить видео, если оно не воспроизводится и плеер говорит о невозможности воспроизведения на несуществующем мониторе (, т.к. монитор не найден).
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Display monitor info via command line
Is there a way to query monitor information from command line? For example, get monitor model, similar to e.g. what lspci does for graphic card info, or whether it’s currently on or off, things like that.
If possible, what kinds of basic information such as the above can be easily gathered? For example, is it possible to determine if monitor is in portrait or landscape position? Or if it has built-in speakers or not?
Command line is the preference, but if there’s a GUI method, I’d like to hear about it, too.
7 Answers 7
Yes there is, read-edid hardware information-gathering tool for VESA PnP monitors. This tool have two commands: get-edid and parse-edid : tools to retrieve and interpret monitor specifications using the VESA VBE DDC protocol. EDID (Extended Display Identification Data) is a metadata format for display devices to describe their capabilities to a video source.
Case where get-edid does not show all monitors
Like mine, I have:
get-edid shows only the external monitor which is plugged to VGA port.
Read EDID info directly from SYSFS tree, it should show all detected monitors
(I used the program once when I was playing with dual monitor setup on Archlinux .)
You can find it in the x11-server-utils package. That package contains other stuff to play with like:
- iceauth, a tool for manipulating ICE protocol authorization records;
- rgb;
- sessreg, a simple program for managing utmp/wtmp entries;
- xcmsdb, a device color characteristic utility for the X Color Management System;
- xgamma, a tool for querying and setting a monitor’s gamma correction;
- xhost, a very dangerous program that you should never use;
- xmodmap, a utility for modifying keymaps and pointer button mappings in X;
- xrandr, a command-line interface to the RandR extension;
- xrdb, a tool to manage the X server resource database;
- xrefresh, a tool that forces a redraw of the X screen;
- xset, a tool for setting miscellaneous X server parameters;
- xsetmode and xsetpointer, tools for handling X Input devices;
- xsetroot, a tool for tailoring the appearance of the root window;
- xstdcmap, a utility to selectively define standard colormap properties;
- xvidtune, a tool for customizing X server modelines for your monitor. (information found in synaptic package manager)
xrandr , xrandr —prop and xrandr —verbose will give you some information with different level of detail.
Manufacturer-provided information can be found in the EDID format.
To get and decode EDID, first check xrandr output to find out the used interface (e.g. eDP-1 ) and apt install edid-decode , then:
Example output you can find here. Replace eDP-1 with your interface if needed.
Alternatively, xrandr —prop outputs EDID in hex format that you can feed to this online EDID decoder.
I don’t recommend using read-edid package because I had negative experiences with it (version 3.0.2 ). In my case, get-edid outputs additional characters after the end that lead to a warning from edid-decode and parse-edid outputs random garbage in ModelName and Identifier fields.