
簡単にするために、新しいウィンドウでプログラムを実行するシェル関数を作成したいと思います。 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-スタート起動するアプリケーションの名前である引数が1つ以上必要です。名前は、「.desktop」サフィックスが含まれていないか、/usr/share/applicationにあるアプリケーションデスクトップファイル名と一致する必要があります。