如何通过 ssh 在 Chromium kiosk 模式下更改 url
Posted
技术标签:
【中文标题】如何通过 ssh 在 Chromium kiosk 模式下更改 url【英文标题】:How to change url on Chromium kiosk mode via ssh 【发布时间】: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。 【参考方案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 的方法
使用远程调试器选项启动 chromium: chromium-browser --kiosk --remote-debugging-port=9222
安装节点
使用此脚本将您要显示的网址作为第一个参数传递
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”
【讨论】:
以上是关于如何通过 ssh 在 Chromium kiosk 模式下更改 url的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Android Management API 在 KIOSK 模式下允许 systemui 活动?
Chromium:在使用 Chromium 在信息亭模式下运行的 RPi 上禁用向左滑动导航?
调用新应用程序时如何保持 Android 在 Kiosk 模式下运行?
如何调试正在运行的 Kiosk 模式 Chrome 应用程序?