从命令行启动Chrome应用


14

我找不到如何从bash启动chrome应用程序?

我正在尝试通过Postman实现这一目标。

google-chrome -h,我尝试了(不幸的是)那些:

$ google-chrome --app="Postman"
$ google-chrome --extension="postman"

结果是打开了一个新的空白窗口。

我的第一个猜测是应用程序存储在我的计算机上,我需要打开一个特定的文件(应用程序索引)以启动它。

有可能实现这一目标吗?

如果可能,该怎么办?


1
如果您在中打开相应的.desktop文件~/.local/share/applications(在打开的gedit窗口中将其拖动),则可能会在该Exec=行中看到正确的命令。
Jacob Vlijm '16

完美,谢谢@JacobVlijm。该命令使用--app-id=[id]I假设此ID是永久性的,因此我将创建一个别名,但是您知道一种通过其名称启动它的方法吗?
chalasr

@JacobVlijm为什么问题不是重复出现的,我应该键入什么命令才能从终端运行Chrome?
雏菊

@daisy,因为这不是同一个问题。这是关于如何启动chrome应用程序而不是chrome本身的方法。
chalasr

Answers:


18

感谢@JacobVlijm。

要从命令行运行Chrome应用,请使用以下命令:

google-chrome --app-id=[app_id]

假设的路径google-chrome/opt/google/chrome/google-chrome

要检索应用程序ID,请在中搜索应用程序名称的第一个匹配项/home/[user]/.local/share/applications


1
太好了,没有时间发布答案,但仍然想帮忙:)
Jacob Vlijm '16

您甚至可以从Chrome商店URL中获取特定应用程序的应用程序ID。当然,仅当您可以访问互联网时,此方法才有效:)
BarathVutukuri

1
如果您有多个Chrome配置文件,则也需要将配置文件目录添加到命令行:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal

0

不幸的是,没有提供通过命令行的名称来调用应用程序的方法。提供此功能将意味着对已安装的应用程序进行不可靠的额外解析,并且有些人会认为这是安全缺陷。但是,您可以使用脚本来自行解析,该脚本会搜索并提取每个扩展/应用程序的名称,直到找到您要搜索的名称:

/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."

有些应用程序在脚本中设置了更深的名称-我不知道为什么!您可能需要重新编写或添加到这样的脚本中,才能在“ .desktop”文件中搜索~/.local/share/applications与上面相同的“ ^ NAME = ...”,然后在此处获取执行命令。

我尚未测试此脚本-我只是即时编写了该脚本来回答您的问题。我希望以此为例对您有用,但是如果您的想法不太正确,我们可以对其进行一些调整。与其他一些sh兼容的shell相比,Zsh是简单的,海峡转发的语法。我已尝试忽略除PCRE之外需要新版本或模块的所有功能。PCRE非常容易用于精确的模式匹配,因此我经常需要忽略大多数正则表达式。更长的Perl脚本可以工作,大多数语法也可以在中不修改地运行/bin/bashforeach ... end$match[1]样式数组setopt rematchpcreBash Regex的确切systax emulate是主要例外。


0
  1. 打开终端中存储应用程序的文件夹。
  2. chmod +x *.desktop
  3. 返回您的应用程序所在的图形文件夹
  4. 现在他们应该有图标并且他们正确的名字
  5. 右键单击要启动的应用程序
  6. 请点击 properties
  7. Command列出的大约一半的行中,是用于打开该应用程序的命令。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.