GNOME端末の単一インスタンス?


8

知りたいのですが、ターミナルを開いたときにすでにインスタンスが開いていると、そのインスタンスが表示され、新しいインスタンスは開かないようにGNOMEターミナルを設定できます。


使用しているubuntuのバージョンと環境を教えてください。あなたが説明しているのは、Unityとgnome-shellのデフォルトのセットアップなのでです。
火曜日

Unity-2DでUbuntu 11.10を使用しています。クリーンインストールは行っていませんが、11.04からのアップグレードは行っています。
ムード

ショートカットとしてCtrl + Alt + Tを使用していますか?
int_ua

はい。そうするか、Kupferで「ter»enter」と入力して端末を起動します。これらは私が使用する2つの方法です。Unity laucherをあまり頻繁に見ないので、結局、3、4種類の端末ができます。
ムード

回答:


8

ターミナルにフォーカスを与えるために、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のキーの組み合わせを与えます。

完了しました、シングルインスタンスターミナル...


なぜスクリプトをデフォルトのターミナルランチャーにしないのですか?ショートカットを追加するためのすべてのステップとすべての理由 スクリプトは+1、実装は-1。
ブルーノペレイラ

正直なところ、どうすればいいのかわかりません。デフォルトのアプリケーションを確認しましたが、ターミナルが表示されませんでした。また、以前のバージョンのUbuntuには、コマンドを入力できるテキストフィールドがあったことも確信しています。このバージョンのデフォルトアプリはすべてドロップダウンメニューです。
ムード

2

ランチャーコマンドに--tabを追加します。その後、アプリは1つだけになります。開いた。

~$ gnome-terminal --help-all
:
--tab       Open a new tab in the last-opened window with the default profile

いいえ、新しいタブは必要ありません。端末を最後に残した状態でフォアグラウンドに移動してほしい。
ムード

1
これにより、Ubuntu 16.04で新しいウィンドウが開かれます
beruic

0

Mod4+#Mod4= Super = "Windows"キー、#ランチャーの番号)ショートカットを使用してアプリケーションを開くと、これがデフォルトの動作になります。


はい、承知しています。それでも、まずターミナルを開いておく必要があります。Ctrl + Alt + Tキーを押すか、Kupferで開くと、たとえばChromeと同じ動作を探しています。インスタンスが開いている場合、そのインスタンスを表示します。インスタンスがない場合、新しいインスタンスを開きます。
ムード

0

@Moodのスクリプトを少し一般化して簡略化しました。今では、コマンドラインパラメーターを受け取り、代わりにpgrepを使用します。

sudo apt-get install procps

スクリプト:

#!/usr/bin/env bash

if pgrep $1
then
    wmctrl -xa $1
else
    $1
fi

0

私は自分のスクリプトを追加したいと思います。非常に便利だからです。

  1. 現在のワークスペースにgnomeターミナルがある場合は、それを前面に移動してフォーカスを与えます
  2. 現在のワークスペースにgnomeターミナルがない場合は、ワークスペースを切り替え、最初に見つかった既存のgnomeターミナルを前面に移動してフォーカスを与えます
  3. 実行中のgnome-terminalインスタンスがない場合は、新しいインスタンスを開いて前面に移動し、フォーカスを与えます

このスクリプトを実行するように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で使用していますが、ニーズに合わせて変更しました。幸運を

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.