Uruchom aplikację Chrome z wiersza polecenia

14

Nie mogę znaleźć sposobu, aby uruchomić aplikację chrome z bash?

Staram się to osiągnąć dzięki Postman .

Od google-chrome -hpróbowałem (niestety) tych:

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

W wyniku tego otwiera się nowe puste okno.

Najpierw sądzę, że aplikacja jest przechowywana na moim komputerze i muszę otworzyć określony plik (indeks aplikacji), aby go uruchomić.

Czy można to osiągnąć?

A jeśli to możliwe, jak to zrobić?

chalasr
źródło
1
Prawdopodobnie jeśli otworzysz odpowiedni .desktopplik w ~/.local/share/applications(przeciągnij go nad otwarte okno gedit), w wierszu zobaczysz poprawne polecenie Exec=.
Jacob Vlijm
Idealnie, dziękuję @JacobVlijm. Polecenie użyj --app-id=[id], zakładam, że ten identyfikator jest stały, więc utworzę alias, ale czy znasz sposób, aby uruchomić go po nazwie?
chalasr
@JacobVlijm Dlaczego pytanie nie jest duplikatem Jakie polecenie należy wpisać, aby uruchomić Chrome z terminala?
stokrotka
@ daisy, ponieważ to nie to samo pytanie. Chodzi o to, jak uruchomić aplikację chrome, a nie sam chrome.
chalasr

Odpowiedzi:

18

Odpowiedzi udzielił @JacobVlijm.

Aby uruchomić aplikację chrome z wiersza polecenia, użyj następujących poleceń:

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

Zakładając, że ścieżka google-chromejest /opt/google/chrome/google-chrome.

Aby pobrać identyfikator aplikacji, wyszukaj pierwsze wystąpienie nazwy aplikacji w /home/[user]/.local/share/applications.

chalasr
źródło
1
Idealnie, nie miałem czasu na opublikowanie odpowiedzi, ale nadal chciałem pomóc :)
Jacob Vlijm
Możesz nawet uzyskać identyfikator aplikacji z adresu URL Chrome Store dla konkretnej aplikacji. Oczywiście działa to tylko wtedy, gdy masz dostęp do Internetu :)
BarathVutukuri
1
Jeśli masz wiele profili Chrome, musisz również dodać katalog profilu do wiersza poleceń:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal
0

Niestety nie, nie ma sposobu, aby wywołać aplikację w wierszu polecenia po nazwie. Zapewnienie tej funkcji oznaczałoby niewiarygodne dodatkowe analizowanie zainstalowanych aplikacji, a niektórzy uważają ją za wadę bezpieczeństwa. Możesz jednak dokonać parsowania samodzielnie za pomocą skryptu, który wyszukuje i wyodrębnia nazwę każdego rozszerzenia / aplikacji, dopóki nie znajdzie szukanej nazwy:

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

Niektóre aplikacje zapisują swoje nazwy głębiej w skryptach - nie wiem dlaczego! Może być konieczne ponowne zapisanie lub dodanie do skryptu takiego jak ten, aby wyszukać pliki „.desktop” w ~/.local/share/applicationsposzukiwaniu ich „^ NAME = ...” równoważnego z powyższym, a następnie uzyskać tam polecenie wykonania.

Nie przetestowałem tego skryptu - właśnie napisałem go w locie, aby odpowiedzieć na twoje pytanie. Mam nadzieję, że jako przykład zadziała dla ciebie, ale jeśli pomysł nie jest całkiem poprawny, moglibyśmy go trochę ulepszyć. Zsh jest prostą, prostą składnią w porównaniu do niektórych innych powłok kompatybilnych z SH. Próbowałem pominąć wszelkie funkcje wymagające nowych wersji lub modułów oprócz PCRE. PCRE jest o wiele łatwiejszy w użyciu do dokładnego dopasowania wzorca, którego często potrzebuję, przez większość czasu zaniedbuję regularne Regex. Dłuższy skrypt Perla może działać, również większość tej składni będzie działała w niezmodyfikowanym formacie /bin/bash. foreach ... end, $match[1]tablice stylów, setopt rematchpcredokładny systax Bash Regex i emulatesą głównymi wyjątkami.

Micheasz W.
źródło
0
  1. Otwórz folder, w którym aplikacje są przechowywane w twoim terminalu.
  2. Biegać chmod +x *.desktop
  3. Wróć do graficznego folderu, w którym znajdują się Twoje aplikacje
  4. Teraz powinny mieć ikony i poprawiać nazwy
  5. Kliknij prawym przyciskiem myszy aplikację, którą chcesz uruchomić
  6. Kliknij properties
  7. W Commandwierszu, który jest wymieniony mniej więcej w połowie, znajduje się polecenie użyte do otwarcia tej aplikacji.
Amolith
źródło