Ho il seguente problema: Utilizzando un RaspPi 3B con Raspbian Jessie (versione 4.4.26-v7 +), vorrei che la GUI di uno script Python scritto da solo fosse eseguita all'avvio.
So che questa domanda è stata posta su questo sito Web e su altri, ma poiché Raspbian continua a cambiare e nessuna delle soluzioni suggerite prima ha funzionato per me (vedi sotto), vorrei farle di nuovo.
Da quanto ho capito, devo caricare XServer ed eseguire successivamente il mio script. Questo dovrebbe accadere invece di caricare l'intero desktop.
Un modo per raggiungere questo obiettivo dovrebbe essere tramite il file di avvio automatico LXDE (come indicato in questa risposta ). Ho modificato sia il file /etc/xdg/lxsession/LXDE-pi/autostart
che il file /etc/xdg/lxsession/LXDE/autostart
(il primo conteneva originariamente quattro righe anziché tre come suggerito nel post di riferimento) - aggiungendo le righe @sudo python /full/path/to/file.py
e @openbox
, ma il mio Pi si avvia ancora sul desktop e non esegue automaticamente lo script. Annotazione: ho provato solo la riga di script e la riga di script insieme alla riga openbox per uno dei file e per entrambi i file insieme.
Un'altra strategia prevede il file rc.local (come suggerito nella documentazione ufficiale ). Tuttavia, solo l'aggiunta python /full/path/to/file.py &
non ha funzionato (poiché mancava ancora la mia GUI) e l'ulteriore aggiunta startx
non mi ha aiutato poiché apparentemente non riuscivo a collegare lo startx con lo script Python e il primo quindi si chiudeva immediatamente dopo l'avvio.
Alcuni suggeriscono che dovrebbe essere usato (in aggiunta) .xinitrc. Questo, tuttavia, non ha funzionato neanche:
su -c python /full/path/to/file.py pi
E, ultimo ma non meno importante, in qualche modo, dovrebbe essere fattibile usando init.d - ma non ho ancora trovato dettagli su questo.
Gradirei davvero qualsiasi suggerimento verso la giusta direzione. Dov'è il mio errore? Come dovrebbe essere la mia linea in rc.local o .xinitrc? O ci sono stati cambiamenti importanti legati al passaggio al pixel e dovrei provare qualcos'altro?
Alcune informazioni aggiuntive: lo script necessita dei diritti sudo. È scritto in Python 2.7, la GUI utilizza Tkinter. La GUI riempie completamente lo schermo, quindi gli sfondi sono irrilevanti. Lo script dovrebbe essere eseguito per sempre (o fino a quando non viene interrotto dall'input dell'utente attraverso la GUI) e utilizza servizi di sistema come wifi ed Ethernet.
Ulteriori informazioni: tutto sta accadendo localmente.
Chiarimento: ormai ho trascorso più di 8 ore a cercare in rete, provando tutorial da diversi punti di partenza o mescolandoli insieme. Sono giunto alla conclusione che il mio script (che funziona perfettamente all'avvio in pixel) non funziona se eseguito in un ambiente non desktop (di cui dubito) o che è necessario un nuovo tutorial, perché l'ottobre 2016 cambia in Raspbian ha reso obsoleti tutti i tutorial più vecchi. Inoltre, la sfida non sta nell'avvio dello script o nell'avvio di Xserver (o qualcosa di simile) indipendentemente l'uno dall'altro, ma nel fare entrambi i collegamenti in modo che lo script utilizzi il display creato da Xserver.