Sesión personalizada: la ventana no captura el área de pantalla completa de forma predeterminada. 12.04

11

Estoy tratando de crear una sesión personalizada creando un archivo custom.desktop en la /usr/share/xesessionscarpeta. Recuerde que esta no es una gnomeo alguna otra sesión. He creado mi propia aplicación para esta sesión, que son simples.

Caso 1

Navegador Chrome

Contenido del archivo custom.desktop

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

Problema

El navegador Chrome se inicia en modo quiosco pero no captura el área de pantalla completa. Queda un área en la parte inferior y derecha de la pantalla.


Caso 2

Aplicación personalizada pyGTK (rápidamente)

Contenido del archivo custom.desktop

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

Problema

Mi aplicación pyGTK personalizada tiene window.fullScreen()en el código. Eso significa que debería abrirse en pantalla completa sin la ventana de Chrome (y lo hace en la sesión normal). Pero eso también deja mucho espacio a su alrededor.

Necesitas ayuda

¿Alguien puede decirme qué está pasando aquí? Creo que es un problema con las fronteras como se señala en http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS en el Paso 8

Si por casualidad, Google Chromium no se estira hasta los bordes con el interruptor --kiosk habilitado, hay una solución simple. Para estirar Chromium, simplemente inicie sesión como usuario habitual y edite chromeKiosk.sh para no tener el modificador --kiosk. Luego, inicie sesión como usuario restringido, haga clic en la llave y elija opciones. Luego, en la pestaña Cosas personales, seleccione Ocultar barra de título del sistema y use bordes compactos. Cierre la pantalla de opciones y estire Chromium para que se ajuste al monitor. Luego regrese a la ventana de opciones y configúrelo para Usar la barra de título y los bordes del sistema. Una vez hecho esto, cierre la sesión de su usuario restringido (es posible que deba reiniciar) e inicie sesión en su usuario habitual. Edite chromeKiosk.sh nuevamente para incluir el modificador --kiosk nuevamente y Chromium debería estar en pantalla completa la próxima vez que inicie sesión en el usuario restringido.

Si tuviera que usar una aplicación personalizada pyGTKo gtkmm, ¿cómo debería solucionar este problema? window.fullScreen()debe ocupar el área de pantalla completa. Esto tiene que hacerse mediante programación o de alguna otra manera que pueda escalar. Tengo que implementar esto en una gran cantidad de máquinas ubicadas en diferentes áreas geográficas. No es posible hacerlo manualmente en todas las máquinas.

Juzer Ali
fuente

Respuestas:

6

Esto es complicado, tuve un problema similar, cuando traté de tener solo una interfaz basada en ncurses en una PC de seguimiento de tiempo, el problema para mí fue que cuando no hay un administrador de ventanas presente, las aplicaciones normales de X Window se comportan de manera extraña. Aquí está mi propuesta:

  1. Instalar el administrador de ventanas ratpoison
    sudo apt-get install ratpoison
    
  2. Desenlaza los teclados que muestran un menú o te permiten ejecutar terminales o comandos, poniéndolo en $ HOME / .ratpoisonrc siendo el hogar el usuario que ejecutará el modo kiosco
    desenlazar c
    desenlazar Cc
    desatar exclamación
    desvincular C-exclam
    período de desvinculación
    
  3. En lugar de llamar directamente a google-chrome, coloque un script como el enlace de instructables que mencionó
[Entrada de escritorio]
Codificación = UTF-8
Nombre = Modo quiosco
Comentario = Modo de quiosco de cromo
Exec = / usr / share / xsessions / chromeKiosk.sh
Tipo = Aplicación
  1. En el script ponga esto (recuerde hacerlo ejecutable)
#! / bin / bash
veneno para ratas &
xscreensaver -nosplash &
si bien es cierto; do chromium-browser --kiosk http://google.com; dormir 5s; hecho

A mí me funcionó, con Ubuntu 12.04 y chromium.

Awi
fuente
También tienes una muy buena idea. +1
nanofarad
1

caso 1

Debe decirle a chromium cuál es la resolución de su pantalla reescribiendo su archivo de preferencias ( valores inferior y derecho ). El enlace que publicó incluye esa 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

(probado en Ubuntu 12.04)

case2

Diría que tiene que decirle de alguna manera a su aplicación pyGTK cuáles son los valores inferiores y correctos, respectivamente, cuál es la resolución de la pantalla. Luego, el comando de pantalla completa debe hacer que su aplicación cubra toda la pantalla, es decir, no deje ningún borde.

Editar: parece que el método window.fullscreen () debería, en general, hacer que sea realmente a pantalla completa. Por lo tanto, no es necesario definir primero la resolución. Más información aquí, pero estoy seguro de que ya lo sabes: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen

rosch
fuente
0

El caso 1 en mi caso esto me ayudó:

sudo nano sudo ~ / .config / chrium / Predeterminado / Preferencias

Cambié los valores según la resolución de mi pantalla

"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
fuente
No puedo cambiarlo manualmente.
Juzer Ali