Avvia un'app di Chrome dalla riga di comando


13

Non riesco a trovare come avviare un'app di Chrome da un bash?

Sto cercando di raggiungere questo obiettivo con Postman .

Da google-chrome -h, ho provato (purtroppo) quelli:

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

Il risultato è che si apre una nuova finestra vuota.

La mia prima ipotesi è che l'app sia memorizzata sul mio computer e ho bisogno di aprire un file specifico (l'indice dell'app) per avviarlo.

È possibile raggiungere questo obiettivo?

E se è possibile, come fare?


1
Probabilmente se apri il .desktopfile corrispondente ~/.local/share/applications(trascinalo su una finestra gedit aperta) puoi vedere il comando corretto nella Exec=riga.
Jacob Vlijm,

Perfetto, grazie @JacobVlijm. Il comando usa --app-id=[id]Assumo che questo id sia permanente, quindi creerò un alias, ma conosci un modo per avviarlo con il suo nome?
Chalasr,

@JacobVlijm Perché la domanda non è duplicata di quale comando devo digitare per eseguire Chrome dal terminale?
Daisy,

@daisy perché non è la stessa domanda. Si tratta di come avviare un'applicazione Chrome, non Chrome stessa.
Chalasr,

Risposte:


17

Risposto grazie a @JacobVlijm.

Per eseguire un'app Chrome dalla riga di comando, utilizzare quanto segue:

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

Supponendo che il percorso di google-chromeè /opt/google/chrome/google-chrome.

Per recuperare l'ID app, cerca la prima occorrenza del nome dell'applicazione in /home/[user]/.local/share/applications.


1
Perfetto, non ho avuto il tempo di pubblicare una risposta, ma volevo ancora dare una mano :)
Jacob Vlijm

Puoi persino ottenere l'ID app dall'URL del Chrome Store per la particolare applicazione. Naturalmente questo funziona solo se si ha accesso a Internet :)
BarathVutukuri il

1
Se hai più profili Chrome, devi aggiungere anche la directory del profilo alla riga di comando:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal

0

Sfortunatamente, non esiste un modo per chiamare un'app dalla riga di comando con il nome. Fornire questa funzione significherebbe un ulteriore analisi inaffidabile per le app installate e alcuni lo considererebbero un difetto di sicurezza. Puoi eseguire l'analisi da solo, tuttavia, con uno script che cerca ed estrae il nome di ogni estensione / app fino a quando non trova il nome che cerchi:

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

Alcune app impostano i loro nomi più in profondità negli script: non so perché! Potrebbe essere necessario riscrivere o aggiungere uno script come questo per cercare i file ".desktop" ~/.local/share/applicationsper il loro "^ NAME = ..." equivalente a quello sopra, e quindi ottenere il comando di esecuzione lì.

Non ho testato questo script - l'ho appena scritto al volo per rispondere alla tua domanda. Spero che come esempio funzioni per te, ma se l'idea non è del tutto giusta, potremmo modificarla un po '. Zsh è una sintassi semplice e diretta rispetto ad altre shell compatibili con sh. Ho cercato di tralasciare tutte le funzionalità che richiedono nuove versioni o moduli ad eccezione di PCRE. PCRE è molto più facile da usare per l'esatta corrispondenza dei motivi, spesso ho bisogno di trascurare Regex per la maggior parte del tempo. Uno script Perl più lungo potrebbe funzionare, anche la maggior parte di questa sintassi verrà eseguita non modificata /bin/bash. foreach ... end, $match[1]array di stile setopt rematchpcre, l'esatto systax di Bash Regex e emulatesono le principali eccezioni.


0
  1. Apri la cartella in cui sono archiviate le app nel tuo terminale.
  2. Correre chmod +x *.desktop
  3. Torna alla cartella grafica in cui risiedono le tue app
  4. Ora dovrebbero avere icone e correggere i nomi
  5. Fare clic con il tasto destro del mouse sull'app che si desidera avviare
  6. Clic properties
  7. Nella Commandriga che è elencata a metà circa è il comando usato per aprire quell'app.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.