Uruchom aplikację Chrome z wiersza poleceń

10

Nie mogę znaleźć sposobu uruchomienia aplikacji chrome z bash?

Próbuję to osiągnąć za pomocą Listonosza .

Z google-chrome -h próbowałem (niestety) tych:

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

W rezultacie otwiera się nowe puste okno.

Moim pierwszym przypuszczeniem jest to, że aplikacja jest przechowywana na moim komputerze i muszę otworzyć konkretny plik (indeks aplikacji), aby go uruchomić.

Czy można to osiągnąć?

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

    
zadawane chalasr 03.03.2016, 14:01
źródło

3 odpowiedzi

10

Odpowiedzi udzielono dzięki @JacobVlijm.

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

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

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

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

    
odpowiedział chalasr 03.03.2016, 17:47
źródło
0

Niestety, nie ma żadnego sposobu, aby zadzwonić do aplikacji w wierszu poleceń według jej nazwy. Zapewnienie tej funkcji oznaczałoby niewiarygodne dodatkowe analizowanie zainstalowanych aplikacji, a niektóre uznałyby to za wadę bezpieczeństwa. Sam możesz jednak parsować 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 ==  ]]
      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 umieszczają swoje nazwy głębiej w skryptach - nie wiem dlaczego! Być może będziesz musiał ponownie napisać lub dodać do skryptu takiego jak ten, aby przeszukać pliki ".desktop" w ~/.local/share/applications dla ich "^ NAME = ..." równoważnego powyższemu, a następnie pobrać tam polecenie wykonania.

Nie testowałem tego skryptu - napisałem go na bieżąco, by odpowiedzieć na twoje pytanie. Mam nadzieję, że na przykład to działa dla ciebie, ale jeśli pomysł nie jest całkiem odpowiedni, możemy go nieco poprawić. Zsh jest prostą, nieskomplikowaną składnią w porównaniu z niektórymi innymi powłokami kompatybilnymi z sh. Próbowałem pominąć wszelkie funkcje, które wymagają nowych wersji lub modułów, z wyjątkiem PCRE. PCRE jest o wiele łatwiejszy w użyciu do dokładnego dopasowywania wzorca, którego często potrzebuję, aby zaniedbywać regularne Regex przez większość czasu. Dłuższy skrypt Perla może działać, również większość tej składni będzie działać niezmodyfikowana w /bin/bash . foreach ... end , $match[1] tablic stylów, setopt rematchpcre , dokładny systax Bash Regex i emulate są głównymi wyjątkami.

    
odpowiedział Micah W 04.06.2016, 17:10
źródło
0
  1. Otwórz folder, w którym aplikacje są przechowywane w twoim terminalu.
  2. Uruchom chmod +x *.desktop
  3. Wróć do folderu graficznego, 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 wierszu Command , który jest wymieniony w połowie długości, znajduje się polecenie użyte do otwarcia tej aplikacji.
odpowiedział Amolith 17.07.2017, 20:29
źródło

Przeczytaj inne pytania na temat tagów