단순화하기 위해 새 창에서 프로그램을 실행하는 쉘 함수를 작성하고 싶습니다. emacs, firefox, gitk와 같은 애플리케이션의 경우 다음과 같이 수행할 수 있습니다.
myopen() {
$@
}
하지만 터미널에서 실행 중인 애플리케이션을 새 터미널에서 열고 싶습니다. 예를 들어 alsamixer, vim, bash, zsh의 경우 다음과 같아야 합니다.
myopen() {
urxvt -e "$@"
}
.desktop 파일에 터미널(vim/gvim의 경우)에서 실행해야 하는지에 대한 정보가 포함되어 있는 것을 보았습니다.
[Desktop Entry]
Name=Vim
GenericName=Text Editor
TryExec=vim
Exec=vim %F
Terminal=true
또는
[Desktop Entry]
Name=GVim
GenericName=Text Editor
TryExec=gvim
Exec=gvim -f %F
Terminal=false
파일을 쿼리하기 위한 기존 인터페이스가 있습니까 Terminal
(즉, 파일을 사용 locate
하고 grep
찾고 .desktop
구문 분석하지 않음)?
따라서 준코드에서 다음과 같은 공백을 메우고 싶습니다.
myopen() {
TERMINALFIELD=$(xdg-app-uses-terminal $1) # this line is made up
if [[ TERMINALFIELD == true ]]; then
urxvt -e "$@"
else
$@
fi
return $?
}
답변1
gtk-launch
원하는대로 될 것 같습니다 . .desktop
파일의 정보를 사용하여 응용 프로그램을 시작합니다 . 매뉴얼 페이지의 관련 정보는 다음과 같습니다.
GTK-시작시작할 애플리케이션의 이름인 인수가 하나 이상 필요합니다. 이름은 ".desktop" 접미사가 있거나 없이 /usr/share/application에 있는 응용 프로그램 데스크탑 파일 이름과 일치해야 합니다.