Ubuntu 14.04 アクティブスクリーンでターミナルを起動する

Ubuntu 14.04 アクティブスクリーンでターミナルを起動する

私は現在Ubuntu 14.04で作業しています2つの別々の画面

ターミナルを起動するためのキーボード ショートカット (Ctrl+Alt+T) を使用すると、作業中の画面が左側の画面であっても、ターミナルは現在デフォルトで左側の画面で開きます。

この問題は、gnomeターミナルのみ

不思議なんだけど現在アクティブな画面でターミナルを起動するように設定する方法はありますか?

ありがとう。

答え1

Ctrl++Altによって開始された新しいターミナル ウィンドウをT現在アクティブな画面で開くにはどうすればよいですか?

それでもとても大いに関連しているこれですは重複ではなく、まったく異なるソリューションが必要です。 に関する質問は に固有のものでありgnome-terminal、アプリケーションを起動するためにショートカットを使用しています。 これら 2 つにより、バックグラウンド スクリプトは不要になり、追加情報が求められます。

ソリューション

ショートカット キーでターミナルを起動するので、クリーンなソリューションを作成するのは比較的簡単です。Ctrl+ Alt+によって呼び出されるコマンドを置き換えてT、ラッパー スクリプトを実行するだけです。このラッパーは新しいインスタンスを開始し、新しいウィンドウが表示されるのを待ち、マウスの現在の位置を確認して、新しいgnome-terminalウィンドウを対応する画面に移動します。

スクリプト

#!/usr/bin/env python3
import subprocess
import time

app = "gnome-terminal"

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def screen_limit():
    screendata = [s for s in get("xrandr").split() if s.count("+") == 2]
    if len(screendata) == 2:
        return int([s.split("x")[0] for s in screendata if "+0+0" in s][0])

rightside = screen_limit()
if rightside:
    ws1 = get(["wmctrl", "-lpG"]); t = 0
    subprocess.Popen(app)
    while t < 30:      
        ws2 = [w for w in get(["wmctrl", "-lpG"]).splitlines() if not w in ws1]
        if ws2:
            try:
                pid = get(["pgrep", "-f", app])
            except subprocess.CalledProcessError:
                pass
            else:
                match = [w for w in ws2 if pid in w]
                if match:
                    match = match[0].split()
                    mousepos = int(get(["xdotool", "getmouselocation"]).split()[0].split(":")[1])
                    check = [mousepos < rightside, int(match[3]) < rightside]
                    if check[0] != check[1]:
                        cmd = ["xdotool", "windowmove", match[0], str(int(match[3]) + rightside), match[4]] \
                              if check[0] == False else \
                              ["xdotool", "windowmove", match[0], str(int(match[3]) - rightside), match[4]]                       
                        subprocess.Popen(cmd)
                    break
        time.sleep(0.5); t += 1
else:
    subprocess.Popen(app)

使い方

  1. スクリプトにはwmctrlと の両方が必要ですxdotool

    sudo apt-get install wmctrl xdotool
    
  2. 上記のスクリプトを空のファイルにコピーし、move_terminal.py
  3. ここで、デフォルトのコマンドを変更する必要がありますCtrlAltT

    • まず、次のコマンドで現在のショートカットを無効にします。

      gsettings set org.gnome.settings-daemon.plugins.media-keys terminal ""
      

      これにより、ショートカットが再び使用可能になります。

    • 次に、カスタム ショートカット キーに新しいコマンドを追加します。システム設定 > 「キーボード」 > 「ショートカット」 > 「カスタム ショートカット」を選択します。「+」をクリックして、コマンドを追加します。

      python3 /path/to/move_terminal.py
      

      ショートカットへCtrl+ Alt+T

これで、++gnome-terminalによって起動された新しいウィンドウは常に現在アクティブな画面に「追従」するようになります。CtrlAltT

注記

2 番目の画面が接続されていない場合は、Ctrl+ Alt+ はT新しいターミナル ウィンドウを開きます。

関連情報