2017-09-12 10 views
1

フォーカスされたウィンドウのタイトルバーに赤い線を描こうとしています。このために、私は次のようなコードを作成した(それは最低限の例であることを意味する):Hammerspoon:ウィンドウのタイトルバーに線を描画する

foo() 

続く、私はHammerspoonコンソールにこれを入力した場合

function foo() 
    f = hs.window.focusedWindow():frame() 
    line = hs.drawing.line(hs.geometry.point(f.x, f.y),hs.geometry.point(f.w,f.y)) 
    line:setStrokeWidth(10) 
    line:setStrokeColor(hs.drawing.color.red) 
    line:show() 
end 

それはラインを描きますコンソールがディスプレイの右半分に置かれている場合は、タイトルバー上ではなく、ウィンドウの外側に表示されます。添付のスクリーンショットをご覧ください。実際、コンソールウィンドウの位置に応じて、赤い線の位置と長さが変わり、コンソールがディスプレイの左半分にある場合は、タイトルバーに赤い線を描くことができます。私は全く混乱した。コードの何が間違っていますか? 誰も助けることができますか?

enter image description here

EDIT

もっと写真が追加されます。 setStrokeWith(30)が使用されることに注意してください。

enter image description here

enter image description here

enter image description here

+0

赤い線が毎回同じ場所で開始しますか?赤線が正確に何をするかについてのより良い説明やイメージが役立ちます。 –

+0

@AzureHeightsさらに写真が追加されます。 –

+0

'f.w'はすべての場合同じポイントで多かれ少なかれ固定されているようです。 –

答えて

1

されており、コードは離れて、画面の左側からバーのウィンドウ幅を配置します。一見固定された位置は、ウィンドウの幅が同じであるためです。使用:

hs.geometry.point(f.x + f.w, f.y) 

最初のオフセットと同じ位置に2番目のポイントを配置します。