Impedisci lo spegnimento dello schermo durante la visione di video in XBMC [chiuso]


8

Nel 12.04, lo schermo non andava mai a dormire durante la visione di video in XBMC. Tuttavia, dopo l'aggiornamento a 12.10 e la modifica di nessuna impostazione, lo fa.

Esiste un modo per impedire che lo schermo si spenga automaticamente durante la riproduzione di un video in XBMC, senza in realtà disabilitare lo schermo in modo che si spenga altre volte?

Idealmente, esiste un'impostazione specifica per XBMC per questo? Questa era una caratteristica di XBMC che ora è in qualche modo rotta in 12.10 o è cambiata a causa di qualche altra modifica non XBMC in Ubuntu?


1
Dovrebbe esserci un'impostazione in XBMC in Risparmio energetico> Disattiva in stand-by o qualcosa in tal senso. Ci hai provato?
Ye Lin Aung,

Il problema si verifica durante la visione di un film, che non è inattivo. Non mi dispiace (e in realtà mi piace) spegnere lo schermo mentre è inattivo.
thomasrutter,

Quali versioni stai usando? Hai delle impostazioni di alimentazione speciali in Ubuntu? Sto eseguendo una nuova installazione 12.10 con l'XBMC (normale, non instabile) dal PPA, e non ne sono influenzato, quindi non sembra essere una cosa predefinita // non influenza tutte le persone . (sì, lo so, questo non ti aiuta molto, ma potrebbe comunque aiutare a sapere che non è un bug sempre presente .. Non so :))
Nanne

Sto usando la versione di Ubuntu (12.10, recentemente aggiornata dalla 12.04), non da un PPA. Nessuna impostazione di alimentazione speciale, solo l'impostazione predefinita che spegne il monitor dopo un periodo di inattività.
thomasrutter,

Grazie per lo sforzo che hai dedicato a quella risposta Aditya, ma penso che preferirei provare prima le due alternative proposte dalla risposta di Nanne.
thomasrutter,

Risposte:


7

Questo sembra essere un bug nel pacchetto XBMC per Ubuntu

Non sono sicuro di quale versione hai installato, ma la versione di PPA * non sembra averla sul mio sistema. Ciò può essere dovuto al fatto che ovviamente ho diverse impostazioni in Ubuntu, quindi il tuo chilometraggio può variare.

In caso contrario, puoi provare a utilizzare XBMC come sessione (nella schermata di accesso, premi il logo ubuntu accanto al tuo nome e seleziona XBMC. Non otterrai unità, ma solo XMBC a schermo intero). Le impostazioni per l'unità non saranno lì, quindi potresti non avere uno screensaver. (Se hai impostato il login automatico, devi premere logout per ottenere la schermata di accesso)

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


Grazie per il collegamento ai bug, sembra il motivo del mio problema poiché sto usando il pacchetto xbmc di Ubuntu. Proverò ad usare XBMC come sessione quando sarò a casa e vedrò se questo lo risolve.
thomasrutter,

11

Possiamo creare uno script di shell che simuli il movimento del mouse a un intervallo specificato (solo quando XBMC è in esecuzione) e impedire lo spegnimento dello schermo.

Segui i passi:

  1. Installa gli strumenti necessari:

    Avremmo bisogno di xdotoolInstalla xdotool per fare questo lavoro per noi. Installalo eseguendo il seguente comando nel terminale:

    sudo apt-get install xdotool
    
  2. Il copione:

    Salva il seguente script ovunque sul tuo PC. È possibile modificare in sleep_periodbase alle proprie esigenze, l'ho impostato su 60 secondi. Lo script verifica se esiste un processo chiamato xbmc.binrunning; e se ne trova uno, esegue un loop per simulare il movimento del mouse mentre il processo è attivo. Altrimenti, controlla nuovamente il processo dopo l'intervallo specificato.

    #!/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. Rendi eseguibile questo script:

    Fai clic con il pulsante destro del mouse sul file che hai appena salvato >> Seleziona Properties>> Nella Permissionscheda, metti il ​​segno di spunta Execute.

    rendere eseguibile lo script

  4. Esegui questo script automaticamente ad ogni avvio:

    Possiamo farlo con l'aiuto di Startup Applications . Apri il tuo Dash premendo Entered esegui una query per Startup Applications>> Nella finestra Applicazioni di avvio, fai clic su Add>> Quindi, nella finestra di dialogo che viene visualizzata, inserisci le informazioni:

    Nome: facoltativo, qualunque cosa tu voglia nominare questo.

    Comando: percorso del file in cui è stato salvato.

    Commento: facoltativo, se si desidera aggiungerne alcuni.

    preferenze delle applicazioni di avvio

  5. Riavvia il sistema e goditi i tuoi film con XBMC.


Come usarlo con altre applicazioni

Questo è stato un esempio di XBMC (nome del processo xbmc.bin). Tuttavia, può anche essere utilizzato per qualsiasi altro processo di tua scelta semplicemente sostituendo xbmc.binnello Script menzionato nel Passaggio 2 il nome del processo che desideri. Trova le seguenti righe nello script sopra:

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

E sostituisci xbmc.binin entrambe le righe 2 e 3 con il nome del processo che preferisci.


