Starten Sie eine Chrome-App über die Befehlszeile

13

Ich kann nicht finden, wie ich eine Chrome-App aus einer Bash heraus starten kann.

Ich versuche das mit Postman zu erreichen .

Von denen habe google-chrome -hich (leider) versucht:

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

Das Ergebnis ist, dass ein neues leeres Fenster geöffnet wird.

Meine erste Vermutung ist, dass die App auf meinem Computer gespeichert ist und ich eine bestimmte Datei (den App-Index) öffnen muss, um sie zu starten.

Ist es möglich, dies zu erreichen?

Und wenn es möglich ist, wie geht das?

chalasr
quelle
1
Wenn Sie die entsprechende .desktopDatei in öffnen ~/.local/share/applications(ziehen Sie sie über ein geöffnetes gedit-Fenster), sehen Sie wahrscheinlich den richtigen Befehl in der Exec=Zeile.
Jacob Vlijm
Perfekt, danke @JacobVlijm. Verwenden Sie den Befehl --app-id=[id]Ich nehme an, diese ID ist permanent, also erstelle ich einen Alias, aber kennen Sie eine Möglichkeit, ihn unter seinem Namen zu starten?
Chalasr
@JacobVlijm Warum ist die Frage nicht doppelt vorhanden ? Welchen Befehl soll ich
Daisy
@daisy da ist das nicht die selbe frage. Hier erfahren Sie, wie Sie eine Chrome-Anwendung starten und nicht Chrome selbst.
Chalasr

Antworten:

17

Beantwortet danke an @JacobVlijm.

Verwenden Sie Folgendes, um eine Chrome-App über die Befehlszeile auszuführen:

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

Angenommen, der Weg von google-chromeist /opt/google/chrome/google-chrome.

Um die App-ID abzurufen, suchen Sie nach dem ersten Vorkommen des Anwendungsnamens in /home/[user]/.local/share/applications.

chalasr
quelle
1
Perfekt, hatte keine Zeit, um eine Antwort zu
schreiben
Sie können die App-ID sogar aus der Chrome Store-URL für die jeweilige Anwendung abrufen. Natürlich funktioniert dies nur, wenn Sie Zugang zum Internet haben :)
BarathVutukuri
1
Wenn Sie über mehrere Chrome-Profile verfügen, müssen Sie das Profilverzeichnis auch zur Befehlszeile hinzufügen:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal,
0

Leider gibt es keine Möglichkeit, eine App über die Befehlszeile mit ihrem Namen aufzurufen. Die Bereitstellung dieser Funktion würde ein unzuverlässiges Extra-Parsen für installierte Apps bedeuten, und einige würden dies als Sicherheitslücke betrachten. Sie können das Parsen jedoch selbst mit einem Skript durchführen, das den Namen jeder Erweiterung / App sucht und extrahiert, bis der gesuchte Name gefunden wird:

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

Einige Apps setzen ihre Namen tiefer in die Skripte - ich weiß nicht warum! Möglicherweise müssen Sie ein Skript wie dieses neu schreiben oder ergänzen, um ".desktop" -Dateien ~/.local/share/applicationsnach dem entsprechenden "^ NAME = ..." zu durchsuchen und den Ausführungsbefehl dort abzurufen.

Ich habe dieses Skript noch nicht getestet - ich habe es nur spontan geschrieben, um Ihre Frage zu beantworten. Ich hoffe, dass es als Beispiel für Sie funktioniert, aber wenn die Idee nicht ganz richtig ist, könnten wir es ein bisschen optimieren. Zsh ist eine einfache, geradlinige Syntax im Vergleich zu einigen anderen Shells, die mit Sh kompatibel sind. Ich habe versucht, alle Funktionen, die neue Versionen oder Module erfordern, mit Ausnahme von PCRE, wegzulassen. PCRE ist so viel einfacher für den genauen Mustervergleich, den ich oft benötige, dass ich regelmäßig Regex die meiste Zeit vernachlässige. Ein längeres Perl-Skript könnte funktionieren, auch der größte Teil dieser Syntax wird unverändert ausgeführt /bin/bash. foreach ... end, $match[1]style Arrays, setopt rematchpcredie exakte Systax von Bash Regex und emulatesind die Hauptausnahmen.

Micah W
quelle
0
  1. Öffnen Sie den Ordner, in dem die Apps auf Ihrem Terminal gespeichert sind.
  2. Lauf chmod +x *.desktop
  3. Gehen Sie zurück zu dem Grafikordner, in dem sich Ihre Apps befinden
  4. Jetzt sollten sie Symbole haben und Namen korrigieren
  5. Klicken Sie mit der rechten Maustaste auf die App, die Sie starten möchten
  6. Klicken properties
  7. In der CommandZeile, die ungefähr auf halber Strecke angezeigt wird, befindet sich der Befehl zum Öffnen dieser App.
Amolith
quelle