Generic_Window_Manager/data/vtwm-squeezed-window2.gwm

180 lines
7.3 KiB
Plaintext

;; vtwm-squeezed-window2.gwm --- VTWM Squeezed Title Window
;;
;; Author: Anders Holst (aho@sans.kth.se)
;; Copyright (C) 1995 Anders Holst
;; Version: vtwm-1.0
;; Last change: 6/6 1995
;;
;; This file is copyrighted under the same terms as the rest of GWM
;; (see the X Inc license for details). There is no warranty that it
;; works.
;;
;; ---------------------------------------------------------------------
;;
;; This file defines squeezed title style windows for the VTWM profile.
;; It requires that the normal "vtwm-window.gwm" is already loaded.
;; Use 'set-window' to specify which windows should have squeezed titles.
;;
;; The windows defined here are slightly different from those in
;; "vtwm-squeezed-window.gwm", in that the title is never truncated. This
;; looks better, but makes resize more complicated, and slightly
;; unintuitive in some cases.
;;
(defaults-to
vtwm-squeezed-hilite-size 11 ;; Size of area showing focus
vtwm-squeezed-title-position 'left ;; Left, right or center
)
(defun vtwm-squeezed2-innerbar ()
(with (borderwidth 0
cols (vtwm-get-color)
vtwm-title-foreground (or (# 0 cols) vtwm-title-foreground)
vtwm-title-background (or (# 1 cols) vtwm-title-background)
property (+ (list 'fg vtwm-title-foreground
'bg vtwm-title-background)
property)
background vtwm-title-background
fsm (vtwm-titlebar-fsm)
plug-separator 0
borderpixel vtwm-bordercolor
bar-min-width 1 bar-max-width 10000
bar-list (+ (vtwm-make-pluglist vtwm-left-plugs)
(list (vtwm-space-plug 5)
(vtwm-name-plug)
(with (borderwidth 3
borderpixel vtwm-title-background
fsm (fsm-make vtwm-titlebar-inner-behavior)
bar-min-width vtwm-squeezed-hilite-size
bar-max-width vtwm-squeezed-hilite-size)
(bar-make ()))
(vtwm-space-plug 2))
(vtwm-make-pluglist vtwm-right-plugs)))
(apply bar-make bar-list)))
(defun vtwm-squeezed2-titlebar ()
(with (borderwidth 0
tile t
background vtwm-bordercolor
fsm (fsm-make vtwm-squeezed2-resize-behavior1)
bar-max-width 10000
plug-separator 0)
(bar-make (with (fsm (vtwm-borderbar-fsm))
(bar-make (with (tile t
background vtwm-bordercolor
bar-min-width vtwm-borderwidth
bar-max-width 10000)
(if (= vtwm-squeezed-title-position 'right)
(bar-make ()
(with (tile ()) (bar-make ))
(with (tile ())
(bar-make (bar-make )
(vtwm-squeezed2-innerbar)))
(with (tile ()) (bar-make )))
(= vtwm-squeezed-title-position 'center)
(bar-make ()
(with (tile ()) (bar-make ))
(with (tile ())
(bar-make (bar-make )
(vtwm-squeezed2-innerbar)))
(with (tile ()) (bar-make ))
())
(bar-make (with (tile ()) (bar-make ))
(with (tile ())
(bar-make (bar-make )
(vtwm-squeezed2-innerbar)))
(with (tile ()) (bar-make ))
())))
(with (tile ()
background vtwm-bordercolor
bar-min-width vtwm-borderwidth
bar-max-width vtwm-borderwidth)
(bar-make )))))))
(defun vtwm-squeezed2-leftborder ()
(with (borderwidth 0
tile t
background vtwm-bordercolor
fsm (fsm-make vtwm-squeezed2-resize-behavior1)
plug-separator 0
border (with (tile ()
fsm (vtwm-borderbar-fsm)
background vtwm-bordercolor
bar-min-width vtwm-borderwidth
bar-max-width vtwm-borderwidth)
(bar-make )))
(if (or (= vtwm-squeezed-title-position 'right)
(= vtwm-squeezed-title-position 'center))
(bar-make (with (fsm ())
(bar-make () border)))
border)))
(defun vtwm-squeezed2-rightborder ()
(with (borderwidth 0
tile t
background vtwm-bordercolor
fsm (fsm-make vtwm-squeezed2-resize-behavior1)
plug-separator 0
border (with (tile ()
fsm (vtwm-borderbar-fsm)
background vtwm-bordercolor
bar-min-width vtwm-borderwidth
bar-max-width vtwm-borderwidth)
(bar-make )))
(if (not (= vtwm-squeezed-title-position 'right))
(bar-make (with (fsm ())
(bar-make border ())))
border)))
(: vtwm-squeezed2-resize-behavior1
(state-make
(on geometry-change (send-user-event 'bar-resize wob-parent))))
(: vtwm-squeezed2-resize-behavior2
(state-make
(on (user-event 'bar-resize)
(with (newsize (+ window-client-width (* 2 vtwm-borderwidth))
oldsize wob-width)
(if (not (= oldsize newsize))
(wob-tile (pixmap-make newsize
vtwm-borderwidth)))))))
(defun vtwm-squeezed2-bottomborder-fsm ()
(fsm-make
(state-make
vtwm-squeezed2-resize-behavior2
vtwm-borderbar-behavior
standard-title-behavior)))
(defun vtwm-squeezed2-bottomborder ()
(with (borderwidth 0
tile t
background vtwm-bordercolor
fsm ()
plug-separator 0
bottom (with (tile ()
fsm (vtwm-squeezed2-bottomborder-fsm)
background vtwm-bordercolor
bar-min-width vtwm-borderwidth
bar-max-width vtwm-borderwidth)
(plug-make (pixmap-make (+ window-client-width
(* 2 vtwm-borderwidth))
vtwm-borderwidth))))
(if (= vtwm-squeezed-title-position 'right)
(bar-make () bottom)
(= vtwm-squeezed-title-position 'center)
(bar-make () bottom ())
(bar-make bottom ()))))
(defun vtwm-squeezed-window2 ()
(with (inner-borderwidth 0
borderwidth 0
fsm (vtwm-titled-window-fsm)
borderpixel vtwm-bordercolor)
(window-make (vtwm-squeezed2-titlebar)
(vtwm-squeezed2-leftborder)
(vtwm-squeezed2-rightborder)
(vtwm-squeezed2-bottomborder)
())))