Re: window-position in after-move-hook returns old window position?

Robert 'Bobby' Zenz <[email protected]> Thu, 8 May 2025 19:07:04 +0200
Newsgroups gmane.comp.window-managers.sawfish
Message-ID <20250508190704.64364480@Dagon>
I ended up using `while-moving-hook` during which the window always
reports its correct position (curiously).

I ended up with the following script:

    (defun get-window-x (window)
        (car (window-position window)))

    (defun handle-window-entering-sticky-zone (window)
        (if (window-sticky-p window)
            (window-put window 'original-sticky-value 'true)
            (window-put window 'original-sticky-value 'false))
        (make-window-sticky window))

    (defun handle-window-leaving-sticky-zone (window)
        (if (window-sticky-p window)
            (if (not (= (window-get window 'original-sticky-value) 'true))
                (make-window-unsticky window)))
            (window-put window 'original-sticky-value nil))

    (defun has-original-sticky-value (window)
        (not (= (window-get window 'original-sticky-value) nil)))

    (defun is-in-automatic-sticky-zone (window)
        (>= (get-window-x window) 1800))

    (defun sticky-second-monitor-window-toggler (window)
        (if (is-in-automatic-sticky-zone window)
            (if (not (has-original-sticky-value window))
                (handle-window-entering-sticky-zone window))
            (if (has-original-sticky-value window)
                (handle-window-leaving-sticky-zone window))))

    (add-hook 'add-window-hook sticky-second-monitor-window-toggler)
    (add-hook 'place-window-hook sticky-second-monitor-window-toggler)
    (add-hook 'while-moving-hook sticky-second-monitor-window-toggler)

Which is far from perfect, but gets the job done for me.

-- 
Sawfish ML