Как вы запускаете XBMC на двойном экране nvidia и не позволяете ему перехватывать клавиатуру и мышь?

6

Я установил двойной экран под Ubuntu 12.04. Я имею GeForce 8500 GT и использовал панель управления nVidia для настройки двойного экрана в режиме «Отдельный экран». Вот результат xorg.conf :

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 295.33  ([email protected])  Fri Mar 30 13:38:49 UTC 2012


Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" RightOf "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Maxdata/Belinea B1925S1W"
    HorizSync       31.0 - 83.0
    VertRefresh     56.0 - 75.0
    Option         "DPMS"
EndSection

Section "Monitor"

    # HorizSync source: builtin, VertRefresh source: builtin
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "CRT-1"
    HorizSync       28.0 - 55.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8500 GT"
    BusID          "PCI:1:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8500 GT"
    BusID          "PCI:1:0:0"
    Screen          1
EndSection
Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-0: nvidia-auto-select +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Screen"

# Removed Option "metamodes" "CRT-1: 1280x768 +0+0"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    DefaultDepth    24
    Option         "TwinView" "0"
    Option         "metamodes" "CRT-1: 1360x768_60 +0+0"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Все хорошо и хорошо, и у меня есть хороший пустой XWindow, отображаемый на моем телевизоре (второй монитор). Затем я запускаю XBMC с терминала на мониторе ПК, используя:

DISPLAY=:0.1 xbmc

XBMC очень хорошо срабатывает на телевизоре, однако я больше не могу использовать основной монитор ПК / мышь / клавиатуру, поскольку XBMC на экране телевизора, похоже, имеет фокус. Я надеялся, что XBMC работает на телевизоре, и пусть дети используют пульт MCE, пока я продолжаю работать на мониторе ПК.

Кто-нибудь знает, как это преодолеть? Я предполагаю, что есть интересные игры xorg.conf и игры, но я не знаю, с чего начать честно.

    
задан Paul Swartout 25.08.2012 в 12:23
источник

2 ответа

6

Я искал то же самое.

Сначала я выяснил, что вы задаете вопрос, но после поиска немного больше я нашел рабочий ответ и вернулся сюда, чтобы поделиться.

На странице, на которой есть ответ, находится: Ссылка

Копирование и вставка основ:

Во-первых, вам нужно установить умное небольшое приложение под названием «wmctrl», которое позволяет нам изменять определенные свойства окна, например, скрывать границу или делать полноэкранное окно.

sudo apt-get install wmctrl

Далее вам понадобится следующий скрипт. Я назвал его «xbmc-fs» по понятным причинам. Это довольно понятно, поэтому взгляните на комментарии. Единственное, что вам нужно изменить, это пятая строка, на которой выбран экран. В моем случае телевизор отображается на дисплее 1, так что это то, что я установил в файле. Если ваш отображается на дисплее 0, просто измените значение 1 на 0 в строке 5.

#! /bin/bash
# Launch XBMC in windowed mode, then use wmctrl to remove the titlebar

# Select display 1
DISPLAY=:0.1

# Start XBMC without blocking this script
xbmc &

# Wait for the XBMC window to appear
status=0
while [ $status -eq 0 ]
do
   sleep 1
   status='wmctrl -x -l | grep "XBMC Media Center" | wc -l | awk '{print }''
done

# Force XBMC window to fullscreen
wmctrl -x -r XBMC Media Center.XBMC Media Center -b toggle,fullscreen

Единственное, что вам нужно сделать, это убедиться, что вы установили XBMC в такое же разрешение, что и монитор / телевизор, на котором он будет отображаться, в противном случае определенные события могут привести к тому, что окно XMBC вернется к размеру который установлен в его конфигурации.

    
ответ дан K.jensen 04.12.2012 в 23:43
1

Вышеприведенный сценарий совершенен; при условии, что DISPLAY верен для вашей установки. Если это не работает для вас, это, вероятно, либо DISPLAY, либо конечная строка wmctrl.

Это не работало для меня, но упрощение этой строки привело к следующему:

wmctrl -r "XBMC Media Center" -b "toggle,fullscreen"
    
ответ дан adalle 16.02.2013 в 16:58