Sessão personalizada: a janela não captura a área da tela inteira por padrão. 12,04

10

Estou tentando criar uma sessão personalizada criando um arquivo custom.desktop na pasta /usr/share/xesessions . Lembre-se de que isso não é uma gnome ou alguma outra sessão. Eu criei meu próprio aplicativo para esta sessão, que é simples.

Caso 1

Navegador Chrome

Conteúdo do arquivo custom.desktop

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

Problema

O navegador Google Chrome é iniciado no modo quiosque, mas não captura a área completa da tela. Alguma área é deixada no lado inferior e direito da tela.

Caso 2

Aplicativo pyGTK personalizado (Rapidamente)

Conteúdo do arquivo custom.desktop

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

Problema

Meu aplicativo pyGTK personalizado tem window.fullScreen() no código. Isso significa que ele deve abrir em tela cheia sem o cromo da janela (e isso acontece na sessão normal). Mas isso também deixa muito espaço ao redor.

Precisa de ajuda

Alguém pode me dizer o que está acontecendo aqui. Eu acho que é um problema com as fronteiras, como apontado em link na etapa 8

  

Se por acaso, o Google Chromium não for esticado até as bordas com a opção --kiosk ativada, há uma correção simples. Para expandir o Chromium, basta fazer login como usuário comum e editar o chromeKiosk.sh para não ter a opção --kiosk. Em seguida, faça login como usuário restrito, clique na chave e escolha as opções. Em seguida, na guia Coisas pessoais, selecione Ocultar barra de título do sistema e use bordas compactas. Feche a tela de opções e estique o Chromium para se ajustar ao monitor. Em seguida, volte para a janela de opções e defina-a como Usar barra de título e bordas do sistema. Depois disso, efetue logout do usuário restrito (talvez seja necessário reinicializar) e faça login no usuário normal. Edite o chromeKiosk.sh de volta para incluir a opção --kiosk novamente e o Chromium deve estar em tela cheia na próxima vez que você fizer login no usuário restrito.

Se eu usasse um aplicativo personalizado pyGTK ou gtkmm , como resolver esse problema. window.fullScreen() deve ocupar toda a área da tela. Isso tem que ser feito de forma programática ou de alguma outra maneira que possa escalar. Eu tenho que implantar isso em um grande número de máquinas localizadas em diferentes áreas geográficas. Fazê-lo manualmente em todas as máquinas não é possível.

    
por Juzer Ali 06.09.2012 / 09:07

3 respostas

5

Isso é complicado, eu tive um problema parecido, ao tentar ter apenas uma interface baseada em ncurses em um time tracker pc, o problema para mim era que quando nenhum gerenciador de janelas estava presente, aplicações X Window normais se comportavam de maneira estranha. Aqui está minha proposta:

  1. Instale o gerenciador de janelas ratpoison
    sudo apt-get install ratpoison
    
  2. Desativar teclados que mostram um menu ou permitem executar terminais ou comandos, colocando isso em $ HOME / .ratpoisonrc sendo a casa o usuário que executará o modo de quiosque
    unbind c
    unbind C-c
    unbind exclam
    unbind C-exclam
    unbind period
    
  3. Em vez de ligar diretamente para o google-chrome, coloque um script como o link do instructables mencionado
[Desktop Entry]
Encoding=UTF-8
Name=Kiosk Mode
Comment=Chromium Kiosk Mode
Exec=/usr/share/xsessions/chromeKiosk.sh
Type=Application
  1. No script, coloque isso (lembre-se de torná-lo executável)
#!/bin/bash
ratpoison &
xscreensaver -nosplash &
while true; do chromium-browser --kiosk http://google.com; sleep 5s; done

Trabalhei para mim, com o Ubuntu 12.04 e o cromo.

    
por Awi 29.09.2012 / 01:45
1

case1

Você precisa dizer ao cromo qual é a resolução da sua tela reescrevendo seu arquivo de preferências (valores bottom e right ). O link que você postou inclui essa 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

(testado no Ubuntu 12.04)

case2

Eu diria que você tem que de alguma forma dizer ao seu aplicativo pyGTK quais são os valores inferior e direito, respectivamente qual é a resolução da tela. Em seguida, o comando de tela inteira deve fazer com que seu aplicativo cubra toda a tela, ou seja, não deixe bordas.

Editar: parece que o método window.fullscreen () deve, em geral, torná-lo realmente em tela cheia. Portanto, não há necessidade de definir a resolução primeiro. Mais informações aqui, mas tenho certeza que você já sabe disso: link

    
por rosch 29.09.2012 / 02:17
0

Caso 1 no meu caso, isso me ajudou:

  

sudo nano sudo ~ / config / chrium / Default / Preferências

Eu alterei os valores de acordo com a minha resolução de tela

  

"window_placement": {           "fundo": 1024,           "left": 0,           "maximizada": verdade           "direita": 1280,           "top": 0,           "work_area_bottom": 1024,           "work_area_left": 0,           "work_area_right": 1280,           "work_area_top": 0        }

    
por gregor van mulders 29.01.2013 / 16:04