web-dev-qa-db-fra.com

Session personnalisée: la fenêtre ne capture pas la zone plein écran par défaut. 12.04

J'essaie de créer une session personnalisée en créant un fichier custom.desktop dans le dossier /usr/share/xesessions. Rappelez-vous qu'il ne s'agit pas d'une gnome ou d'une autre session. J'ai créé ma propre application pour cette session, qui sont simples.

Cas 1

Navigateur Chrome

Contenu du fichier custom.desktop

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

Problème

Le navigateur Chrome démarre en mode kiosque mais ne capture pas la totalité de la zone d'écran. Certaines zones sont laissées en bas et à droite de l'écran.


Cas 2

Application pyGTK personnalisée (rapidement)

Contenu du fichier custom.desktop

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

Problème

Mon application pyGTK personnalisée a window.fullScreen() dans le code. Cela signifie qu'il devrait s'ouvrir en plein écran sans la fenêtre chrome (et cela se fait sous la session normale). Mais cela aussi laisse beaucoup d’espace autour.

Besoin d'aide pour

Quelqu'un peut-il me dire ce qui se passe ici. Je pense que son problème avec les frontières, comme indiqué à la page http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS in Step 8

Si, par hasard, Google Chromium n'est pas étendu sur les bords avec le commutateur --kiosk activé, il existe une solution simple. Pour étirer Chromium, connectez-vous simplement en tant qu'utilisateur régulier et modifiez chromeKiosk.sh pour ne pas utiliser le commutateur --kiosk. Puis connectez-vous en tant qu'utilisateur restreint, cliquez sur la clé et choisissez les options. Ensuite, dans l’onglet Personal Stuff, sélectionnez Masquer la barre de titre du système et utilisez des bordures compactes. Fermez l’écran des options et étirez le chrome pour s’adapter au moniteur. Revenez ensuite dans la fenêtre des options et réglez-le sur Utiliser la barre de titre et les bordures du système. Une fois que cela est fait, déconnectez-vous de votre utilisateur restreint (vous devrez peut-être simplement redémarrer) et connectez-vous à votre utilisateur habituel. Editez chromeKiosk.sh afin d'inclure à nouveau le commutateur --kiosk et Chromium devrait être en plein écran la prochaine fois que vous vous connecterez à l'utilisateur restreint.

Si je devais utiliser une application personnalisée pyGTK ou gtkmm, comment devrais-je résoudre ce problème? window.fullScreen() devrait occuper toute la surface de l'écran. Cela doit être fait par programme ou d'une autre manière qui peut évoluer. Je dois le déployer sur un grand nombre de machines situées dans différentes zones géographiques. Il est impossible de le faire manuellement sur chaque machine.

11
Juzer Ali

C’est un problème épineux. J’ai eu un problème similaire. Lorsque je n’avais qu’une interface basée sur ncurses sur un PC de suivi du temps, le problème était que, quand aucun gestionnaire de fenêtres n’était présent, les applications X Window normales se comportaient bizarrement. Voici ma proposition:

  1. Installer le gestionnaire de fenêtres de ratpoison
    Sudo apt-get install ratpoison 
    
  2. Désactivez les claviers qui affichent un menu ou vous permettent d’exécuter des terminaux ou des commandes, en plaçant ceci dans $ HOME/.ratpoisonrc la maison étant l’utilisateur qui exécutera le mode kiosque
     dissocier c 
     dissocier C-c 
     dissocier exclam 
     dissocier C-exclam 
     dissocier période 
    
  3. Au lieu d'appeler directement Google-Chrome, mettez un script comme le lien instructables que vous avez mentionné
 [Entrée du bureau] 
 Encodage = UTF-8 
 Nom = Mode Kiosque 
 Commentaire = Mode Kiosque chrome 
 Exec =/usr/share/xsessions/chromeKiosk.sh 
 Type = Application 
  1. Sur le script, mettez ceci (n'oubliez pas de le rendre exécutable)
 #!/bin/bash 
 ratpoison & 
 xscreensaver -nosplash & 
 while true; do chrome-browser --kiosk http://google.com; dormir 5s; terminé

Travaillé pour moi avec Ubuntu 12.04 et chrome.

6
Awi

case1

Vous devez indiquer au chrome quelle est votre résolution d'écran en réécrivant son fichier de préférences (valeurs en bas et à droite). Le lien que vous avez posté comprend cette partie.

#!/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

(testé dans Ubuntu 12.04)

case2

Je dirais que vous devez en quelque sorte dire à votre application pyGTK quelles sont les valeurs inférieure et droite, respectivement, quelle est la résolution de l'écran. Ensuite, la commande plein écran doit permettre à votre application de couvrir tout l’écran, c’est-à-dire de ne pas laisser de bordures.

Edit: il semble que la méthode window.fullscreen () devrait en général le rendre vraiment plein écran. Donc, pas besoin de définir la résolution en premier. Plus d'informations ici, mais je suis sûr que vous connaissez déjà ceci: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen

1
rosch

Cas 1 dans mon cas, cela m'a aidé:

Sudo nano Sudo ~/.config/chrium/Par défaut/Préférences

J'ai changé les valeurs en fonction de la résolution de mon écran

"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}

0
gregor van mulders