現在のデスクトップ環境で使用されているターミナルエミュレータ(xterm
、gnome-terminal
...)をどのように検出しますか? xdg-open
と同様ですが、ターミナルエミュレータ用です。
Xubuntuのインストールでxdg-terminal
スクリプトを試しましたが、運がありませんでした。
./xdg-terminal.sh: 305: [: x: unexpected operator
./xdg-terminal.sh: 399: [: xxterm: unexpected operator
xdg-terminal: configured terminal program 'xterm' not found or not executable
これはC++プログラムで使用するためのものであるため、任意のスクリプト、パッケージ、または組み込みコマンドで使用できます。
助けてくれてありがとう !
ディストリビューション全体でデフォルトのターミナルエミュレータが何であるかを知るための標準はありません。実際、ユーザーは「デフォルトで」デスクトップ環境に付属しているものとはまったく異なる端末を使用する場合があります。さまざまなシステム変数と構成ファイルを調べることによってのみ、それを推測することができます。
あなたは$TERM
であなたの前進を推測することを試みることができます
man term.5
および/またはman term.7
(マニュアルページの5ページと7ページ)を参照してください。
通常、環境変数TERMには、使用している端末、コンソール、またはディスプレイデバイスタイプのタイプ名が含まれている必要があります。この情報は、エディターやメーラーを含むすべての画面指向プログラムにとって重要です。
デフォルトのTERM値は、/ etc/inittab(LinuxおよびSystem-VのようなUNIX)または/ etc/ttys(BSD UNIX)のいずれかによって行ごとに設定されます。これは、ワークステーションおよびマイクロコンピューターコンソールではほとんどの場合十分です。
私のManjaroi3インストールで
$ echo $TERM
rxvt-unicode-256color
これはurxvt
の別名です。したがって、デフォルトの端末の正しい名前を取得することさえ期待できません。
詳細に この返信で
$ TERMに[認識できないもの]がある場合は、次のような構成を注意深く確認してください。
- / etc/inittabのagetty行(end1でlinuxと言う必要があります)
- システム全体のシェル起動スクリプト
- /etc/profile、/etc/profile.d/*.sh
- /etc/bash.bashrc(bashを使用している場合)
- 独自のシェル起動スクリプト
- 〜/ .profile、〜/ .bash_profile、〜/ .bash_login、〜/ .bashrc
デフォルトでは、i3にはi3-sensible-terminal
が付属しています。マニュアルによると
i3-sensible-terminalは、端末を起動するためにi3のデフォルト設定で呼び出されます。ディストリビューションに依存しないターミナルランチャーがないため、このラッパースクリプトが必要です(ただし、たとえば、Debianにはx-terminal-emulatorがあります)。配布パッケージャーは、配布に適した方法でこのスクリプトを出荷する責任があります。
そして、それが機能する方法は、一般的に使用されるターミナルエミュレーターのリストを調べるだけです。
次のいずれかを(この順序で)開始しようとします。
- $ TERMINAL(これは非標準変数です)
- x-terminal-emulator(Debianおよび派生物にのみ存在)
- urxvt
- rxvt
- シロアリ
- ターミネーター
- .。
どこ
$TERMINAL
は通常、使用時に前述の起動スクリプトで設定されます。x-terminal-emulator
は、デフォルトのターミナルを要求するDebianの方法です(Ubuntuで動作します)Bashスクリプトでは、それは次の行に沿って何かを与えるでしょう
terms=(emulator1 emulator2 emulator3)
for t in ${terms[*]}
do
if [ $(command -v $t) ]
then
detected_term=$t
break
fi
done
echo $detected_term