stumpwm-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: mouse not dragging a float window.


From: Eric S Fraga
Subject: Re: mouse not dragging a float window.
Date: Thu, 01 Sep 2022 15:26:25 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

Hello all,

Just in case anybody is interested, for completeness, below is the
equivalent code for resizing floating windows using the keyboard.  I now
no longer care about mouse support whether with :super or whatever! ;-)

eric

--8<---------------cut here---------------start------------->8---
;; function to resize windows around using the keyboard, similar to
;; the moving of windows defined just above.  The esf-resize-window
;; function adjusts the width and height of the current window by the
;; number of pixels given.  The function is invoked by the keystrokes
;; in the interactive keymap, esf-resize, which is called up by
;; invoking it as a command.  Finally, I map C-t R to esf-resize.  The
;; function & keymap could be improved by giving some visual feedback
;; to indicate that we are still in a move operation but I don't know
;; how to do that (yet).

(defcommand (esf-resize-window float-group) (dw dh)
  ((:number "dW = ") (:number "dH = "))
  (let* ((window (current-window))
         (parent (window-parent window))
         (w (xlib:drawable-width parent))
         (h (xlib:drawable-height parent)))
    (float-window-move-resize window
                              :width (+ w dw)
                              :height (- (+ h dh) ;desired height
                                         ;; but correct height to
                                         ;; ignore title bar height
                                         *float-window-title-height*))))

(defun esf-resize-setup ())
;; the actual interactive keymap for resizing the window.   )Default is
;; 10 pixels in either direction or 100 with Shift on the same keys.
;; I use arrow and vi resizement keys.
(define-interactive-keymap (esf-resize float-group)
    (:on-enter #'esf-resize-setup)
  ((kbd "Up") "esf-resize-window 0 -10")
  ((kbd "S-Up") "esf-resize-window 0 -100")
  ((kbd "k") "esf-resize-window 0 -10")
  ((kbd "K") "esf-resize-window 0 -100")
  ((kbd "Down") "esf-resize-window 0 10")
  ((kbd "S-Down") "esf-resize-window 0 100")
  ((kbd "j") "esf-resize-window 0 10")
  ((kbd "J") "esf-resize-window 0 100")
  ((kbd "Left") "esf-resize-window -10 0")
  ((kbd "S-Left") "esf-resize-window -100 0")
  ((kbd "h") "esf-resize-window -10 0")
  ((kbd "H") "esf-resize-window -100 0")
  ((kbd "Right") "esf-resize-window 10 0")
  ((kbd "S-Right") "esf-resize-window 100 0")
  ((kbd "l") "esf-resize-window 10 0")
  ((kbd "L") "esf-resize-window 100 0"))

;; bind the interactive keymap to a key in the float group
(define-key stumpwm::*float-group-root-map* (kbd "R")  "esf-resize")
--8<---------------cut here---------------end--------------->8---

-- 
Eric S Fraga via gnus (Emacs 29.0.50 2022-08-16) on Debian 11.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]