명령이 터미널에서 실행되는지(데스크톱 파일에서?) 결정합니다(스크립트에서).

명령이 터미널에서 실행되는지(데스크톱 파일에서?) 결정합니다(스크립트에서).

단순화하기 위해 새 창에서 프로그램을 실행하는 쉘 함수를 작성하고 싶습니다. 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에 있는 응용 프로그램 데스크탑 파일 이름과 일치해야 합니다.

관련 정보