Command-Line
確定(在腳本中)命令是否在終端中執行(來自桌面文件?)
簡化下來,我想編寫一個在新視窗中執行程序的 shell 函式。對於像 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 $? }
看起來
gtk-launch
會做你想做的事。它將使用.desktop
文件中的資訊啟動應用程序。以下是手冊頁中的一些相關資訊:gtk-launch至少需要一個參數,即要啟動的應用程序的名稱。該名稱應與位於 /usr/share/application 中的應用程序桌面文件名匹配,帶或不帶“.desktop”後綴。