Запустіть додаток Chrome із командного рядка


14

Я не можу знайти, як запустити хромову програму з bash?

Я намагаюся цього досягти разом із Поштальєном .

Від google-chrome -h, я намагався (на жаль) ті з них:

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

В результаті відкривається нове порожнє вікно.

Моя перша здогадка - додаток зберігається на моїй машині, і мені потрібно відкрити певний файл (індекс програми), щоб запустити його.

Чи можна цього досягти?

І якщо це можливо, як це зробити?


1
Можливо, якщо ви відкриєте відповідний .desktopфайл у ~/.local/share/applications(перетягніть його через відкрите вікно gedit), ви побачите правильну команду в Exec=рядку.
Яків Влійм

Чудово, дякую @JacobVlijm. Команда використовує --app-id=[id]припускаю, що цей ідентифікатор є постійним, тому я створу псевдонім, але чи знаєте ви спосіб запустити його під своїм ім'ям?
chalasr


@daisy, тому що це не те саме питання. Йдеться про те, як запустити хром-додаток, а не сам хром.
chalasr

Відповіді:


18

Відповіли завдяки @JacobVlijm.

Щоб запустити хромований додаток із командного рядка, використовуйте наступне:

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

Припустимо, що шлях google-chromeє /opt/google/chrome/google-chrome.

Щоб отримати ідентифікатор програми, виконайте пошук у першій зустрічі назви програми в /home/[user]/.local/share/applications.


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 - простий синтаксис прямого переходу в порівнянні з деякими іншими ш-сумісними оболонками. Я намагався залишити будь-які функції, для яких потрібні нові версії або модулі, крім PCRE. PCRE настільки простіше використовувати для точного узгодження шаблону, який мені часто потрібен, що я нехтую регулярним Regex більшу частину часу. Більш тривалий сценарій Perl може працювати, також більшість цього синтаксису буде працювати без змін /bin/bash. foreach ... end, $match[1]масиви стилів setopt rematchpcre,, точна система Bash Regex, і emulateє основними винятками.


0
  1. Відкрийте папку, в якій зберігаються програми у вашому терміналі.
  2. Біжи chmod +x *.desktop
  3. Поверніться до графічної папки, в якій перебувають ваші програми
  4. Тепер вони повинні мати піктограми і вони виправляють імена
  5. Клацніть правою кнопкою миші додаток, який потрібно запустити
  6. Клацніть properties
  7. У Commandрядку, який перерахований приблизно на півдорозі, є команда, що використовується для відкриття програми.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.