Re: [Sawfish] window-position in after-move-hook returns old window position? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/sawfish Archives
]
- To: sawfish@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [Sawfish] window-position in after-move-hook returns old window position?
- From: Robert 'Bobby' Zenz <Robert.Zenz@xxxxxxxxxxxxxx>
- Date: Thu, 8 May 2025 19:07:04 +0200
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=bonsaimind.org; s=mail; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-ID:Subject:To:From:Date:Sender: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=E89OdnDJADQ4ZLV91YqivGgc2apit2XhHZyp6X/nJns=; b=Dke3nsug5M87ZfS/YCa273Ouy4 jVQ5m4R0eNiZ0GYOuHny79M0bofOqTs809k/bnARtZ5eOO6uzgmhwFAKLsq+mtgIp6Iv+nNVIPC9P Z6OUXTasAZxZXiXa4cQZm2d/zi66xXfnjmJ6Y+3eseHZy+nTyolSWlVK6JRY47sw6enc=;
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