Infelizmente, não há como fornecer um aplicativo na linha de comando pelo nome. O fornecimento desse recurso significaria uma análise extra não confiável para aplicativos instalados e alguns o considerariam uma falha de segurança. No entanto, você pode fazer a análise com um script que pesquisa e extrai o nome de cada extensão / aplicativo até encontrar o nome que você procura:
/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."
Alguns aplicativos definem seus nomes mais profundamente nos scripts - não sei por que! Você pode precisar reescrever ou adicionar a um script como este para procurar nos arquivos ".desktop" os nomes ~/.local/share/applications
'^ NAME = ...' equivalentes aos anteriores e, em seguida, obter o comando de execução.
Não testei esse script - acabei de escrevê-lo rapidamente para responder à sua pergunta. Espero que, como exemplo, funcione para você, mas se a idéia não estiver certa, poderíamos ajustá-la um pouco. O Zsh é uma sintaxe simples e direta, em comparação com outros shells compatíveis com sh. Tentei deixar de fora quaisquer recursos que exijam novas versões ou módulos, exceto o PCRE. O PCRE é muito mais fácil de usar para a correspondência exata de padrões que muitas vezes preciso que negligencie Regex regular na maioria das vezes. Um script Perl mais longo pode funcionar, e a maior parte dessa sintaxe será executada sem modificação /bin/bash
. foreach ... end
, $match[1]
matrizes de estilo setopt rematchpcre
,, a sintaxe exata do Bash Regex e emulate
são as principais exceções.
.desktop
arquivo correspondente~/.local/share/applications
(arraste-o sobre uma janela aberta do gedit), poderá ver o comando correto naExec=
linha.