プログラムが開いていることを確認し、その場合は、新しいインスタンスの代わりにそのウィンドウを開くキーボードショートカットを作成する方法

プログラムが開いていることを確認し、その場合は、新しいインスタンスの代わりにそのウィンドウを開くキーボードショートカットを作成する方法

ハイパーターミナルの例:

alt+を押すと、スクリプトはhハイパーがすでにバックグラウンドで実行されていることを確認する必要があります。

その場合は、すでにウィンドウが開いている必要があります。
そうでない場合は、新しいウィンドウを開きます。

オペレーティングシステム:Ubuntu 18.04

答え1

キーボードショートカットの作成は DesktopManager によって異なります。 Ubuntu 18でこの答えは方法を説明します。。ショートカットで実行するために設定する必要があるコマンドは次のとおりです。

この単純なコマンドは、ウィンドウマネージャをスーパーウィンドウに切り替えます。

wmctrl -a Hyper

EWMH / NetWM仕様をサポートするすべてのウィンドウ/デスクトップマネージャが機能しますwmctrl。 Ubuntuデスクトップは互換性がありますが、インストールする必要があるかもしれませんwmctrl

私はテーブルの上に何があるかを味わうために以前の答えを残しています。これが上記のコマンドを見つけた方法です。


古い回答:

スクリプトについて書くことができるいくつかの重要な要素があります。

  1. ps -xau | grep hyperプロセスがすでに実行されているかどうかに関する情報を取得します。検索中のgrepプロセスも一覧表示されますhyper

  2. ステップ1はオプションです。おそらくあなたのウィンドウマネージャはEWMH / NetWM仕様をサポートします。したがって、wmctrlインストールする必要があります。端末を入力してwmctrl存在することを確認します。

  3. wmctrl -l現在開いているすべてのウィンドウのリストが表示されます。

  4. wmctrl -aその後、目的のウィンドウをアクティブにするか、またはを使用してそのウィンドウに移動できます。wmctrl -R

wmctrl -hデスクトップで実行できるその他のタスクについて説明します。

たとえば、マイコンピュータ(複数のウィンドウとデスクトップが開いている)でHyperを起動した後にwmctrl -lと入力すると、次の結果が表示されます。

0x02c00006 18 mymachine urxvt
0x02e00006 19 mymachine ncurses.h = (/nix/store/ffjl7aw7f0gjwv4gb4mgb0w49v5dhrkg-ncurses-6.0-20171125-dev/include) - VIM
0x03c00006 16 mymachine urxvt
0x03000006 20 mymachine urxvt
0x03a00006  8 mymachine urxvt
0x00e00006 24 mymachine urxvt
0x01800003 15 mymachine Volume Control
0x04c00005  1 mymachine Hyper
0x03e00001 15 mymachine 2.3. Using Precedences - Chromium
0x03e00006 15 mymachine Edit - Unix & Linux Stack Exchange - Chromium
0x03e00007 15 mymachine C++ Core Guidelines - Chromium

この行に注意してください: Desktop 1 0x04c00005 に Hyper というウィンドウがあることがわかります。

0x04c00005  1 mymachine Hyper

次のコマンドを使用して、この行を直接インポートできます。

wmctrl -l | grep Hyper

ウィンドウをアクティブにするには:

wmctrl -a 0x04c00005

しかし、何らかの理由でこの最新のコマンドが私のFluxbox環境で機能しない理由はわかりません...多分Fluxboxはすべてを実装していないかもしれませんwmctrl

あなたはそれをテストする必要があります。これがUbuntu環境で機能する場合は、これらのさまざまなコマンドを自動的に実行するbashスクリプトを作成してみてください。その後、成功したか障害物に直面した部分を教えてください。

編集するwmctrl -a :16進IDではなくウィンドウタイトルが必要なようです。

したがって、解決策は簡単です。

wmctrl -a Hyper   

また試すことができます

wmctrl -R Hyper

答え2

キーは、Hyper開いている他のプログラムのキーワードと一致しないウィンドウのタイトルバーで一意の名前を見つけることです。私はあなたが言及したプログラムをインストールしていませんが、Debian 9でXfceを使用しています。mousepadしたがって、これをキーボードショートカットとして追加できます。

bash -c 'wmctrl -a Mousepad || mousepad'

マウスパッドをウィンドウのタイトルバーのキーワードに置き換えて、2番目の部分では端末で実行するために使用するプログラム名を使用してください。ウィンドウがすでに開いている場合は、上記のコマンドを実行するとウィンドウがアクティブになります。ただし、コマンドが失敗した場合、つまり||プログラムが起動します。

関連情報