Запустите приложение Chrome из командной строки

14

Я не могу найти, как запустить приложение Chrome из Bash?

Я пытаюсь добиться этого с Почтальоном .

От google-chrome -h, я попробовал (к сожалению) те:

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

В результате открывается новое пустое окно.

Мое первое предположение - приложение хранится на моем компьютере, и мне нужно открыть определенный файл (индекс приложения), чтобы запустить его.

Можно ли этого добиться?

И если это возможно, как это сделать?

chalasr
источник
1
Вероятно, если вы откроете соответствующий .desktopфайл в ~/.local/share/applications(перетащите его поверх открытого окна Gedit), вы увидите правильную команду в Exec=строке.
Джейкоб Влейм
Отлично, спасибо @JacobVlijm. Используйте команду « --app-id=[id]Я предполагаю, что этот идентификатор является постоянным, поэтому я создам псевдоним, но знаете ли вы способ запустить его по его имени?
chalasr
@JacobVlijm Почему вопрос не является дубликатом того, какую команду я должен набрать, чтобы запустить Chrome из терминала?
маргаритка
@daisy, потому что это не тот же вопрос. Это о том, как запустить приложение Chrome, а не сам Chrome.
chalasr

Ответы:

18

Ответил благодаря @JacobVlijm.

Чтобы запустить приложение Chrome из командной строки, используйте следующее:

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

Предполагая, что путь google-chromeесть /opt/google/chrome/google-chrome.

Чтобы получить идентификатор приложения, найдите первое вхождение имени приложения в /home/[user]/.local/share/applications.

chalasr
источник
1
Отлично, не успел опубликовать ответ, но все равно хотел помочь :)
Джейкоб Влийм
Вы даже можете получить идентификатор приложения из URL-адреса магазина Chrome для конкретного приложения. Конечно, это работает, только если у вас есть доступ к Интернету :)
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 = ...», эквивалентные приведенным выше, а затем получить там команду выполнения.

Я не тестировал этот скрипт - я просто написал его на лету, чтобы ответить на ваш вопрос. Я надеюсь, что в качестве примера это сработает для вас, но если идея не совсем верна, мы могли бы немного ее подправить. Zsh - простой прямой синтаксис по сравнению с некоторыми другими sh-совместимыми оболочками. Я попытался исключить любые функции, которые требуют новых версий или модулей, кроме PCRE. PCRE настолько проще в использовании для точного сопоставления с образцом, что мне часто нужно, что я чаще всего пренебрегаю регулярными регулярными выражениями. Более длинный Perl-скрипт может работать, также большая часть этого синтаксиса будет работать без изменений /bin/bash. foreach ... end, $match[1]массивы стилей, setopt rematchpcreточный системный синтаксис Bash Regex и emulateосновные исключения.

Мика W
источник
0
  1. Откройте папку, в которой приложения хранятся в вашем терминале.
  2. Бегать chmod +x *.desktop
  3. Вернитесь в графическую папку, в которой находятся ваши приложения
  4. Теперь у них должны быть значки и они исправляют имена
  5. Щелкните правой кнопкой мыши приложение, которое хотите запустить.
  6. щелчок properties
  7. В Commandстроке, которая указана примерно на полпути вниз, находится команда, используемая для открытия этого приложения.
Amolith
источник