Zapobiegaj wyłączaniu się ekranu podczas oglądania wideo w XBMC [zamknięte]

8

W 12.04 ekran nigdy nie zasypiał podczas oglądania filmów w XBMC. Jednak po aktualizacji do wersji 12.10 i bez zmiany ustawień, robi to.

Czy jest jakiś sposób, aby zapobiec automatycznemu wyłączaniu się ekranu podczas odtwarzania wideo w XBMC, bez faktycznego wyłączania się ekranu w innym czasie?

Idealnie, czy jest do tego ustawienie specyficzne dla XBMC? Czy była to funkcja XBMC, która jest teraz w jakiś sposób uszkodzona w 12.10, czy też zmieniła się z powodu innych zmian w Ubuntu innych niż XBMC?

thomasrutter
źródło
1
W XBMC powinno być ustawienie w sekcji Oszczędzanie energii> Wyłącz jałowy lub coś w tym celu. Próbowałeś tego?
Ye Lin Aung
Problem występuje podczas oglądania filmu, co nie jest bezczynne. Nie mam nic przeciwko (i naprawdę lubię) to, że wyłącza ekran podczas bezczynności.
thomasrutter
Z jakich wersji korzystasz? Czy masz jakieś specjalne ustawienia zasilania w Ubuntu? Korzystam z nowej instalacji 12.10 z (normalnym, nie niestabilnym) XBMC z PPA i nie mam na to wpływu, więc nie wydaje się, aby była to rzecz domyślna // nie wpływa na wszystkich ludzi . (tak, wiem, to niewiele ci pomaga, ale nadal może pomóc wiedzieć, że nie jest to zawsze obecny błąd. Nie wiem :))
Nanne
Używam wersji z Ubuntu (12.10, ostatnio zaktualizowanej z 12.04), a nie z PPA. Brak specjalnych ustawień zasilania, tylko ustawienie domyślne, które wyłącza monitor po okresie bezczynności.
thomasrutter
Dzięki za wysiłek włożony w odpowiedź Aditya, ale myślę, że wolałbym najpierw wypróbować dwie alternatywy zaproponowane przez odpowiedź Nanne.
thomasrutter

Odpowiedzi:

7

To wydaje się być błędem w pakiecie XBMC dla Ubuntu

Nie jestem pewien, jaką wersję zainstalowałeś, ale wydaje się, że wersja z PPA * nie ma jej w moim systemie. Może to być spowodowane tym, że mam oczywiście różne ustawienia w Ubuntu, więc twój przebieg może się różnić.

Jeśli tego nie zrobisz, możesz spróbować użyć XBMC jako sesji (na ekranie logowania naciśnij logo ubuntu obok swojego imienia i wybierz XBMC. Nie uzyskasz jedności, ale tylko pełnoekranowy XMBC). Ustawienia jedności nie będą dostępne, więc możesz mieć szczęście, że nie masz wygaszacza ekranu. (Jeśli masz ustawione automatyczne logowanie, musisz nacisnąć przycisk wylogowania, aby wyświetlić ekran logowania)

* https://launchpad.net/~team-xbmc/+archive/ppa

Nanne
źródło
Dzięki za link błędu, który wygląda na przyczynę mojego problemu, ponieważ używam pakietu xbmc z Ubuntu. Spróbuję użyć XBMC jako sesji, kiedy będę w domu i zobaczę, czy to naprawi.
thomasrutter
11

Możemy stworzyć skrypt powłoki, który symulowałby ruch myszy w określonych odstępach czasu (tylko przy uruchomionym XBMC) i zapobiegałby wyłączeniu ekranu.

