これがシステムに組み込まれているとは思いませんが、それほど面倒なことなく行うことは可能ですか?
ホットキーを使用して特定のプログラムを開き、そのホットキーをもう一度押すと、プログラムウィンドウが前面に表示されます。
Ubuntu9.04でこれをやりたいです。
多分D-Busで?専門家はいますか?
更新:誰かの助けになる場合に備えて、私が最終的に得たものは次のとおりです。
#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
WID=`cat /tmp/myterm.pid`
xdotool windowactivate $WID
if [ "$?" != "0" ]; then
WID=""
fi
else
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi
if [ "$WID" == "" ]; then
/usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
echo $WID > /tmp/myterm.pid
else
xdotool windowactivate $WID
fi
確かにそれは単純化することができますが、私はbash
ウィズではありません。また、私の例が機能するように、後で見つけられるようにウィンドウに一意のタイトルを適用するカスタムプロファイルをターミナルで作成しました。可能性は無限大!
wmctrl
プログラムはまさにあなたが探しているものです(Sudo apt-get install wmctrl
)。 wmctrl -a "AppTitle"
コマンドを使用して、アプリを前面に表示できます。 wmctrl -l
は使用可能なすべてのウィンドウを一覧表示するため、プログラムが実行されているかどうかを確認し、プログラムを起動するか前面に表示するシェルスクリプトを簡単に作成できます。次に、それをキーボードショートカットにバインドできます。
まず、次のスクリプトをどこかに保存します。/home/jtb/code/bringToFront
を使用します。 2つの引数を取ります。1つはプログラムを起動するために端末で入力するもので、2つ目はプログラムウィンドウのタイトルの部分文字列です。タイトルに一定の一意の文字列がない場合は、プログラムのウィンドウを見つけるためにもう少し作業を行う必要があります。
#!/bin/bash
if [ `wmctrl -l | grep -c "$2"` != 0 ]
then
wmctrl -a "$2"
else
$1 &
fi
現在のディレクトリにあるスクリプトで、chmod +x bringToFront
を実行してスクリプトを実行可能にします。次に、それが機能することを確認します。 Firefoxを起動/フォーカスするには、./bringToFront firefox "Mozilla Firefox"
を実行できます。
次に、ショートカットキーをバインドする必要があります。 gconf-editor
を実行し、左側のフォルダー構造を/apps/metacity/keybinding_commands
に移動します。
最初のcommand
を空白の値、おそらくcommand_1
でダブルクリックします。スクリプトへのフルパスを入力し、2つのパラメータを指定します。 /home/jtb/code/bringToFront firefox Firefox
。
左側のパネルから、次のフォルダであるglobal_keybindings
を選択します。定義したコマンドに一致するrun
エントリ、おそらくrun_command_1
を見つけます。それをダブルクリックして、使用するキーボードショートカットを入力します。修飾子を山かっこで囲みます。例: <Ctrl><Alt>F
。
今 Control + Alt + F Firefoxウィンドウを前面に表示するか、まだ実行されていない場合は起動します。
xdotools
でそれを行う別の方法があります。ポップアップするプロセスは、それを実行するために発行されたコマンドラインによって認識されます(pidファイルや一意のウィンドウタイトルは必要ありません)。
#!/bin/bash
cmd="$@"
# command line to be run. Note that the resulting
# process will hold this in /proc/PID/cmdline
pid=`pgrep -nf "^$cmd$"`
# most recent process having "$cmd" in /proc/PID/cmdline
if [ -z "$pid" ]; then # no pid
exec $cmd
# run command
else
winid=`xdotool search --all --pid $pid --onlyvisible | head -1`
# first visible window owned by pid
xdotool windowactivate $winid
# give window focus
fi
jtb 以前に投稿された回答は優れていますが、正確なタイトルを一致させたい場合があります(たとえば、「GitKraken」を開きたいが、ブラウザのタイトル「GitKraken vsCLI」もクエリと一致しています)。
#!/bin/bash
if [ $1 == "-exact" ]
then
additional_arguments="-F "
app_launch_command=$2
app_title=$3
else
additional_arguments=""
app_launch_command=$1
app_title=$2
fi
if [ `wmctrl -l $additional_arguments| grep -c "$app_title"` != 0 ]
then
wmctrl $additional_arguments -a "$app_title"
else
$app_launch_command &
fi
これで、次のようにbringToFrontスクリプトを呼び出すことができます。
#exact match
./bringToFront.sh -exact "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh -exact <command_to_launch_the_app> <app_title
#partial match like the old script
./bringToFront.sh "flatpak run com.axosoft.GitKraken" "GitKraken"
#or
./bringToFront.sh <command_to_launch_the_app> <app_title>
このソリューションはパラメーター化されていませんが、bring-to-focusまたはstart gnome-calculatorに使用しました。
-Rオプションは、ウィンドウを見つけるか失敗します。見つかった場合は、現在のデスクトップに移動され、上げられてフォーカスが与えられます。 gnome-calculatorは、ウィンドウにCalculatorという名前を付けます。簡単にパラメーター化できますが、そうする必要性はありません。 Ctrl-Alt-c
にマッピングしました。
#!/bin/bash
# start the calculator and raise and focus (requires wmctrl)
# X Tian 06sep2017 created
wmctrl -R Calculator
if [[ $? -ne 0 ]]
then
gnome-calculator &
fi
それをありがとう。私はそれの修正バージョンを使用して、複数のインスタンスの循環もサポートするウィンドウショートカットスクリプトを作成します。興味があれば:
http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/
乾杯:)