Пользовательский сеанс: окно по умолчанию не фиксирует область полного экрана. 12,04

10

Я пытаюсь создать пользовательский сеанс, создав файл custom.desktop в папке /usr/share/xesessions . Помните, что это не gnome или какой-либо другой сеанс. Я создал собственное приложение для этого сеанса, которые просты.

Случай 1

Браузер Chrome

Содержимое файла custom.desktop

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

Вопрос

Браузер Chrome запускается в режиме киоска, но не фиксирует полную площадь экрана. Некоторая область остается в нижней и правой частях экрана.

Случай 2

Пользовательское приложение pyGTK (быстро)

Содержимое файла custom.desktop

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

Вопрос

В моем пользовательском приложении pyGTK есть window.fullScreen() в коде. Это означает, что он должен открываться в полноэкранном режиме без окна хром (и это происходит при обычном сеансе). Но это тоже оставляет много места вокруг него.

Нужна помощь

Может ли кто-нибудь сказать мне, что происходит здесь. Я думаю, что его проблема связана с границами, указанными в Ссылка в шаге 8

  

Если случайно, Google Chromium не растягивается до края с включенным переключателем --kiosk, есть простое исправление. Чтобы растянуть Chromium, просто войдите в систему как ваш обычный пользователь и отредактируйте chromeKiosk.sh, чтобы не было переключателя --kiosk. Затем войдите в систему как ограниченный пользователь, нажмите гаечный ключ и выберите параметры. Затем на вкладке «Личные материалы» выберите «Скрыть строку заголовка системы» и используйте компактные границы. Закройте экран параметров и увеличьте Chromium, чтобы он соответствовал монитору. Затем вернитесь в окно параметров и установите для него значение Использовать заголовок и границы раздела. После этого выйдите из своего ограниченного пользователя (возможно, вам нужно просто перезагрузить компьютер) и войдите в обычного пользователя. Отредактируйте chromeKiosk.sh, чтобы снова включить переключатель --kiosk, и Chromium должен быть полноэкранным при следующем входе в ограниченный пользователь.

Если бы я использовал пользовательское приложение pyGTK или gtkmm , как мне обойти эту проблему. window.fullScreen() должно занимать всю площадь экрана. Это должно быть сделано программно или каким-либо другим способом, который может масштабироваться. Я должен развернуть это на большом количестве машин, расположенных в разных географических районах. Выполнение его вручную на каждой машине невозможно.

    
задан Juzer Ali 06.09.2012 в 07:07
источник

3 ответа

5

Это сложная задача, у меня была аналогичная проблема: при попытке иметь только интерфейс на основе ncurses на компьютере с отслеживанием времени проблема заключалась в том, что когда диспетчер окон не присутствует, обычные приложения X Window ведут себя странно. Вот мое предложение:

  1. Установить диспетчер оконной стойки
    sudo apt-get install ratpoison
    
  2. Отключить клавиатуру, которая отображает меню или позволяет выполнять терминалы или команды, помещая их в $ HOME / .ratpoisonrc , который является пользователем, который будет запускать режим киоска
    unbind c
    unbind C-c
    unbind exclam
    unbind C-exclam
    unbind period
    
  3. Вместо того, чтобы напрямую обращаться к google-chrome, поместите скрипт, например, ссылку с инструкциями, которую вы упомянули
[Desktop Entry]
Encoding=UTF-8
Name=Kiosk Mode
Comment=Chromium Kiosk Mode
Exec=/usr/share/xsessions/chromeKiosk.sh
Type=Application
  1. В сценарии поместите это (не забудьте сделать его исполняемым)
#!/bin/bash
ratpoison &
xscreensaver -nosplash &
while true; do chromium-browser --kiosk http://google.com; sleep 5s; done

Работал для меня, с Ubuntu 12.04 и хром.     

ответ дан Awi 28.09.2012 в 23:45
1

case1

Вам нужно сообщить хром, что у вас есть разрешение экрана, переписав его файл настроек ( bottom и right ). Ссылка, которую вы опубликовали, включает эту часть.

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

(проверено в Ubuntu 12.04)

Вариант 2

Я бы сказал, вам нужно как-то сообщить вашему приложению pyGTK, что такое нижнее и правое значения, соответственно, что такое разрешение экрана. Затем полноэкранная команда должна сделать ваше приложение закрытым на весь экран, то есть не оставлять никаких границ.

Изменить: похоже, что метод window.fullscreen () должен в целом сделать его действительно полноэкранным. Поэтому не нужно сначала определять разрешение. Больше информации здесь, но я уверен, что вы уже знаете это: Ссылка

    
ответ дан rosch 29.09.2012 в 00:17
0

Случай 1 в моем случае это помогло мне:

  

sudo nano sudo ~ / .config / chrium / Default / Preferences

Я изменил значения в соответствии с разрешением экрана

  

"window_placement": {           «bottom»: 1024,           «left»: 0,           «maximized»: true,           «правый»: 1280,           «top»: 0,           «work_area_bottom»: 1024,           «work_area_left»: 0,           «work_area_right»: 1280,           "work_area_top": 0        }

    
ответ дан gregor van mulders 29.01.2013 в 15:04