Generic_Window_Manager/data/float.gwm

103 lines
2.5 KiB
Plaintext

;; package to have some windows always float on top of others
;; toi use, just include (load 'float) in your .profile.gwm
;; rwhitby@adl.austek.oz.au (Rod Whitby)
;; Rod Whitby
;; Austek Microsystems Pty. Ltd.
;; Technology Park
;; Adelaide, SA 5095 Australia
;;
;; ACSnet: rwhitby@austek.oz ARPA: rwhitby@austek.oz.au
;; UUCP: uunet.uu.net!munnari!austek.oz.au!rwhitby
;;
;; modified & integrated by colas Dec 27 90.
;; Changes to the standard behaviour to add auto-raise functionality.
(defaults-to
float.menupos 2
float.iconmenupos 2
float.menufont (font-make "*-symbol-medium-r-normal--14-*")
float.up "\xad"
float.down "\xaf"
float.no "\xbb"
)
(if (= float.menufont font) (progn
(setq float.menufont (font-make "cursor"))
(: float.up "\x72")
(: float.down "\x6a")
(: float.no "\x2a")
))
(defun float.top-window ()
(with (l (list-of-windows 'stacking-order)
len (length l)
i (- len 1))
(tag ret
(while (> i -1)
(with (win (# i l))
(if (and (not (= (with (wob win) window-client-class) 'Gwm))
(not (= (# 'float win) 'up))
(not (= wob win)))
(exit ret win))
(: i (- i 1)))))))
(setq standard-behavior
(state-make
standard-behavior
(on visibility-fully-obscured
(if (= (# 'float window) 'up)
(raise-window (float.top-window)))
)
(on visibility-partially-obscured
(if (# 'float window)
(if (= (# 'float window) 'up)
(raise-window (float.top-window))
(= (# 'float window) 'down)
(lower-window)))
)
(on visibility-unobscured
(if (= (# 'float window) 'down)
(lower-window)))
))
(if (boundp 'reparse-standard-behaviors)
(reparse-standard-behaviors)
)
;; Now add some routines to the window menu to toggle floating
(defun float.toggle (dir)
(## 'float window dir)))
;; add toggle float menu item to window menu
(if (and (not (boundp 'float.menu-added))
(boundp 'window-pop-items)
(boundp 'icon-pop-items))
(progn
(setq float.menu-added t)
(insert-at '(multi-item-make
"Float: "
()
("Up" (float.toggle 'up))
("Down" (float.toggle 'down))
("No" (float.toggle ()))
)
window-pop-items
float.menupos)
;; same with smaller labels for icon menu
(insert-at '(multi-item-make
"Float: "
()
((label-make float.up float.menufont) (float.toggle 'up))
((label-make float.down float.menufont) (float.toggle 'down))
((label-make float.no float.menufont) (float.toggle ()))
)
icon-pop-items
float.iconmenupos)
))