Проблемы с X и xrandr на Debian

У меня возникла проблема, которая, как мне кажется, связана с X, xrandr и, возможно, с WM, которую я использую. Я нахожусь

  • Debian 8 стабилен, обновлен;
  • Графика Intel,
  • i3wm, нет DE
  • lightDM (не уверен, что это актуально, но в какой-то момент я подумал, что это может быть). Я использовал GDM во время сбоя, а затем попытался установить lightdm. Я не знаю тонкостей аутентификации X с помощью DM.

Вот сценарий. Я пришел домой и подключил свой ноутбук к двум мониторам (VGA1 и HDMI1) и выключил LVDS1. Для этого у меня есть функция в .bashrc

function duo { xrandr --output HDMI1 --right-of LVDS1 xrandr --output LVDS1 --off # this is probably bad, but it still works thanks to xrandr xrandr --output HDMI1 --mode 1280x1024 xrandr --output HDMI1 --right-of VGA1 xrandr --output HDMI1 --rotate left xrandr --output VGA1 --mode 1280x1024 } 

Функция беспорядочна, потому что я экспериментировал и пытаюсь сломать, как xrandr должен изменить макет. Это работает в 100% случаев без проблем. Когда я хочу отключиться и вернуться в режим «ноутбук», я вытаскиваю оба кабеля и нажимаю Super + Shift + F8, который в моем i3wm привязан к xrandr --auto , который должен отключать VGA1 и HDMI1, поскольку они не подключены больше и i3wm переместит все рабочие области на один экран. Иногда это работает, но почти часто происходит сбой сервера X и падает на DM-запрос для входа. Поэтому я теряю все открытые приложения и, возможно, файлы (хотя я делаю OCD, когда речь заходит о сохранении).

Вот системный журнал. Он начинается с строки, напечатанной моим скриптом, который связан с Super + Shift + F8 в моем файле конфигурации i3wm. Причиной этого ярлыка является то, что у меня нет правила udev для VGA или HDMI. У меня было правило, которое запускало скрипт, но удалило его. Я могу опубликовать, но пост уже очень большой – не хочу его загромождать. Поэтому, когда я отсоединяю HDMI или VGA, мои LVDS становятся черными, и этот скрипт должен включить его. Я также могу опубликовать Xorg.log, из / var / log, но, похоже, у него ничего полезного (я опубликую, но опять же – они длинны – пожалуйста, дайте мне знать).

Теперь сложность: у меня установлен Gnome 3, который поставляется с установкой Debian 8. Когда я использую его и нет i3wm – все работает, и X не падает! Поэтому я могу подключать 2 монитора, отключать LVDS и отключать их от сети и безопасно. Дело не в том, что мне не нравится Gnome, но я очень привык к i3wm и минимальному освещению (используйте то же самое на моем рабочем столе Arch). Ноутбук также устарел для Gnome3. Я бы предпочел не заниматься попытками других DE.

 #!/bin/bash # Super+Shift+F8 is bound to this script in WM function laptop() { xrandr --auto xrandr --output VGA1 --off xrandr --output HDMI1 --off } echo "running laptop script" laptop Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: running laptop script Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: xrandr: cannot find crtc for output LVDS1 Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) intel(0): Allocated new frame buffer 1024x1280 stride 4096, tiled Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: X Error of failed request: BadMatch (invalid parameter attributes) Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Major opcode of failed request: 140 (RANDR) Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Minor opcode of failed request: 21 (RRSetCrtcConfig) Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Serial number of failed request: 35 Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Current serial number in output stream: 35 Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: i3: No usable outputs available. Oct 21 20:13:13 debianone org.gtk.vfs.Daemon[8621]: A connection to the bus can't be made Oct 21 20:13:13 debianone org.gtk.vfs.Daemon[8621]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting. Oct 21 20:13:13 debianone org.a11y.Bus[8621]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting. Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [9400:9400:1021/201313:ERROR:chrome_browser_main_extra_parts_x11.cc(57)] X IO error received (X server probably went away) Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [libi3] libi3/font.c Using Pango font DejaVu Sans Mono, size 8 Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [libi3] libi3/font.c X11 root window dictates 98.223565 DPI Oct 21 20:13:13 debianone org.a11y.atspi.Registry[8648]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" Oct 21 20:13:13 debianone org.a11y.atspi.Registry[8648]: after 1608 requests (1608 known processed) with 0 events remaining. Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: drracket: Fatal IO error 11 (Resource temporarily unavailable) on X server :0. Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: [9434:9434:1021/201313:ERROR:x11_util.cc(82)] X IO error received (X server probably went away) Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Can't open display :0 Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Exiting due to signal. Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: after 2716 requests (2716 known processed) with 0 events remaining. Oct 21 20:13:13 debianone /etc/gdm3/Xsession[4989]: Process 8664 dead! Oct 21 20:13:13 debianone /etc/gdm3/Xsession[4989]: Warning: no target process found. Waiting for it... Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Process 8664 dead! Oct 21 20:13:13 debianone /etc/gdm3/Xsession[8574]: Warning: no target process found. Waiting for it... Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "synaptics" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: AT Translated Set 2 keyboard: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Asus WMI hotkeys: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: USB Camera: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Microsoft Microsoft® Nano Transceiver v1.0: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Logitech USB Keyboard: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Logitech USB Keyboard: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Sleep Button: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Video Bus: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) evdev: Power Button: Close Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (II) UnloadModule: "evdev" Oct 21 20:13:13 debianone gdm-Xorg-:0[8485]: (EE) Server terminated successfully (0). Closing log file. 

Я немного отчаялся, так как это большая проблема. Я видел bugreports по аналогичным вопросам в X, KDE, Debian и Ubuntu, и они показываются исправленными. Я определенно обновлен до последнего и все еще рушится. Нужно ли мне использовать backport более новый X? Или что-то другое? Спасибо за чтение и помощь заранее.

  • Запуск сеанса VNC на новом дисплее X
  • Использование vlock без изменения VT от X
  • Возможно ли настроить «масштабированный» рабочий стол в xorg.conf, аналогичный использованию опции xrandr scale-from?
  • Как добиться быстрого переключения пользователей с помощью нескольких графических адаптеров, предотвратить использование виртуального терминала?
  • Как изменить гамма / яркость Xorg?
  • Должно ли приостановленное приложение в фоновом режиме (ctrl + z) запускаться или оно должно прекратиться?
  • Как бороться с разрывом в Gentoo на NVIDIA?
  • Могу ли я переместить запущенное приложение на другой X-сервер?
  • One Solution collect form web for “Проблемы с X и xrandr на Debian”

    Вполне вероятно, что быстрая последовательность сообщений xrandr вызывает ошибку на X-сервере. Я предлагаю вам сделать две вещи:

    • Измените ошибку на сервере X. Он не должен падать, независимо от того, что вы делаете (в худшем случае он должен выдать сообщение об ошибке)
    • Измените свой скрипт так, чтобы он xrandr только один раз:

       xrandr --output LVDS --off --output VGA1 --mode 1280x1024 --output HDMI1 --mode 1280x1024 --rotate left --right-of VGA1 

      Дело в том, что вы можете передавать несколько команд на каждый вывод на xrandr , а также несколько выходов. Я лично также поставил бы один из выходов в качестве основного вывода (с --primary ), но это не критично.

    РЕДАКТИРОВАТЬ : более подробно посмотрите на журнал, мы видим следующее:

     Oct 21 20:13:12 debianone /etc/gdm3/Xsession[8574]: xrandr: cannot find crtc for output LVDS1 

    CRTC – это чип контроллера дисплея; фактический компонент, который преобразует буфер кадра, генерируемый графическим процессором, в строки развертки, которые затем отправляются на любой выход (VGA, DVI, HDMI, DisplayPort, yada yada); аббревиатура означает контроллер катодного луча , хотя эта терминология, очевидно, несколько устарела. Большинство графических процессоров имеют меньше, чем у них, и количество CRTC обычно является ограничивающим фактором, который решает, сколько мониторов может использовать карта GPU одновременно. До нескольких лет назад для большинства мобильных графических процессоров Intel их было два, хотя с появлением экранов 4K (для которых требуется два CRTC на монитор) большинство современных мобильных графических процессоров теперь имеют три.

    Поскольку система также говорит о LVDS (который является более старым стандартом, который теперь заменяется встроенным портом дисплея или eDP), довольно безопасная ставка, предполагающая, что у вас есть два CRTC.

    Что сообщение об ошибке, которое я цитировал выше, означает, что когда вы запрашиваете X-сервер для включения панели LVDS, он ищет доступный CRTC и не находит его. Вещи тогда, кажется, идут ужасно неправильно. Таким образом, решение вашей проблемы должно состоять в том, чтобы обеспечить доступность CRTC при попытке включить внешний монитор, отключив внешние выходы, прежде чем вы включите внутренние, а не потом, как вы сейчас пытаетесь сделать.

    Linux и Unix - лучшая ОС в мире.