Sessione personalizzata: la finestra non acquisisce l'area a schermo intero per impostazione predefinita. 12.04


11

Sto cercando di creare una sessione personalizzata creando un file custom.desktop nella /usr/share/xesessionscartella. Ricorda che questa non è una gnomeo qualche altra sessione. Ho creato la mia applicazione per questa sessione, che sono semplici.

Caso 1

Chrome Browser

Contenuto del file custom.desktop

[Desktop Entry]
Name=Internet Kiosk
Comment=This is an internet kiosk
Exec=google-chrome --kiosk
TryExec=
Icon=
Type=Application

Problema

Il browser Chrome si avvia in modalità kiosk ma non acquisisce l'area dello schermo completa. Alcune aree sono lasciate nella parte inferiore e destra dello schermo.


Caso 2

App pyGTK personalizzata (rapidamente)

Contenuto del file custom.desktop

[Desktop Entry]
Name=Custom Kiosk
Comment=This is a custom kiosk
Exec=~/MyCustomPyGTKApp
TryExec=
Icon=
Type=Application

Problema

La mia app pyGTK personalizzata ha window.fullScreen()nel codice. Ciò significa che dovrebbe aprirsi a schermo intero senza la finestra chrome (e lo fa durante la normale sessione). Ma anche quello lascia molto spazio attorno.

Ho bisogno di aiuto

Qualcuno può dirmi cosa sta succedendo qui. Penso che sia un problema con i bordi, come sottolineato su http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS nel passaggio 8

Se per caso, Google Chromium non è allungato ai bordi con l'opzione --kiosk abilitata, esiste una soluzione semplice. Per allungare Chromium accedi semplicemente come utente normale e modifica chromeKiosk.sh per non avere l'opzione --kiosk. Quindi accedi come utente con restrizioni, fai clic sulla chiave inglese e scegli le opzioni. Quindi nella scheda Roba personale seleziona Nascondi barra del titolo del sistema e usa bordi compatti. Chiudi la schermata delle opzioni e allunga Chromium per adattarlo al monitor. Quindi torna nella finestra delle opzioni e impostala su Usa barra del titolo e bordi del sistema. Al termine, disconnettersi dal proprio utente con restrizioni (potrebbe essere necessario riavviare) e accedere al proprio utente normale. Modifica chromeKiosk.sh per includere nuovamente l'opzione --kiosk e Chromium dovrebbe essere a schermo intero la prossima volta che accedi all'utente con restrizioni.

Se dovessi utilizzare un'app personalizzata pyGTKo gtkmmun'app, come dovrei aggirare questo problema. window.fullScreen()dovrebbe occupare l'intera area dello schermo. Questo deve essere fatto a livello di codice o in qualche altro modo che può essere ridimensionato. Devo implementare questo su un gran numero di macchine situate in diverse aree geografiche. Non è possibile farlo manualmente su ogni macchina.

Risposte:


6

Questo è complicato, ho avuto un problema simile, quando ho cercato di avere solo un'interfaccia basata su ncurses su un PC time tracker, il problema per me era che quando non è presente nessun gestore delle finestre, le normali applicazioni X Window si comportano in modo strano. Ecco la mia proposta:

  1. Installa il gestore finestre ratpoison
    sudo apt-get install ratpoison
    
  2. Sblocca le tastiere che mostrano un menu o ti consentono di eseguire terminali o comandi, inserendo $ HOME / .ratpoisonrc in home essendo l'utente che eseguirà la modalità kiosk
    sciogliere c
    separare Cc
    non separare esclamazione
    separare C-esclam
    periodo di scioglimento
    
  3. Invece di chiamare direttamente su google-chrome, inserisci uno script come il link di Instructables che hai citato
[Voce desktop]
Codificante = UTF-8
Nome = Modalità Kiosk
Commento = Modalità Kiosk al cromo
Exec = / usr / share / xsessions / chromeKiosk.sh
Type = Application
  1. Sullo script metti questo (ricordati di renderlo eseguibile)
#! / Bin / bash
veleno per topi &
xscreensaver -nosplash &
mentre vero; fare il browser chromium --kiosk http://google.com; dormire 5 secondi; fatto

Ha funzionato per me, con Ubuntu 12.04 e cromo.


Hai anche un'ottima idea. +1
nanofarad,

1

caso 1

Devi dire al cromo quale è la tua risoluzione dello schermo riscrivendo il suo file delle preferenze ( valori in basso e a destra ). Il link che hai pubblicato include quella parte.

#!/bin/bash

prefs=~/.config/chromium/Default/Preferences

cat $prefs |\
perl -pe "s/\"bottom.*/\"bottom\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f2),/" \
> $prefs

cat $prefs |\
perl -pe "s/\"right.*/\"right\": $(xrandr | grep \* | cut -d' ' -f4 | cut -d'x' -f1),/" \
> $prefs

chromium-browser

(testato in Ubuntu 12.04)

case2

Direi che devi in ​​qualche modo dire alla tua app pyGTK quali sono i valori in basso e a destra, rispettivamente quale sia la risoluzione dello schermo. Quindi il comando a schermo intero dovrebbe far sì che la tua app copra tutto lo schermo, cioè non lasciare alcun bordo.

Modifica: sembra che il metodo window.fullscreen () dovrebbe in generale renderlo a schermo intero. Quindi non è necessario definire prima la risoluzione. Maggiori informazioni qui, ma sono sicuro che lo sai già: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen


0

Caso 1 nel mio caso questo mi ha aiutato:

sudo nano sudo ~ / .config / chrium / Default / Preferenze

Ho modificato i valori in base alla risoluzione dello schermo

"window_placement": {"bottom": 1024, "left": 0, "maximized": true, "right": 1280, "top": 0, "work_area_bottom": 1024, "work_area_left": 0, "work_area_right" : 1280, "work_area_top": 0}


Non posso cambiarlo manualmente.
Juzer Ali,
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.