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

11

J'essaie de créer une session personnalisée en créant un fichier custom.desktop dans le /usr/share/xesessionsdossier. N'oubliez pas que ce n'est pas une gnomeou une autre session. J'ai créé ma propre application pour cette session, qui est simple.

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 zone d'écran complète. Une zone est laissée 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 il le fait dans le cadre de la session normale). Mais cela aussi laisse beaucoup d'espace autour de lui.

Besoin d'aide

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

Si par hasard, Google Chromium n'est pas étiré jusqu'aux bords avec le commutateur --kiosk activé, il existe une solution simple. Pour étirer Chromium, connectez-vous simplement en tant qu'utilisateur normal et modifiez chromeKiosk.sh pour ne pas avoir le commutateur --kiosk. Connectez-vous ensuite 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 Chrome pour l'adapter au moniteur. Revenez ensuite dans la fenêtre d'options et définissez-la sur Utiliser la barre de titre et les bordures du système. Une fois cette opération terminée, déconnectez-vous de votre utilisateur restreint (il se peut que vous deviez simplement redémarrer) et connectez-vous à votre utilisateur normal. Modifiez chromeKiosk.sh pour 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 pyGTKou une gtkmmapplication personnalisée, comment contourner ce problème. window.fullScreen()devrait occuper toute la zone 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 n'est pas possible de le faire manuellement sur chaque machine.

Juzer Ali
la source

Réponses:

6

C'est un problème délicat, j'ai eu un problème similaire, lorsque j'essayais de n'avoir qu'une interface basée sur ncurses sur un PC de suivi du temps, le problème pour moi était que quand aucun gestionnaire de fenêtres n'est présent, les applications X Window normales se comportent bizarrement. Voici ma proposition:

  1. Installer le gestionnaire de fenêtres ratpoison
    sudo apt-get install ratpoison
    
  2. Dissociez les claviers qui affichent un menu ou vous permettent d'exécuter des terminaux ou des commandes, en le mettant dans $ HOME / .ratpoisonrc, le domicile étant l'utilisateur qui exécutera le mode kiosque
    délier c
    délier Cc
    délier exclam
    dissocier C-exclam
    délier la période
    
  3. Au lieu d'appeler directement sur Google Chrome, mettez un script comme le lien des instructables que vous avez mentionné
[Entrée de bureau]
Encodage = UTF-8
Nom = mode kiosque
Commentaire = Chromium Kiosk Mode
Exec = / usr / share / xsessions / chromeKiosk.sh
Type = Application
  1. Sur le script, mettez ceci (n'oubliez pas de le rendre exécutable)
#! / bin / bash
mort aux rats &
xscreensaver -nosplash &
bien que vrai; faire chromium-browser --kiosk http://google.com; 5s du sommeil; terminé

A fonctionné pour moi, avec Ubuntu 12.04 et le chrome.

Awi
la source
Vous avez également une très bonne idée. 1
nanofarad
1

cas 1

Vous devez indiquer à chrome quelle est la résolution de votre écran en réécrivant son fichier de préférences ( valeurs en bas et à droite ). Le lien que vous avez publié 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 d'écran. Ensuite, la commande plein écran devrait faire en sorte que votre application couvre tout l'écran, c'est-à-dire qu'elle ne laisse aucune frontière.

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 d'abord la résolution. Plus d'informations ici, mais je suis sûr que vous le savez déjà: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen

rosch
la source
0

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

sudo nano sudo ~ / .config / chrium / Default / Préférences

J'ai changé les valeurs en fonction de ma résolution d'é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}

gregor van mulders
la source
Je ne peux pas le changer manuellement.
Juzer Ali