LinuxForum.Fans
Тема

Медиасистема с xbmc и рабочем столом

Автор: aivs 18 сообщений 5018 просмотров
#163829

Делаю медиасистему, в качестве оболочки использую xbmc, но хочется еще и рабочий стол иметь на котором будет браузер и пару дендивских игра.
Подскажите концепцию этого решение ?

#163832

Концепций море, зависит от избранного вами пути. Какой дистр выбрали, какие опции ядра, файловой системы, какие проигрыватели хотите, кодеки и т.д. и т.п.
Я телепат только на троечку, дальше 2 метров мысли читать не умею.

#166297

Использую ArchLinux, в данный момент установлен xbmc и openbox, запущено это на разных икс серверах и переключаюсь я между ними с пульта ду командами chvt 7/8. По мне, так запуск двух исксервером это тяжеловато, поэтому искал решение запуска xbmc и браузера на разных рабочих столах опенбокса, многочисленные эксперименты показали, что xbmc никак не хочет оставаться на том рабочем столе на котором открыт, и всегда перелазиет на активный рабочий стол.

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

#166324
text
#! /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 if [ "`ps -C xbmc.bin -o comm=`" != 'xbmc.bin' ]; then nohup xbmc & exit 1 fi &

# 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 $1}'` done

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

я так запускаю на ЖК телеке который по HDMI к видюхе подцеплен

сей скрипт запускаю через irexec

text
begin irexec
  begin 
        prog = irexec
        button = KEY_POWER
        # по нажатию кнопки KEY_POWER запускается запускается xbmc и управление передается в xbmc (согласно файлу Lircmap).
        repeat = 0
        config = sh ~/.scripts/irexec/xbmc.sh
        mode   = xbmc
   end 
   
##
### MediaKeys
begin 
        prog = irexec
        button = KEY_SUBTITLE
        mode = xbmc
        repeat = 1
        delay = 5
        config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin 
        prog = irexec
        button = KEY_ZOOM
        mode = xbmc
        repeat = 1
        delay = 5
        config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
##
end irexec

begin xbmc # Получается, что описывать обработку кнопок для xbmc в файле .lircrc не нужно (не считая кнопки для выхода из программы). # При нажатии кнопки power запускается одновременно две функции обработки: # 1. Стандартная xbmc(выход из программы, желательно не настраивать в этом случае на выключение) # 2. Переход(возврат) в mode=irexec (см. ниже) begin prog = irexec button = KEY_POWER repeat = 0 mode = irexec end begin prog = irexec button = KEY_SUBTITLE repeat = 0 mode = irexec end begin prog = irexec button = KEY_ZOOM repeat = 0 mode = irexec end end xbmc

в итоге все работает на ура. Вот сейчас жена на телеке фильм смотрит, а я вот пишу сей пост на компе

#166441

Большое спасибо, наконец то я нашел, что искал, не знал что wmctrl так многофункциональна, я ей только рабочии столы переключал.
Теперь xbmc не пытается перелезть на другой рабочий стол,только немного дергается при перемещении на другой рабочий стол.
wmctrl -x -r XBMC Media Center -b toggle,fullscreen

Кстати, не знаете почему по умолчанию она ведет себя ни как отдельное приложение, а как DE ?

#166467

flags8192 у тебя в коде, где проверка, запущено окно или нет
[console]# 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 $1}'`
done[/console]
в цикле секундная задержка, я ее убрал и поставил счетчик, котороый показывает сколько раз цикл выполнился, в среднем этот цикл на моей машине выполняется 60 раз, пока не запустится окно xbmc.
Без твоей секундной задержки xbmc запускается, так что даже рамка окна не успевает появиться ( с секундной зажержкой рамку окна видно, не красиво).
Мне кажется 60 циклов это не критично, но создает красивый эффект, как будто бы все запустилось как положено.

#166728
aivs написал:
flags8192 у тебя в коде, где проверка, запущено окно или нет
[console]# 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 $1}'`
done[/console]
в цикле секундная задержка, я ее убрал и поставил счетчик, котороый показывает сколько раз цикл выполнился, в среднем этот цикл на моей машине выполняется 60 раз, пока не запустится окно xbmc.
Без твоей секундной задержки xbmc запускается, так что даже рамка окна не успевает появиться ( с секундной зажержкой рамку окна видно, не красиво).
Мне кажется 60 циклов это не критично, но создает красивый эффект, как будто бы все запустилось как положено.

вот

text
# Start XBMC without blocking this script
if [ "`ps -C xbmc.bin -o comm=`" != 'xbmc.bin' ]; then
 nohup xbmc &
 exit 1
 fi &
#166729
aivs написал:
flags8192 у тебя в коде, где проверка, запущено окно или нет
[console]# 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 $1}'`
done[/console]
в цикле секундная задержка, я ее убрал и поставил счетчик, котороый показывает сколько раз цикл выполнился, в среднем этот цикл на моей машине выполняется 60 раз, пока не запустится окно xbmc.
Без твоей секундной задержки xbmc запускается, так что даже рамка окна не успевает появиться ( с секундной зажержкой рамку окна видно, не красиво).
Мне кажется 60 циклов это не критично, но создает красивый эффект, как будто бы все запустилось как положено.

вот

text
# Start XBMC without blocking this script
if [ "`ps -C xbmc.bin -o comm=`" != 'xbmc.bin' ]; then
 nohup xbmc &
 exit 1
 fi &
#166772
text
# Start XBMC without blocking this script
if [ "`ps -C xbmc.bin -o comm=`" != 'xbmc.bin' ]; then
 nohup xbmc &
 exit 1
 fi &