Wykonaj kroki:

  1. Zainstaluj niezbędne narzędzia:

    Musielibyśmy xdotoolZainstaluj xdotool do wykonania tej pracy dla nas. Zainstaluj go, uruchamiając następującą komendę w terminalu:

    sudo apt-get install xdotool
    
  2. Scenariusz:

    Zapisz następujący skrypt w dowolnym miejscu na komputerze. Możesz modyfikować sleep_periodwedług swoich potrzeb, ustawiłem go na 60 sekund. Skrypt sprawdza, czy jest uruchomiony proces xbmc.bin; a jeśli ją znajdzie, zapętla się, symulując ruch myszy, gdy proces jest aktywny. W przeciwnym razie sprawdza proces ponownie po upływie określonego czasu.

    #!/usr/bin/env bash
    
    sleep_period=60s #seconds
    
    mouse_x=0
    mouse_y=0
    
    movement_px=2
      mouse_x=$(xdotool getmouselocation 2>/dev/null |  sed -e 's/x://' -e 's/y//' -e 's/ screen:.*$//' -e 's/ //' | awk 'BEGIN {FS=":"} {print $1}')
      mouse_y=$(xdotool getmouselocation 2>/dev/null |  sed -e 's/x://' -e 's/y//' -e 's/ screen:.*$//' -e 's/ //' | awk 'BEGIN {FS=":"} {print $1}')
    
    while true; do
      if [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; then
        while [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; do
          xdotool mousemove $((mouse_x+${movement_px})) $((mouse_y+${movement_px}))
          xdotool mousemove $((mouse_x-${movement_px})) $((mouse_y-${movement_px}))
          sleep ${sleep_period}
        done
      else
        sleep ${sleep_period}
      fi
    done
    
  3. Ustaw ten skrypt jako wykonywalny:

    Kliknij zapisany plik prawym przyciskiem myszy >> Wybierz Properties>> Na Permissionzakładce zaznacz znacznik wyboru Execute.

    uczynić skrypt wykonalnym

  4. Uruchom ten skrypt automatycznie przy każdym uruchomieniu:

    Możemy to zrobić za pomocą aplikacji startowych . Otwórz Dash, naciskając Enteri zapytaj o Startup Applications>> W oknie aplikacji startowych kliknij Add>> Następnie, w wyskakującym oknie dialogowym wypełnij informacje:

    Nazwa: opcjonalnie, jakkolwiek chcesz to nazwać.

    Polecenie: ścieżka do pliku, w którym został zapisany.

    Komentarz: opcjonalny, jeśli chcesz dodać.

    preferencje aplikacji startowych

  5. Uruchom ponownie system i ciesz się filmami dzięki XBMC.


Jak używać go z innymi aplikacjami

To był przykład XBMC (nazwa procesu xbmc.bin). Jednak można go również wykorzystać w dowolnym innym wybranym procesie, po prostu zastępując xbmc.binw skrypcie wymienionym w kroku 2 nazwą żądanego procesu. Znajdź następujące wiersze w powyższym skrypcie:

while true; do
  if [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; then
    while [[ $(pidof xbmc.bin | wc -w) -gt 0 ]]; do

I zamień xbmc.binw obu wierszach 2 i 3 wybraną nazwę procesu.


Jak znaleźć nazwę procesu

  • Z GUI (GNOME):

    Możemy użyć, System Monitoraby znaleźć nazwę procesu. Naciśnij, Superaby otworzyć Dash i zapytaj o „Monitor systemu”, aby go uruchomić. W Processeszakładce możemy znaleźć nazwę procesu jako pierwszą kolumnę.

    Monitor systemu

  • Z terminalem:

    Możemy uruchomić, topaby wyświetlić listę wszystkich uruchomionych procesów. Ostatnia wywoływana kolumna Commandpodaje nam nazwę procesu (jednak jest ograniczona do pierwszych 15 znaków).

    Polecenie terminalu <code> top </code>

Tutaj widzimy, że Firefox jest po prostu nazwany jako firefox. Jeśli więc chcemy tego zachowania, gdy Firefox jest uruchomiony; zamienilibyśmy xbmc.binw skrypcie na firefoxi wszystko inne działałoby dobrze.


Podziękowania: znalazłem skrypt tutaj . Dokonałem jednak niezbędnych modyfikacji, aby były kompaktowe i spełniały wymagania pytania.

Aditya
źródło
Czy nie byłby to jednak ostatni, ostatni, ostateczny, niczym innym jak działający ośrodek?
Nanne
1
@Nanne: Nie ... Dlaczego miałoby tak być; skrypt powłoki nie zablokuje zasobów systemowych; i nie symulowałby ruchu myszy, gdy XMBC nie działa; a także nie będziesz musiał pamiętać o uruchamianiu tego skryptu za każdym razem ... Chociaż ustawienie Preferencji w XMBC byłoby oczywiście najlepszym rozwiązaniem; ponieważ nie używam XMBC - nie wiem, czy takie ustawienie istnieje. Testowałem ten skrypt Shell z Firefoksem i działa on zgodnie z oczekiwaniami OP.
Aditya
Problem polega na tym, że system nie powinien iść spać podczas odtwarzania wideo (a dla mnie tak nie jest). Jest to oczywiście obejście problemu (możesz nazwać to nawet hackowaniem) i nie mówię, że jest złe, podpieram cię za ten świetny post, ale wciąż najpierw szukałbym prawdziwego rozwiązania (jak mówisz, nie wiedzieć o XBMC, więc może być rzeczywista) przed wypróbowaniem tego. Znów nic złego w twoim aktualnym poście, ale czy nie zgadzasz się, że poruszanie myszą jest czymś, co powinieneś wypróbować po niepowodzeniu „normalnych” ustawień?
Nanne
1
@Nanne Jak już powiedziałem, ustawienie preferencji w XMBC do kontrolowania tego byłoby oczywiście najlepszym rozwiązaniem. Jednak rozsądne jest dla mnie oczekiwanie, że OP odrobił pracę domową. Co więcej, gdyby takie ustawienie było dostępne w XMBC, myślę, że ktoś by przyszedł i opublikował jego odpowiedź. Pytanie ma teraz 7 dni - nie sądzę, że jest tam w XMBC. W każdym razie, gdy używasz XMBC, czy możesz sprawdzić, czy da się to zrobić :)
Aditya
3
Nie nazwałbym tego hackem. Ludzie używają skryptów powłoki do robienia tych rzeczy przez cały czas. Niesamowita odpowiedź +1.
Seth
8

Bardzo prostym rozwiązaniem jest kofeina . Kofeina to „aplikacja paska stanu, która może tymczasowo zapobiec aktywacji zarówno wygaszacza ekranu, jak i trybu oszczędzania energii w trybie„ uśpienia ”.

Włączenie go jest tak proste, jak kliknięcie wskaźnika paska stanu, ale można go również ustawić tak, aby automatycznie wyłączał wygaszacz ekranu po uruchomieniu xbmc. Zobacz zrzut ekranu poniżej

wprowadź opis zdjęcia tutaj

Jeśli używasz Gnome, możesz zainstalować rozszerzenie gnome kofeiny . Jeśli nie, w systemie Ubuntu do 15.04 (żywy) możesz zainstalować kofeinę ze startera ppa:

sudo add-apt-repository ppa:caffeine-developers/ppa
sudo apt-get update
sudo apt-get install caffeine

od 15.10 można instalować bez ppa

sudo apt install caffeine

Cieszyć się!

Gerhard Burger
źródło
To wygląda na dobre narzędzie.
thomasrutter
@PeterMortensen Działa, nawet 16.04, ta odpowiedź jest nieaktualna. Dziękuję za zgłoszenie, ponieważ moja odpowiedź może również skorzystać z aktualizacji;) Dodałem instrukcje instalacji dla nowszych wersji Ubuntu.
Gerhard Burger
0

Używam ich w ~ / bin /:

#!/bin/bash

# ssoff - disable screensaver and power mgmt
pkill xscreensaver
xset s 0
xset -dpms

#!/bin/bash

# sson - activate screen and power mgmt
xscreensaver > /dev/null 2>&1 &
xset s 100
xset +dpms

oczywiście możesz zrobić ikonę, aby je uruchomić, ale ja też nie używam XBMC

jamon
źródło
Używam Gnome, więc nie sądzę, że używam xscreensaver. Dzięki za odpowiedź.
thomasrutter
0

Wszystkie te rozwiązania wyłączają wygaszacz ekranu przy każdym uruchomieniu Xbmc, nie tylko podczas odtwarzania wideo. Ponieważ ma wbudowany serwer UPnP, zostawiam go działającego 24/7, ale chcę wyłączyć wygaszacz ekranu tylko wtedy, gdy wideo jest odtwarzane lokalnie.

Oto, co wymyśliłem: włącz obsługę HTTP i JSON w XBMC. Następnie wykonaj pętlę, aby dowiedzieć się, czy odtwarzacz jest aktywny, czy nie. Jeśli tak, wydaj polecenie xscreensaver-polecenie -disable (możesz to dostosować do wygaszacza ekranu). Jeśli nie, nie rób nic. Sprawdzanie co 50 sekund jest dla mnie wystarczające.

Kod Pythona tutaj: http://sumnerhayes.com/software/

SumnerHayes
źródło
To pytanie dotyczyło XBMC w Ubuntu 12.10, który miał błąd polegający na tym, że nie wyłączał wygaszacza ekranu podczas odtwarzania wideo. Ten błąd nie istnieje w XBMC w bardziej aktualnych wersjach Ubuntu, więc nie sądzę, aby obejście tego było konieczne. XBMC wyłącza wygaszacz ekranu podczas odtwarzania wideo, tak jak powinno.
thomasrutter