Sessão personalizada: a janela não captura a área de tela cheia por padrão. 12.04

11

Estou tentando criar uma sessão personalizada criando um arquivo custom.desktop na /usr/share/xesessionspasta. Lembre-se de que esta não é uma gnomeou 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

Questão

O navegador Chrome inicia no modo quiosque, mas não captura a área completa da tela. Alguma área é deixada na parte inferior e direita 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

Questão

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

Preciso de ajuda

Alguém pode me dizer o que está acontecendo aqui. Eu acho que é algum problema com as fronteiras, conforme apontado em http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS na Etapa 8

Se por acaso, o Google Chromium não for esticado até as bordas com a opção --kiosk ativada, há uma solução simples. Para expandir o Chromium, faça login como usuário comum e edite chromeKiosk.sh para não ter a opção --kiosk. Em seguida, efetue login como usuário restrito, clique na chave inglesa e escolha 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 caber no 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 seu usuário restrito (pode ser necessário apenas reiniciar) e faça login no seu usuário comum. Edite chromeKiosk.sh novamente para incluir a opção --kiosk novamente e o Chromium deverá estar em tela cheia na próxima vez que você fizer login no usuário restrito.

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

Juzer Ali
fonte

Respostas:

6

Este é um problema, eu tive um problema semelhante, ao tentar ter apenas uma interface baseada em ncurses em um PC com rastreador de tempo, o problema para mim era que, quando nenhum gerenciador de janelas está presente, os aplicativos normais do X Window se comportam de maneira estranha. Aqui está a minha proposta:

  1. Instale o gerenciador de janelas ratpoison
    sudo apt-get install ratpoison
    
  2. Desvincular teclados que mostram um menu ou permitem executar terminais ou comandos, colocando-o em $ HOME / .ratpoisonrc, sendo o usuário o usuário que executará o modo quiosque
    desatar c
    desvincular Cc
    desassociar exclam
    desassociar C-exclam
    período livre
    
  3. Em vez de ligar diretamente para o google-chrome, coloque um script como o link dos instructables que você mencionou
[Entrada na área de trabalho]
Codificação = UTF-8
Nome = Modo Quiosque
Comentário = Modo Quiosque de cromo
Exec = / usr / share / xsessions / chromeKiosk.sh
Tipo = Aplicação
  1. No script, coloque isso (lembre-se de torná-lo executável)
#! / bin / bash
veneno de rato &
xscreensaver -nosplash &
enquanto verdadeiro; faça navegador de cromo - quiosque http://google.com; dormir 5s; feito

Trabalhou para mim, com o Ubuntu 12.04 e chromium.

Awi
fonte
Você também tem uma ideia muito boa. +1
nanofarad
1

caso 1

Você precisa informar ao cromo qual é a sua resolução de tela reescrevendo seu arquivo de preferências ( valores inferior e direito ). 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ê precisa, 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 cheia deve fazer com que seu aplicativo cubra toda a tela, ou seja, não deixe fronteiras.

Editar: parece que o método window.fullscreen () geralmente deve 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: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen

rosch
fonte
0

Caso 1 no meu caso, isso me ajudou:

sudo nano sudo ~ / .config / chrium / Padrão / Preferências

Alterei os valores de acordo com a resolução da tela

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

Greg van Mulders
fonte
Não posso alterá-lo manualmente.
precisa saber é o seguinte