知りたいのですが、ターミナルを開いたときにすでにインスタンスが開いていると、そのインスタンスが表示され、新しいインスタンスは開かないようにGNOMEターミナルを設定できます。
知りたいのですが、ターミナルを開いたときにすでにインスタンスが開いていると、そのインスタンスが表示され、新しいインスタンスは開かないようにGNOMEターミナルを設定できます。
回答:
ターミナルにフォーカスを与えるために、wmctrlを使用して簡単なシェルスクリプトを記述しました。それはまさに私が望むことをします。
まず、wmctrlをインストールしますsudo apt-get install wmctrl
。
次に、テキストエディターを起動し、次の行をコピーします。
#!/bin/sh
SERVICE='gnome-terminal'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
wmctrl -xa $SERVICE
else
$SERVICE
fi
通常シェルスクリプトを保持する場所にファイルを保存します。私の場合、私はしました: ~/bin/single_instance.sh
ディレクトリ(cd ~/bin
)にcdし、ファイルを実行可能にしますchmod +x single_instance.sh
次に、メインメニューを開き、[ アクセサリ] » [ ターミナルプレスのプロパティ]を選択し、コマンドをスクリプトに置き換えます。~/bin/single_instance.sh
システム設定»キーボード»ショートカットを開きます。バックスペースを指定して、Launch Terminalショートカットを無効にします。カスタムショートカットを作成します。もう一度、スクリプトのパスと名前を入力し、Ctrl + Alt + Tのキーの組み合わせを与えます。
完了しました、シングルインスタンスターミナル...
私は自分のスクリプトを追加したいと思います。非常に便利だからです。
このスクリプトを実行するようにCtrl + Alt + Tショートカットを構成しましたが、GuakeやTildaよりも快適です。
#!/usr/bin/env sh
# APP is the binary name you see when you do ps
APP="gnome-terminal"
# WIN_CLASS is the window class you see when you do wmctrl -lx
WIN_CLASS="gnome-terminal-server.Gnome-terminal"
# Use the app from current workpace first, or any if not available
WORKSPACE=$(wmctrl -d | grep '\*' | cut -d ' ' -f1)
TPID=$(ps aux | pgrep $APP)
if [ "$TPID" ]
then
QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | grep $WORKSPACE | awk 'NR == 1 {print $1}')
if [ "$QTERM_WIN" ]
then
wmctrl -ia $QTERM_WIN
else
# No valid app found in the current workspace, switch to any
QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | awk 'NR == 1 {print $1}')
wmctrl -ia $QTERM_WIN
fi
else
$APP &
fi
QTerminalで使用していますが、ニーズに合わせて変更しました。幸運を