X11

為什麼命令會在提示符下而不是在腳本中執行?

  • August 1, 2016

我有一個執行 raspbian jessie 的 RPi,我在 kiosk 模式下使用它:我從/etc/rc.local

/usr/bin/xinit /opt/domotique/xinitrc > /root/xinitrc-errors 2>&1

並且 /opt/domotique/xinitrc

date > /tmp/date.txt
export DISPLAY=':0'
xset s off
xset -dpms
xset s noblank
setxkbmap fr
/usr/bin/matchbox-window-manager -use_titlebar no -use_cursor no &
# wait for the window manager to start
sleep 10
rm -fr /root/.config /root/.cache
/usr/bin/firefox http://127.0.0.1:8081/infoscreen/infoscreen.html &
# let the browser start
sleep 10
/usr/bin/xte 'mousemove 10000 10000'
sleep 2
/usr/bin/xdotool key F11
date >> /tmp/date.txt
sleep 40000000

這個想法是啟動一個最小的視窗管理器,然後是 firefox,然後以程式方式將滑鼠移開並按下F11以全屏顯示。

一切正常,除了F11鍵沒有“按下” - 我留下了 Firefox 和它的 chrome。

如果我 ssh 到主機並在根提示符下執行

export DISPLAY=':0'
/usr/bin/xdotool key F11

然後Firefox正確切換到全屏。如果我使用xte. 控製文件/tmp/date.txt有兩個日期行,並且/root/xinitrc-errors.

這種奇怪行為的原因可能是什麼?

xdotool(1)

鑰匙 $$ options $$擊鍵$$ keystroke … $$

選項:

–window 視窗

將擊鍵發送到特定的視窗 ID。您可以在此處使用 WINDOW STACK'' 引用,例如 %1’’ 和 %@''。如果有視窗堆棧,則 %1’’ 是預設值,否則使用目前視窗。

在您的ssh測試中,您已經關注了 Firefox 視窗,因此它收到了按鍵。在劇本中,xte mousemove ...它沒有重點。

您可以xdotool search與其他命令連結。搜尋firefox可能會返回多個視窗。手冊頁使用範例--classname Navigator,它適用於我測試的版本 (47.0.1)。如果做不到這一點,您可以使用xprop查找特定於相關視窗的其他字元串。

xdotool search --classname Navigator windowfocus key F11

引用自:https://unix.stackexchange.com/questions/299481