Lancer une application Chrome à partir de la ligne de commande

14

Je ne trouve pas comment lancer une application Chrome à partir d'un bash?

J'essaie d'y parvenir avec Postman .

De google-chrome -h, j'ai essayé (malheureusement) ceux-ci:

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

Le résultat est qu'une nouvelle fenêtre vierge est ouverte.

Ma première supposition est que l'application est stockée sur ma machine et je dois ouvrir un fichier spécifique (l'index de l'application) pour la lancer.

Est-il possible d'y parvenir?

Et si c'est possible, comment faire?

chalasr
la source
1
Probablement, si vous ouvrez le .desktopfichier correspondant dans ~/.local/share/applications(faites-le glisser sur une fenêtre gedit ouverte), vous pouvez voir la commande correcte dans la Exec=ligne.
Jacob Vlijm
Parfait, merci @JacobVlijm. La commande utilise le --app-id=[id]Je suppose que cet identifiant est permanent, je vais donc créer un alias, mais connaissez-vous un moyen de le lancer par son nom?
chalasr
@JacobVlijm Pourquoi la question n'est pas en double de Quelle commande dois-je taper pour exécuter Chrome à partir du terminal?
daisy
@daisy parce que ce n'est pas la même question. Il s'agit de savoir comment lancer une application Chrome, pas Chrome lui-même.
chalasr

Réponses:

18

Répondu grâce à @JacobVlijm.

Pour exécuter une application Chrome à partir de la ligne de commande, utilisez ce qui suit:

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

En supposant que le chemin de l' google-chromeest /opt/google/chrome/google-chrome.

Pour récupérer l'ID d'application, recherchez la première occurrence du nom d'application dans /home/[user]/.local/share/applications.

chalasr
la source
1
Parfait, n'a pas eu le temps de poster une réponse, mais voulait quand même aider :)
Jacob Vlijm
Vous pouvez même obtenir l'ID d'application à partir de l'URL du Chrome Store pour l'application particulière. Bien sûr, cela ne fonctionne que si vous avez accès à Internet :)
BarathVutukuri
1
Si vous avez plusieurs profils Chrome, vous devez également ajouter le répertoire des profils à la ligne de commande:google-chrome --profile-directory=Default --app-id=[app-id]
Vidar S. Ramdal
0

Malheureusement, il n'y a aucun moyen d'appeler une application sur la ligne de commande par son nom. Fournir cette fonctionnalité signifierait une analyse supplémentaire non fiable pour les applications installées et certains considéreraient cela comme une faille de sécurité. Cependant, vous pouvez effectuer l'analyse vous-même avec un script qui recherche et extrait le nom de chaque extension / application jusqu'à ce qu'il trouve le nom que vous recherchez:

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

Certaines applications définissent leurs noms plus profondément dans les scripts - je ne sais pas pourquoi! Vous devrez peut-être réécrire ou ajouter à un script comme celui-ci pour rechercher les fichiers ".desktop" dans ~/.local/share/applicationsleur '^ NAME = ...' équivalent à ce qui précède, puis y obtenir la commande d'exécution.

Je n'ai pas testé ce script - je l'ai simplement écrit à la volée pour répondre à votre question. J'espère qu'à titre d'exemple cela fonctionne pour vous, mais si l'idée n'est pas tout à fait juste, nous pourrions la modifier un peu. Zsh est une syntaxe simple et directe par rapport à certains autres shells compatibles sh. J'ai essayé de laisser de côté toutes les fonctionnalités qui nécessitent de nouvelles versions ou modules, à l'exception de PCRE. PCRE est tellement plus facile à utiliser pour la correspondance exacte des motifs dont j'ai souvent besoin que je néglige la Regex régulière la plupart du temps. Un script Perl plus long pourrait fonctionner, la plupart de cette syntaxe fonctionnera non modifiée dans /bin/bash. foreach ... end, les $match[1]tableaux de styles setopt rematchpcre, la systax exacte de Bash Regex et emulatesont les principales exceptions.

Micah W
la source
0
  1. Ouvrez le dossier dans lequel les applications sont stockées dans votre terminal.
  2. Courir chmod +x *.desktop
  3. Revenez au dossier graphique dans lequel résident vos applications
  4. Maintenant, ils devraient avoir des icônes et corriger les noms
  5. Cliquez avec le bouton droit sur l'application que vous souhaitez lancer
  6. Cliquez sur properties
  7. Dans la Commandligne qui est répertoriée à mi-chemin se trouve la commande utilisée pour ouvrir cette application.
Amolith
la source