Simplificado, quero escrever uma função shell que execute um programa em uma nova janela. Para aplicativos como… emacs, firefox, gitk, que podem ter esta aparência:
myopen() {
$@
}
Mas quero abrir aplicativos que são executados no terminal em um novo terminal, por exemplo, para alsamixer, vim, bash, zsh, ele deve se parecer com
myopen() {
urxvt -e "$@"
}
Eu vi que arquivos .desktop contêm as informações se eles devem ser executados em um terminal (para vim / gvim)
[Desktop Entry]
Name=Vim
GenericName=Text Editor
TryExec=vim
Exec=vim %F
Terminal=true
ou
[Desktop Entry]
Name=GVim
GenericName=Text Editor
TryExec=gvim
Exec=gvim -f %F
Terminal=false
existe uma interface existente para consultar o Terminal
arquivado (ou seja, sem usar locate
e grep
para localizar o arquivo .desktop
e analisá-los)?
Portanto, no código quase quero preencher a lacuna
myopen() {
TERMINALFIELD=$(xdg-app-uses-terminal $1) # this line is made up
if [[ TERMINALFIELD == true ]]; then
urxvt -e "$@"
else
$@
fi
return $?
}