自定义会话:默认情况下,窗口无法捕获整个屏幕区域。12.04

我正在尝试通过在`/usr/share/xesessions`文件夹中创建一个自定义的.desktop文件来创建一个自定义会话。请记住这不是一个`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应用程序(Quickly)

custom.desktop文件的内容

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

问题
我的自定义pyGTK应用程序在代码中有window.fullScreen()。这意味着它应该在全屏模式下打开,没有窗口边框(在正常会话下确实如此)。但是即使如此,周围还是有很多空间。
需要帮助
有人能告诉我这里发生了什么吗?我认为这可能与边框有关,就像http://www.instructables.com/id/Setting-Up-Ubuntu-as-a-Kiosk-Web-Appliance/?ALLSTEPS第8步所指出的那样。
如果偶然间,启用了--kiosk开关后,Google Chromium没有延伸到边缘,这是一个简单的修复方法。只需以常规用户身份登录,并编辑chromeKiosk.sh以去除--kiosk开关。然后再以受限用户身份登录,点击扳手图标并选择选项。然后在个人设置选项卡中选择隐藏系统标题栏并使用紧凑边框。关闭选项屏幕,将Chromium拉伸以适应监视器。然后重新进入选项窗口,并将其设置为使用系统标题栏和边框。完成此操作后,注销受限用户(可能需要重新启动),然后登录常规用户。将chromeKiosk.sh文件恢复为包含--kiosk开关,下次您登录受限用户时,Chromium应该全屏显示。
如果我要使用自定义的pyGTK或gtkmm应用程序,应该如何解决这个问题呢?window.fullScreen()函数应该占据整个屏幕区域。这必须以编程方式或通过其他可以进行缩放的方式来完成。我必须在位于不同地理区域的大量计算机上部署此应用程序。手动在每台计算机上执行此操作是不可行的。
3个回答

这是一个棘手的问题,我遇到过类似的问题,当我尝试在时间跟踪电脑上只使用ncurses界面时,问题就出现了,对我来说,当没有窗口管理器存在时,普通的X Window应用程序会表现得很奇怪。
以下是我的建议:
1. 安装ratpoison窗口管理器 ``` sudo apt-get install ratpoison ```
2. 解除绑定显示菜单或允许执行终端或命令的键盘,在`$HOME/.ratpoisonrc`中添加以下内容,其中`home`是运行kiosk模式的用户: ``` unbind c unbind C-c unbind exclam unbind C-exclam unbind period ```
3. 不要直接调用google-chrome,而是像你提到的instructables链接那样放置一个脚本。
``` [Desktop Entry] Encoding=UTF-8 Name=Kiosk Mode Comment=Chromium Kiosk Mode Exec=/usr/share/xsessions/chromeKiosk.sh Type=Application ```
4. 在脚本中添加以下内容(记得将其设置为可执行):
``` #!/bin/bash ratpoison & xscreensaver -nosplash & while true; do chromium-browser --kiosk http://google.com; sleep 5s; done ```
在Ubuntu 12.04和Chromium上对我有效。

你也有一个非常好的想法。+1 - nanofarad

案例1

你需要通过重新编写Chromium的首选项文件(底部右侧数值)来告诉它你的屏幕分辨率。你发布的链接中包含了这一部分。

#!/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()方法通常会真正实现全屏。所以不需要先定义分辨率。 更多信息请参考这里,但我相信你已经知道了: http://www.pygtk.org/docs/pygtk/class-gtkwindow.html#method-gtkwindow--fullscreen


案例1 在我的情况下,这对我有帮助:
sudo nano sudo ~/.config/chrium/Default/Preferences
我根据我的屏幕分辨率更改了这些值:
"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 }

我无法手动更改它。 - Juzer Ali