Unityおよびを使用しており、ccsmがインストールされている場合、wjandreaの答えはもちろんあなたの答えです。 そうでない場合、または他のディストリビューションで使用する場合は、軽量の代替手段が役立つ場合があります。
以下のスクリプトを使用すると、各ホットコーナーに固有のanyコマンドを設定できます。
例として、次のセットアップを行いました。
もちろん、コマンドに外部スクリプトを実行させることもできます。
さらに、行のホットコーナーのsizeを設定できます。
cornersize = 10
値(ピクセル)を変更するだけです。スクリプトは、コマンドをトリガーするために(正方形の)エリアを設定します。
#!/usr/bin/env python3
import subprocess
import time
cornersize = 20
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
match1 = None
while True:
time.sleep(1)
xy = get_pos()
x = xy[0]; y = xy[1]
test = [
[x < cornersize, y < cornersize],
[x > res[0]-cornersize, y < cornersize],
[x < cornersize, y > res[1]-cornersize],
[x > res[0]-cornersize, y > res[1]-cornersize],
]
match2 = [i for i, p in enumerate(test) if all(p)]
if match2 != match1:
if match2:
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
スクリプトにはxdotool
が必要です
Sudo apt install xdotool
hotcorners2.py
として保存しますスクリプトの先頭で、コマンドを設定します(引用符に注意してください)
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
(続いて左上/右、左下/右)
テスト-スクリプトを実行します。
python3 /path/to/hotcorners2.py
すべてが正常に機能する場合は、スタートアップアプリケーションに追加します:ダッシュ>スタートアップアプリケーション>追加。コマンドを追加します。
/bin/bash -c "sleep 5 && python3 /path/to/hotcorners2.py"
もう少し高度なコンピューティングを使用する場合は、正方形の領域の代わりにradiusを使用してコマンドをトリガーできます(古き良き@pythagorasに感謝します)。
小さな違いですが、楽しみのためだけに:
#!/usr/bin/env python3
import subprocess
import math
import time
# set distance (hotcorner sensitivity)
radius = 20
# top-left, top-right, bottom-left, bottom-right
commands = [
None,
"gedit",
None,
"gnome-terminal",
]
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def get_pos():
return [int(s.split(":")[1]) for s in get(["xdotool", "getmouselocation"]).split()[:2]]
# get the resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
res = [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
# list the corners, could be more elegant no doubt
corners = [[0, 0], [res[0], 0], [0, res[1]], [res[0], res[1]]]
match1 = None
while True:
time.sleep(1)
pos = get_pos()
# get the current difference from the mousepointer to each of the corner (radius)
diff = [int(math.sqrt(sum([(c[i]-pos[i])**2 for i, n in enumerate(res)])))\
for c in corners]
# see if any of the corners is "approached" within the radius
match2 = [diff.index(n) for n in diff if n < radius]
# if so, and the corresponding command is not set to None, run it.
if all([match2 != match1, match2]):
cmd = commands[match2[0]]
if cmd:
subprocess.Popen(["/bin/bash", "-c", cmd])
match1 = match2
ほぼ同じです。スクリプトのheadセクションで、コマンドとトリガーする半径を設定します。
wjandrea's answer は、デフォルトのUbuntuまたはUbuntu Kylinを使用する(またはディスプレイマネージャーとしてcompizを使用する)人に最も適した回答であるため、賛成と敬意を払われます。以下に示す回答は、Unityでも使用できますが、おそらく多少冗長になります。ただし、compizのないデスクトップ環境では、以下に示すインジケーターを使用できます。 Lubuntu 16.04 VMで簡単にテストしたので、そこで動作することを知っており、Kylin 14.04と互換性があります。 GNOMEおよびMATEデスクトップの場合、インジケーターを使用するには、最初にAppIndicatorsを有効にする必要があります。
indicator-edger
を実装しました。これにより、画面の4つの端に沿った任意の場所のマウス位置に基づいて、ユーザー定義のコマンドをトリガーできます。元のバージョンは約7時間で1日以内に実行されたため、かなり最小限に抑えられていますが、作業は完了しています。
インジケーターは、明らかにjson
形式の~/.edger-commands.json
ファイルを介して制御されます。ユーザーが手動で作成するか、インジケーターのDEFINE COMMANDS
オプションで設定できます。トリガーの有効化/無効化オプションは記憶され、ユーザーの利便性のためにファイルに自動的に書き込まれます。サンプル構成ファイルは次のようになります。
{
"right": "gnome-terminal",
"top": "firefox",
"left": "",
"bottom": "gnome-screenshot",
"enabled": true
}
ファイルの"left"
エントリに注意してください。そのEdgeは設定されていませんが、json
構文のために、空の文字列、つまり引用符""
が必要です。
ユーザーが任意のエッジに沿ってマウスを配置したことをインジケーターが検出すると(〜3ピクセルマージン)、インジケーターはバブル通知を送信し、適切なコマンド(定義されている場合)を実行します。ユーザーがエッジからマウスを離さない限り、トリガーのアクティブ化は繰り返されません。
上記のスクリーンショットからわかるように、インジケーターのコマンドラインにはデバッグ出力もあります。バグを見つけたら、それを端末から自由に実行して、発生したエラーを見つけ、適切なバグレポートを プロジェクトのGitHubの問題ページ に送信してください。
現在、コーナー(エッジのみ)のサポートはなく、1モニターセットアップ用に構築されています(明らかに、作成後7時間以内にすべてのベースをカバーすることはできません)が、それらの機能は将来的に利用可能になる可能性があります。
ソースコードは、プロジェクト GitHub ページまたは Launchpad で入手できます。ターミナルで次のコマンドを使用してインストールを実行します。
Sudo add-apt-repository ppa:1047481448-2/sergkolo
Sudo apt-get update
Sudo apt-get install indicator-edger