我在 Ubuntu Linux 上运行 Chromium(开源 chrome 版本)。我可以编写一个程序来查看我打开了哪些选项卡吗?我想编写一个程序来监控我在事情上花费了多少时间。是否有命令行程序、调用 chromium-browser 命令的某种方式,或一些 dbus 咒语,可以告诉我我打开了哪些选项卡以及每个选项卡所在的 URL?
5 回答
Linux 上的 Chrome - 查询浏览器以查看打开了哪些选项卡?
对于chromium
:
strings ~/'.config/chromium/Default/Current Session' | 'grep' -E '^https?://'
确实有一个命令行选项可以打开运行 chrome (chromium) 进程的大门--remote-shell-port
。通过这个“调试后门”,您可能可以获得打开的选项卡列表。
- 查看chromedevtools以获得更多灵感。
更新:
Chrome DevTools自版本 >17.0.950 起已弃用且不再受支持。*如果新的 Debug-Framework 提供类似的方式来完成任务, 请参阅WebKit-Protocol手册。
这是一个更通用的解决方案(也适用于其他应用程序),方法是使用xdotool查询焦点下的 X 窗口
while true; do
xdotool getwindowfocus getwindowname;
sleep 10;
done
例如,这会输出以下内容:
Tilix: Defaultpeter-ThinkPad-T5801: peter@peter-ThinkPad-T580: ~
Chrome on Linux - query the browser to see what tabs are open? - Stack Overflow - Google Chrome
Local KVM
untitled — Atom
untitled — Atom
Open File
iostat_xtmz_3.out — ~/Work/KappAhl/Test1 — Atom
Tilix: Defaultpeter-ThinkPad-T5801: peter@peter-ThinkPad-T580: ~*
为此,我编写了一个工具来从 chrome 会话文件中提取数据。https://github.com/lemnos/chrome-session-dump。像这样运行它 chrome-session-dump 将生成一个选项卡列表(按顺序),随后可以将其传递给 firefox。EG chrome-session-dump|xargs 火狐。您还可以通过 -active 获取当前打开的选项卡,以供外部脚本处理。
对上述 unix 命令的扩展(我没有足够的声誉来评论)。我试图只计算标签的数量。这仍然不完美,因为我认为该文件包含所有选项卡的全部历史记录。我猜它们是有序的,但不清楚如何将它们分开。
strings ~/Library/Application\ Support/Google/Chrome/Default/Sessions/Tabs_* | sed -nE 's/^([^:]+):\/\/(.*)\/$/\2/p' | grep -v "newtab" | grep -v "new-tab-page" | sort | uniq | wc -l
这是在 mac 上,因此您的路径和 sed 选项可能会有所不同。
基本思想是去掉尾部斜杠(很多重定向只是添加一个斜杠)和新标签,这样我们就可以得到准确的计数。对于我当前的选项卡文件,这从 181 个打开的选项卡减少到 35 个。这实际上看起来像现在的计数不足,但它更接近。