2017-09-12 1 views
1

J'essaie de tracer une ligne rouge dans la barre de titre d'une fenêtre focalisée. Pour cela, je crée un code similaire à celui-ci (il est censé être un exemple minimal):Hammerspoon: tracer une ligne dans la barre de titre d'une fenêtre

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 

Si j'entre ceci dans la console Hammerspoon, suivie par

foo() 

il dessine une ligne en dehors de la fenêtre, pas sur la barre de titre, si la console est placée dans la moitié droite de l'affichage. Veuillez vous référer à la capture d'écran ci-jointe. En fait, la position et la longueur de la ligne rouge changent, selon l'emplacement de la fenêtre de la console, et la ligne rouge souhaitée peut être dessinée sur la barre de titre, si la console est dans la moitié gauche de l'affichage. Je suis totalement confus. Quel est le problème avec le code? Quelqu'un peut-il aider?

enter image description here

EDIT

Plus de photos sont ajoutées. Notez que setStrokeWith(30) est utilisé.

enter image description here

enter image description here

enter image description here

+0

La ligne rouge commence-t-elle au même endroit à chaque fois? Quelques meilleures descriptions ou images de ce que fait exactement la ligne rouge seraient utiles. –

+0

@AzureHeights Plus de photos sont ajoutées. –

+0

Il semble que 'f.w' soit plus ou moins fixé au même point dans tous les cas. –

Répondre

1

En l'état, le code placera les fenêtres de la barre largeur à partir du côté gauche de l'écran. La position apparemment fixe est parce que la largeur de la fenêtre est la même. Utilisation:

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

Pour placer le deuxième point sur le décalage par rapport au premier.