Come trovare il nome del processo

  • Con GUI (GNOME):

    Possiamo usare System Monitorper trovare il nome del processo. Premere Superper aprire Dash e richiedere "Monitor di sistema" per avviarlo. Nella Processesscheda, possiamo trovare il nome del processo come prima colonna.

    System Monitor

  • Con terminale:

    Possiamo eseguire topper elencare tutti i processi in esecuzione. L'ultima colonna chiamata Commandci dà il nome del processo (tuttavia è limitato ai primi 15 caratteri).

    Comando <code> top </code> del terminale

Qui possiamo vedere che Firefox è appena chiamato come firefox. Quindi, se vogliamo questo comportamento quando Firefox è in esecuzione; sostituiremmo xbmc.binlo script con firefoxe tutto il resto funzionerebbe bene.


Ringraziamento: avevo trovato la sceneggiatura qui . Tuttavia, ho apportato le modifiche necessarie per renderlo compatto e soddisfare le esigenze della domanda.


Ma non sarebbe un ricorso ultimo, ultimo, finale, nient'altro funziona?
Nanne,

1
@Nanne: No ... Perché sarebbe così; lo script della shell non ostacolerà le risorse del sistema; e non simulerebbe il movimento del mouse quando XMBC non è in esecuzione; così come non dovrai ricordarti di eseguire questo script ogni volta ... Sebbene un'impostazione di preferenza in XMBC sarebbe ovviamente la soluzione migliore; poiché non uso XMBC - non so se tale impostazione esiste. Ho testato questo script Shell con Firefox e funziona come previsto dall'OP.
Aditya,

Il problema è che il sistema non dovrebbe andare a dormire durante la riproduzione di video (e per me non lo fa). Questa è chiaramente una soluzione alternativa (potresti chiamarlo anche un hack) e non sto dicendo che è male, ti propongo per questo grande post, ma comunque prima cercherei una soluzione reale (come dici, non lo fai conoscere XBMC, quindi potrebbe essercene uno reale) prima di provare questo. Ancora una volta, niente di male sul tuo post reale, ma non sei d'accordo che spostare il mouse è qualcosa che dovresti provare dopo che le impostazioni "normali" falliscono?
Nanne,

1
@Nanne Come ho detto, un'impostazione delle preferenze all'interno di XMBC per controllarla sarebbe ovviamente la soluzione migliore. Tuttavia, è prudente aspettarmi che l'OP abbia fatto i compiti. Inoltre, se tale impostazione fosse disponibile in XMBC, penso che qualcuno sarebbe arrivato e avrebbe pubblicato la sua risposta. La domanda ha 7 giorni fin d'ora - non credo che sia presente in XMBC. Ad ogni modo, mentre usi XMBC, puoi controllare se può essere fatto :)
Aditya,

3
Non lo definirei un trucco. Le persone usano gli script di shell per fare queste cose continuamente. Risposta fantastica +1.
Seth,

8

Una soluzione molto semplice è la caffeina . La caffeina è un 'applicazione della barra di stato in grado di prevenire temporaneamente l'attivazione sia del salvaschermo che della modalità di risparmio energetico "sleep".

Abilitarlo è facile come fare clic sull'indicatore della barra di stato, ma puoi anche configurarlo in modo tale da disabilitare automaticamente lo screensaver quando avvii xbmc. Vedi lo screenshot qui sotto

inserisci qui la descrizione dell'immagine

Se stai usando Gnome puoi installare l'estensione gnome della caffeina . In caso contrario, per Ubuntu fino al 15.04 (vivido) è possibile installare caffeina dal launchpad ppa:

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

dal 15.10 in poi è possibile installare senza ppa

sudo apt install caffeine

Godere!


Sembra un buon strumento.
thomasrutter,


@PeterMortensen Funziona, anche il 16.04, che la risposta è obsoleta. Grazie per l'headsup, perché anche la mia risposta potrebbe utilizzare un aggiornamento;) Ho aggiunto le istruzioni di installazione per le versioni più recenti di Ubuntu.
Gerhard Burger,

0

Li uso in ~ / 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

ovviamente puoi creare un'icona per eseguirli ma non uso neanche XBMC


Sto usando Gnome quindi non penso di usare xscreensaver. Grazie per la tua risposta.
thomasrutter,

0

Tutte queste soluzioni disattivano lo screensaver ogni volta che xbmc è in esecuzione, non solo durante la riproduzione di video. Poiché ha un server UPnP integrato, lo lascio attivo 24 ore su 24, 7 giorni su 7, ma desidero disabilitare lo screensaver solo quando un video viene riprodotto localmente.

Ecco cosa mi è venuto in mente: attiva il supporto http e JSON in XBMC. Quindi esegui una richiesta ciclica per scoprire se il giocatore è attivo o meno. Se lo è, emetti un comando xscreensaver -disable (puoi regolarlo per il tuo screensaver). In caso contrario, non fare nulla. Controllare ogni 50 secondi è abbastanza per me.

Codice Python qui: http://sumnerhayes.com/software/


Questa domanda riguardava l'XBMC in Ubuntu 12.10 che aveva un bug in cui non disabilitava lo screensaver durante la riproduzione di un video. Questo bug non esiste in XBMC nelle versioni più aggiornate di Ubuntu, quindi non credo che la soluzione alternativa sia necessaria. XBMC disabilita lo screensaver durante la riproduzione di video, come dovrebbe.
thomasrutter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.