【问题标题】:How to change url on Chromium kiosk mode via ssh如何通过 ssh 在 Chromium kiosk 模式下更改 url
【发布时间】:2015-09-29 03:52:09
【问题描述】:

我有一个在 Kiosk 模式下运行的 Chromium。 我想通过 SSH 更改页面的 URL

如果不是 Kiosk 模式,我会使用 xdotool:

export DISPLAY=":0"
WID=$(xdotool search --onlyvisible --class chromium|head -1)
xdotool windowactivate ${WID}
xdotool key ctrl+l
xdotool type 'www.example.org'
xdotool key Return

但这不起作用。可能是因为它处于信息亭模式。

除此之外,我的 xdotools 工作正常

export DISPLAY=":0"
WID=$(xdotool search --onlyvisible --class chromium|head -1)
xdotool windowactivate ${WID}
xdotool key ctrl+F5

刷新我的页面

也许 xdotool 不适合这种情况?

【问题讨论】:

  • 您是否尝试发出命令“chromium-browser $URL”?通常,窗口会附加到现有窗口(在新选项卡中)并打开指定的 URL。

标签: ssh debian chromium kiosk xdotool


【解决方案1】:

离开自助服务终端模式

 !#/bin/sh
    export DISPLAY=":0"
    WID=$(xdotool search --onlyvisible --class chromium|head -1)
    xdotool windowactivate ${WID}
    xdotool key F11
    xdotool key ctrl+l
    xdotool type 'www.google.com'
    xdotool key Return 
    xdotool key F11

【讨论】:

    【解决方案2】:

    您可以在 ssh 会话中尝试 xdotool getmouselocation,通过 VNC 查看器试验位置。输出如下: x:543 y:21 screen:0 window:20975913

    然后自动点击鼠标,例如 xdotool mousemove 543 21 xdotool click 1 xdotool mousemove 543 136 xdotool click 1

    【讨论】:

      【解决方案3】:

      在 Kiosk 模式下不起作用的原因是该模式下没有地址栏。

      所以 xdotool 正在工作,但是当您按 Ctrl+L 时没有打开任何内容,因此无法输入地址并因此加载。

      我目前也在寻找一种在 Kiosk 模式下更改 url 而无需重新启动 PI 的方法

      希望对你有帮助

      【讨论】:

      • 这很有意义!目前我正在通过一个带有 javascript 元刷新 iframe 的 html 文件绕过它。如果有兴趣,我可以分享此代码。
      • 请问我有兴趣吗
      【解决方案4】:

      我找到了一种使用 node.js 的方法

      1. 使用远程调试器选项启动 chromium: chromium-browser --kiosk --remote-debugging-port=9222

      2. 安装节点

      3. 使用此脚本将您要显示的网址作为第一个参数传递

      const WebSocket = require("ws");
      const { createLogger, format, transports } = require('winston');
      const { combine, timestamp, label, printf } = format;
      
      const myFormat = printf(({ level, message, label, timestamp }) => {
          return `${timestamp} [${label}] ${level}: ${message}`;
      });
      
      const logger = createLogger({
          level: 'info',
          format: combine(
              label({ label: 'right meow!' }),
              timestamp(),
              myFormat
          ),
          defaultMeta: { service: 'user-service' },
          transports: [
              new transports.Console(),
              new transports.File({ filename: 'changUrl.log', level: 'error' }),
              new transports.File({ filename: 'changUrlCombined.log' }),
          ],
      });
      
      const axios = require('axios')
      
      var args = process.argv.slice(2);
      console.log("args:" + args)
      axios.get('http://127.0.0.1:9222/json')
          .then(resp => {
              const data = resp.data;
              if (data.length > 0) {
                  const firstTab = data[0];
                  const wsUrl = firstTab.webSocketDebuggerUrl;
                  if (wsUrl) {
                      //open websocket
                      const wsChrome = new WebSocket(wsUrl);
      
                      wsChrome.on('open', function open() {
                          const dataChangeUrl= {
                              id: 2,
                              method: "Page.navigate",
                              params: {
                                  url: args[0] || "http://yahoo.com"
                              }
                          }
      
                          wsChrome.send(JSON.stringify(dataChangeUrl))
                          //You can use promise-ws to exit the program
                          //.then(() => process.exit())
                      });
                  }
              }
              else {
                  logger.error("No tabs open")
                  console.log(resp.data);
              }
          })
          .catch(err => {
              // Handle Error Here
              logger.error(err);
          });

      然后你可以运行“sudo node ./changeurl.js https://facebook.com”

      【讨论】:

        猜你喜欢
        • 2017-02-28
        • 2019-11-14
        • 2013-01-19
        • 2019-08-30
        • 2021-06-02
        • 1970-01-01
        • 2013-05-16
        • 2015-05-30
        • 1970-01-01
        相关资源
        最近更新 更多