アプリを開く/開くためのカスタムホットキー/ショートカット


11

これがシステムに組み込まれているとは思いませんが、あまり手間をかけずにそれを行うことは可能ですか?

特定のプログラムをホットキーで開き、そのホットキーをもう一度押すと、プログラムウィンドウが前面に表示されるとします。

Ubuntu 9.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ウィズではありません。また、この例を機能させるために、ターミナルで一意のタイトルを適用するカスタムプロファイルを作成し、後で見つけられるようにしました。可能性は無限大!


1
この単純なタスクでは、xdotoolsがXエラーをスローすることがあり、wmctrlの方が高速であるため、jtbの方法がより適切に機能します。
Ivan

回答:


10

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
  1. スクリプトを現在のディレクトリに置いて実行chmod +x bringToFrontし、スクリプトを実行可能にします。次に、それが機能することを確認します。打ち上げに/あなたが実行できるFirefoxの焦点を合わせます./bringToFront firefox "Mozilla Firefox"

  2. 次に、ショートカットキーをバインドする必要があります。を実行gconf-editorして、左側のフォルダー構造をに移動します/apps/metacity/keybinding_commands

  3. commandおそらく値が空白の最初の値をダブルクリックしますcommand_1。スクリプトへの完全なパスを入力し、2つのパラメーターを指定します(例:)/home/jtb/code/bringToFront firefox Firefox

  4. 左側のパネルから、1つ上のglobal_keybindingsフォルダを選択します。run定義したばかりのコマンドに一致するエントリを見つけますrun_command_1。それをダブルクリックして、使用するキーボードショートカットを入力します。修飾子を山かっこで囲み<Ctrl><Alt>Fます。

Control+ Alt+ FフロントにFirefoxのウィンドウを持参、またはそれが実行されていない場合は、それを起動します。


ええ、数分前にそれを知りましたが、xdotoolを使いました。ありがとう!
Ivan

効果を完全に達成するためにgconfのグローバルショートカットとコマンドも使用したことを言及するのを忘れていました(貧乏人のQuakeコンソール!)。
Ivan

ああ、ええ、私自身はxdotoolを使用していませんが、柔軟性がいくらか向上するようです。gconfの良い点。それはかなり自明ではないので、答えを編集して、これを実行しようとしている他の人のために詳細を含めることもできます。
jtb 2009

Poort ManのQuakeコンソール?あなたはティルダのような意味ですか?freshmeat.net/projects/tilda
prestomation 2009

はい、私もTildaを使用していますが、私は1週間を通していくつかのプロジェクトに取り組んでいます。それぞれのプロジェクトで常に3つまたは4つのタブを開くので、Tildaを雑然とせずにプロジェクトのコンソール( "ワークスペース")にすばやく切り替えると、非常に便利です。
Ivan

3

でこれを行う別の方法を次に示し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


0

以前にjtbが投稿した答えは素晴らしいですが、完全に一致するタイトルが必要な場合があります(たとえば、「GitKraken」を開きたいが、ブラウザのタイトル「GitKraken vs CLI」もクエリに一致している)。

#!/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>

0

このソリューションはパラメーター化されていませんが、私はそれを使用して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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.