Не понял зачем это надо, как я понял, проверяется запущен xbmc или нет, и если не запущен то запустить nohup xbmc, зачем здесь nohup не пойму.

#166773
aivs написал:
text
# Start XBMC without blocking this script
if [ "`ps -C xbmc.bin -o comm=`" != 'xbmc.bin' ]; then
 nohup xbmc &
 exit 1
 fi &

Не понял зачем это надо, как я понял, проверяется запущен xbmc или нет, и если не запущен то запустить nohup xbmc, зачем здесь nohup не пойму.

http://ru.wikipedia.org/wiki/Nohup

#166777

В данный момент пока не перешел на систмему с одним икс сервером и двумя рабочими столами, а используя два икс сервера, один для xbmc, другой для openbox. Для openbox настроил пульт ДУ, чтобы курсор передвигать кнопками с пульта. Настройка заключается в следующем:
1) Создать новый xorg.conf (у меня xorg_ir.conf) с дополнительной секцией в которой описан девайс мыши - пульт ду

text
Section "InputDevice"
    # For ir remote
    Identifier     "LIRC-Mouse"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mouse1"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

там же в xorg.conf в секцию "ServerLayout" добавить InputDevice "LIRC-Mouse" "CorePointer", чтобы получилось

text
Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "LIRC-Mouse" "CorePointer"
    Option         "Xinerama" "0"
EndSection

2) Демон, который преобразует нажатия кнопкок пульта в действия мыши называется lircmd и его нужно настроить:
/etc/lircmd.conf

text
PROTOCOL MouseSystems
MOVE_N Kreolz down
MOVE_S Kreolz up
MOVE_W Kreolz left
MOVE_E Kreolz right
BUTTON1_CLICK Kreolz ok

Где Kreolz это название пульта из файла /etc/lirc/lircd.conf
down,up,left,right,ok это название кнопоки из /etc/lirc/lircd.conf

Сначало запускаем демон с опцией -u, это создает устройство /dev/input/mouse1, которое прописано в xorg.conf

text
lircmd -u

И запускаем искы

text
xinit openbox.sh -- :1 vt8 -config xorg_ir.conf

Теперь с пульта можно передвигать курсор, если приспособиться становится удобно просматривать интернет.

Есть проблема в этом!!!
XBMC управляется с пульта, настройки для пульта прописаны в Lircmap.xml, и там прописаны теже кнопки, что и для управления мышью.
Когда я упраляю xbmc с пульта, то все нормально, так как он запущен со своим xorg.conf, но если я перехожу в openbox и там начинаю управлять с пульта, то xbmc отлавливает нажатия и выполняет их у себя. Как бы мне заблокировать управлния с пульта для xbmc, когда я в openbox ???

#166911
aivs написал:
В данный момент пока не перешел на систмему с одним икс сервером и двумя рабочими столами, а используя два икс сервера, один для xbmc, другой для openbox. Для openbox настроил пульт ДУ, чтобы курсор передвигать кнопками с пульта. Настройка заключается в следующем:
1) Создать новый xorg.conf (у меня xorg_ir.conf) с дополнительной секцией в которой описан девайс мыши - пульт ду
text
Section "InputDevice"
    # For ir remote
    Identifier     "LIRC-Mouse"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mouse1"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

там же в xorg.conf в секцию "ServerLayout" добавить InputDevice "LIRC-Mouse" "CorePointer", чтобы получилось

text
Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    InputDevice    "LIRC-Mouse" "CorePointer"
    Option         "Xinerama" "0"
EndSection

2) Демон, который преобразует нажатия кнопкок пульта в действия мыши называется lircmd и его нужно настроить:
/etc/lircmd.conf

text
PROTOCOL MouseSystems
MOVE_N Kreolz down
MOVE_S Kreolz up
MOVE_W Kreolz left
MOVE_E Kreolz right
BUTTON1_CLICK Kreolz ok

Где Kreolz это название пульта из файла /etc/lirc/lircd.conf
down,up,left,right,ok это название кнопоки из /etc/lirc/lircd.conf

Сначало запускаем демон с опцией -u, это создает устройство /dev/input/mouse1, которое прописано в xorg.conf

text
lircmd -u

И запускаем искы

text
xinit openbox.sh -- :1 vt8 -config xorg_ir.conf

Теперь с пульта можно передвигать курсор, если приспособиться становится удобно просматривать интернет.

Есть проблема в этом!!!
XBMC управляется с пульта, настройки для пульта прописаны в Lircmap.xml, и там прописаны теже кнопки, что и для управления мышью.
Когда я упраляю xbmc с пульта, то все нормально, так как он запущен со своим xorg.conf, но если я перехожу в openbox и там начинаю управлять с пульта, то xbmc отлавливает нажатия и выполняет их у себя. Как бы мне заблокировать управлния с пульта для xbmc, когда я в openbox ???

не, что тебе мешает сделать как у меня ?

#166934

flags8192, никак не въеду в твоё шаманство, можно подробней? И можно к xbmc прикрутить Fn клавиши с mm клавы?

#166978

не, что тебе мешает сделать как у меня ?

Как у тебя я сделал, но пока не использую. Надо решить проблему, когда я на рабочем столе, где xbmc, пульт должен работать только для xbmc, а когда я на рабочем столе, где openbox, то там уже другие настройки пульта.
Интересно можно ли как нибудь сделать проверкой, если 0 рабочий стол, то используется один конфиг lirc, если 1 рабочий стол то другой??

#195682

Зачем все это? клавиша \ выводит xbmc из полноэкраного режима, и так же наоборот.

#196310

подскажите как поставить lircmd -u в автозапуск, если ставить в rc.local устройство mouse1 не создается

Войдите или зарегистрируйтесь, чтобы ответить.