我找不到如何从 bash 启动 chrome 应用程序?
我正在尝试实现这一点邮差。
从google-chrome -h
,我(不幸)尝试了那些:
$ google-chrome --app="Postman"
$ google-chrome --extension="postman"
结果是打开了一个新的空白窗口。
我的第一个猜测是该应用程序存储在我的计算机上,我需要打开一个特定的文件(应用程序索引)来启动它。
有可能实现这个吗?
如果可能的话,该怎么做?
答案1
感谢@JacobVlijm 的回答。
要从命令行运行 chrome 应用程序,请使用以下命令:
google-chrome --app-id=[app_id]
假设的路径google-chrome
是/opt/google/chrome/google-chrome
。
要检索应用程序 ID,请在 中搜索第一次出现的应用程序名称/home/$USER/.local/share/applications
。
答案2
在我执行完以下命令后,它对我有用,并且打开了 postman
google-chrome --app-id=fhbjgbiflinjbdggehcddcbncdddomop
假设默认配置
图案:google-chrome --app-id=<extensionID>
获取扩展 ID:
chrome://extensions/
在 Chrome 浏览器中打开- 点击 Postman 扩展的“详细信息”按钮
- 在地址栏上查看地址,其中 url 的格式为
chrome://extensions/?id=<extensionID>
从 url 复制扩展名 ID 并在命令中使用它
你也可以使用任何谷歌浏览器扩展程序
答案3
不幸的是,没有提供在命令行中通过名称调用应用程序的方法。提供此功能意味着对已安装的应用程序进行不可靠的额外解析,有些人会认为这是一个安全漏洞。但是,您可以使用脚本自己进行解析,该脚本会搜索并提取每个扩展/应用程序的名称,直到找到您要搜索的名称:
/usr/local/bin/chrome-app-by-name:
#!/bin/zsh
emulate -R zsh -o extendedglob -o nullglob
setopt rematchpcre ;# recommended, I'm so used to PCRE, I sometimes forget what doesn't work in Regex
Chrome_Profile=Default ;# or "Profile 1" ...
cd ${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/${Chrome_Profile}/Extensions
foreach app in */*
# We have just called the path to each version of each extension/app.
# Next we enclose in braces - slightly unnecessary - to ensure that
# whatever version of Zsh, "manifest.json" is completely read and
# closed before we use the variable.
{
App_Manifest="$(cat <$app/manifest.json)"
}
if [[ $App_Manifest =~ '^\s*"name"\s*:\s*"([a-zA-Z 0-9_.-]+)"' ]]
then
app_name="$match[1]" ;# capture the sub-expression match for "name"
if [[ $app_name == $1 ]]
then
# For my system this is actually exec google-chrome-stable ...
exec google-chrome --app-id="${app%%/*}" $argv[2,-1]
fi
fi
end
echo "App name not found. Please use Exact, case-sensitive spelling."
有些应用程序将其名称设置在脚本的更深层 - 我不知道为什么!您可能必须重写或添加类似这样的脚本,~/.local/share/applications
以在“.desktop”文件中搜索与上述相同的“^NAME=...”,然后在那里获取执行命令。
我没有测试过这个脚本 - 我只是临时写了它来回答你的问题。我希望作为一个例子它对你有用,但如果这个想法不太正确,我们可以稍微调整一下。与其他一些与 sh 兼容的 shell 相比,Zsh 的语法简单、直接。我试图省略任何需要新版本或模块的功能,除了 PCRE。PCRE 对于我经常需要的精确模式匹配来说更容易使用,以至于我大多数时候都忽略了常规正则表达式。更长的 Perl 脚本可以工作,而且这种语法的大部分将在/bin/bash
. foreach ... end
、$match[1]
样式数组、setopt rematchpcre
Bash Regex 的精确系统和 中不加修改地运行,这emulate
是主要的例外。
答案4
在 BASH 术语中使用它来启动你的 gmail 等:
google-chrome --app=https://mail.google.com/mail/u/0/#inbox
我的邮件监视程序设置中也有这个!