[Sawfish] Update StyleTab patch. |
[ Thread Index | Date Index | More lists.tuxfamily.org/sawfish Archives ]
Hi, I have add support for sticky viewport in StyleTab. Now if you select a window to add as tab the tabbar is "hightlight" with a custom color. I have add some links in StylTabs styles "Default, Glass, Reduce, Smoothly, WixDa" folders, without the new links the two pachtes will crash sawfish. Download complete styles here: http://mitglied.lycos.de/fuchur2004/StyleTab.tar.bz2 Now my todo/buglist for sawfish is empty :). -- Regards, Fuchur GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53 C116 E5BC 70D5 B8D7 B2B0
diff -urNad sawfish.orgi/lisp/sawfish/wm/tabs/tab.jl sawfish/lisp/sawfish/wm/tabs/tab.jl --- sawfish.orgi/lisp/sawfish/wm/tabs/tab.jl +++ sawfish/lisp/sawfish/wm/tabs/tab.jl @@ -170,6 +170,9 @@ (define-frame-class 'tabbar-vertical-bottom-edge `((bottom-edge . ,tab-bottom-edge)) t) + (define (emit-marked-hook w) + (call-window-hook 'window-state-change-hook w (list '(marked)))) + ;; This function is for interactive use. Use tab-group-window for lisp. (define (tab-add-to-group win) "Add a window to a tabgroup. Apply this command on a window, then @@ -178,11 +181,17 @@ (when (net-wm-window-type-normal-p win) (if marked-window (progn - (mapcar (lambda (w) (tab-group-window w win)) marked-window) + (mapcar (lambda (w) + (window-put w 'marked nil) + (emit-marked-hook w) + (tab-group-window w win)) marked-window) (default-cursor select-cursor) + (window-put win 'marked nil) (setq marked-window nil)) + (window-put win 'marked t) (default-cursor (get-cursor 'clock)) - (setq marked-window (cons win))))) + (setq marked-window (cons win))) + (emit-marked-hook win))) (define-command 'tab-add-to-group tab-add-to-group #:spec "%W") @@ -196,7 +205,10 @@ (setq marked-window (tab-group-window-index (car marked-window))) (tab-add-to-group win)) (default-cursor (get-cursor 'clock)) - (setq marked-window (tab-group-window-index win))))) + (setq marked-window (tab-group-window-index win)) + (mapcar (lambda (w) + (window-put w 'marked t) + (emit-marked-hook w)) marked-window)))) (define-command 'tabgroup-add-to-group tabgroup-add-to-group #:spec "%W")
--- sawfish.orgi/themes/StyleTab/theme.jl 2012-08-29 21:48:01.000000000 +0200 +++ sawfish/themes/StyleTab/theme.jl 2012-08-30 21:07:44.000000000 +0200 @@ -60,6 +60,18 @@ :options (Default Reduce Glass WixDa Smoothly Brown Darkblue Blue Pink Green) :after-set (lambda () (color-changed))) +(defcustom styletab-c:tabbar-marked t "Customize tabbar color if window marked to add as tab." + :group (appearance StyleTab:group) + :type boolean + :after-set (lambda () (botton-color-changed recolor-tab))) + +(defcustom styletab-c:tabbar-marked-color (get-color "#DF0000") + "Color of tabbar if window marked to add as tab." + :group (appearance StyleTab:group) + :type color + :depends styletab-c:tabbar-marked + :after-set (lambda () (botton-color-changed recolor-tab))) + (defcustom styletab-c:hightlight-tabbar nil "Also hightlighted tabbars." :group (appearance StyleTab:group) :type boolean @@ -777,7 +789,6 @@ (table-set styletab-c-frame-cache img image) image))) - (define (base-tables-images w) (let ((focus (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-f.png")) (if (eq styletab-c:custom-frame-colors t) @@ -795,6 +806,12 @@ (if (eq styletab-c:custom-frame-colors t) (get-recolor-dark 0 styletab-c:focus-frame-color) (get-recolor-dark 0 (get-color (nth 0 (proposals-colors))))))) + (focus-m (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-marked-f.png")) + (if (eq styletab-c:tabbar-marked t) + styletab-c:tabbar-marked-color + (if (eq styletab-c:custom-frame-colors t) + (get-recolor-bright 20 styletab-c:focus-frame-color) + (get-recolor-bright 20 (get-color (nth 0 (proposals-colors)))))))) (highl (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-h.png")) (if (eq styletab-c:custom-frame-colors t) (get-recolor-bright @@ -804,10 +821,29 @@ (if (eq styletab-c:hightlight-tabbar t) (/ (nth 2 (proposals-colors)) 2) 0) (get-color (nth 0 (proposals-colors))))))) + (highl-m (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-marked-h.png")) + (if (eq styletab-c:tabbar-marked t) + (if (eq styletab-c:hightlight-tabbar t) + (get-recolor-bright 20 styletab-c:tabbar-marked-color) + styletab-c:tabbar-marked-color) + (if (eq styletab-c:custom-frame-colors t) + (get-recolor-bright + (if (eq styletab-c:hightlight-tabbar t) + (/ (* styletab-c:active-hightlight-brighten 40) 2) 20) + styletab-c:focus-frame-color) (get-recolor-bright + (if (eq styletab-c:hightlight-tabbar t) + (/ (nth 2 (proposals-colors)) 2) 0) + (get-recolor-bright 20 (get-color (nth 0 (proposals-colors))))))))) (inact (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-i.png")) (if (eq styletab-c:custom-frame-colors t) (get-recolor-dark (* styletab-c:inactive-dimout 20) styletab-c:unfocus-frame-color) (get-recolor-dark (nth 1 (proposals-colors)) (get-color (nth 0 (proposals-colors))))))) + (inact-m (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-marked-i.png")) + (if (eq styletab-c:tabbar-marked t) + styletab-c:tabbar-marked-color + (if (eq styletab-c:custom-frame-colors t) + (get-recolor-bright 20 styletab-c:focus-frame-color) + (get-recolor-bright 20 (get-color (nth 0 (proposals-colors)))))))) (in-hi (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-ih.png")) (if (eq styletab-c:custom-frame-colors t) (get-recolor-bright @@ -818,9 +854,25 @@ (get-recolor-bright (if (eq styletab-c:hightlight-tabbar t) (- (/ (nth 3 (proposals-colors)) 2) (nth 1 (proposals-colors))) (- (nth 1 (proposals-colors)))) - (get-color (nth 0 (proposals-colors)))))))) + (get-color (nth 0 (proposals-colors))))))) + (in-hi-m (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-marked-ih.png")) + (if (eq styletab-c:tabbar-marked t) + (if (eq styletab-c:hightlight-tabbar t) + (get-recolor-bright 20 styletab-c:tabbar-marked-color) + styletab-c:tabbar-marked-color) + (if (eq styletab-c:custom-frame-colors t) + (get-recolor-bright + (if (eq styletab-c:hightlight-tabbar t) + (/ (* styletab-c:active-hightlight-brighten 40) 2) 20) + styletab-c:focus-frame-color) (get-recolor-bright + (if (eq styletab-c:hightlight-tabbar t) + (/ (nth 2 (proposals-colors)) 2) 0) + (get-recolor-bright 20 (get-color (nth 0 (proposals-colors)))))))))) (table-unset styletab-c-frame-cache w) - (table-set styletab-c-frame-cache w `((focused . ,focus) (highlighted .. ,highl) (inactive . ,inact) (inactive-highlighted . ,in-hi))))) + (table-set styletab-c-frame-cache w `((focused . ,focus) (highlighted .. ,highl) (inactive . ,inact) (inactive-highlighted . ,in-hi))) + (table-unset styletab-c-frame-cache (concat w "-m")) + (table-set styletab-c-frame-cache + (concat w "-m") `((focused . ,focus-m) (highlighted . ,highl-m) (inactive . ,inact-m) (inactive-highlighted . ,in-hi-m))))) (define (base-button-tables-images w) (let ((focus (do-recolor (do-make-get-image (concat (symbol-name styletab-c:styles) "/" w "-f.png")) @@ -1320,14 +1372,18 @@ ((class . tabbar-horizontal) (x-justify . ,(lambda (w) (- styletab-c:title-dimension 12))) (y-justify . ,(lambda (w) (+ (/ styletab-c:title-dimension 2) -7))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-tab"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"top-frame-tab-m") + (table-ref styletab-c-frame-cache '"top-frame-tab")))) (foreground . ,title-colors-images) (top-edge . ,title-edge-s) (height . ,title-height-s) (text . ,window-name)) ((class . tabbar-horizontal-left-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-tab-left-icon"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"top-frame-tab-left-icon-m") + (table-ref styletab-c-frame-cache '"top-frame-tab-left-icon")))) (cursor . hand2) (top-edge . ,title-edge-s) (height . ,title-height-s) @@ -1335,7 +1391,9 @@ (y-justify . 2) (x-justify . ,(lambda (w) (+ 3 (icon-edge w))))) ((class . tabbar-horizontal-right-edge) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-tab-right"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"top-frame-tab-right-m") + (table-ref styletab-c-frame-cache '"top-frame-tab-right")))) (width . ,tabbar-right-edge-width) (height . ,title-height-s) (top-edge . ,title-edge-s)) @@ -1356,14 +1414,18 @@ ((class . tabbar-horizontal) (x-justify . ,(lambda (w) (- styletab-c:title-dimension 12))) (y-justify . ,(lambda (w) (+ (/ styletab-c:title-dimension 2) -7))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-tab"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"bottom-frame-tab-m") + (table-ref styletab-c-frame-cache '"bottom-frame-tab")))) (foreground . ,title-colors-images) (bottom-edge . ,title-edge-s) (height . ,title-height-s) (text . ,window-name)) ((class . tabbar-horizontal-left-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-tab-left-icon"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"bottom-frame-tab-left-icon-m") + (table-ref styletab-c-frame-cache '"bottom-frame-tab-left-icon")))) (cursor . hand2) (bottom-edge . ,title-edge-s) (height . ,title-height-s) @@ -1371,7 +1433,9 @@ (y-justify . 2) (x-justify . ,(lambda (w) (+ 3 (icon-edge w))))) ((class . tabbar-horizontal-right-edge) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-tab-right"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"bottom-frame-tab-right-m") + (table-ref styletab-c-frame-cache '"bottom-frame-tab-right")))) (width . ,tabbar-right-edge-width) (height . ,title-height-s) (bottom-edge . ,title-edge-s)) @@ -1393,7 +1457,9 @@ (width . 2)) ((class . tabbar-vertical-top-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-tab-top"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"left-frame-tab-top-m") + (table-ref styletab-c-frame-cache '"left-frame-tab-top")))) (cursor . hand2) (height . ,(lambda (w) (+ 2 (title-height-s w)))) (width . ,title-height-s) @@ -1403,12 +1469,16 @@ ((class . tabbar-vertical) (x-justify . 12) (y-justify . center) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-tab"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"left-frame-tab-m") + (table-ref styletab-c-frame-cache '"left-frame-tab")))) (left-edge . ,title-edge-s) (width . ,title-height-s)) ((class . tabbar-vertical-bottom-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-tab-bottom-icon"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"left-frame-tab-bottom-icon-m") + (table-ref styletab-c-frame-cache '"left-frame-tab-bottom-icon")))) (left-edge . ,title-edge-s) (height . ,title-height-s) (width . ,title-height-s) @@ -1431,7 +1501,9 @@ (width . 2)) ((class . tabbar-vertical-top-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-tab-top"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"right-frame-tab-top-m") + (table-ref styletab-c-frame-cache '"right-frame-tab-top")))) (cursor . hand2) (height . ,(lambda (w) (+ 2 (title-height-s w)))) (width . ,title-height-s) @@ -1441,12 +1513,16 @@ ((class . tabbar-vertical) (x-justify . 12) (y-justify . center) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-tab"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"right-frame-tab-m") + (table-ref styletab-c-frame-cache '"right-frame-tab")))) (right-edge . ,title-edge-s) (width . ,title-height-s)) ((class . tabbar-vertical-bottom-edge) (foreground . ,(lambda (w) (window-icon w))) - (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-tab-bottom-icon"))) + (background . ,(lambda (w) (if (window-get w 'marked) + (table-ref styletab-c-frame-cache '"right-frame-tab-bottom-icon-m") + (table-ref styletab-c-frame-cache '"right-frame-tab-bottom-icon")))) (right-edge . ,title-edge-s) (height . ,title-height-s) (width . ,title-height-s) @@ -1658,7 +1734,8 @@ (define top-frame-sticky-button `((class . sticky-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-button"))) - (foreground . ,(lambda (w) (if (window-get w 'sticky) + (foreground . ,(lambda (w) (if (or (window-get w 'sticky) + (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"top-frame-unsticky-button") (table-ref styletab-c-frame-cache '"top-frame-sticky-button")))) (cursor . hand2) @@ -1669,7 +1746,8 @@ (define bottom-frame-sticky-button `((class . sticky-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-button"))) - (foreground . ,(lambda (w) (if (window-get w 'sticky) + (foreground . ,(lambda (w) (if (or (window-get w 'sticky) + (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"bottom-frame-unsticky-button") (table-ref styletab-c-frame-cache '"bottom-frame-sticky-button")))) (cursor . hand2) @@ -1680,7 +1758,8 @@ (define left-frame-sticky-button `((class . sticky-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-button"))) - (foreground . ,(lambda (w) (if (window-get w 'sticky) + (foreground . ,(lambda (w) (if (or (window-get w 'sticky) + (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"left-frame-unsticky-button") (table-ref styletab-c-frame-cache '"left-frame-sticky-button")))) (cursor . hand2) @@ -1691,7 +1770,8 @@ (define right-frame-sticky-button `((class . sticky-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-button"))) - (foreground . ,(lambda (w) (if (window-get w 'sticky) + (foreground . ,(lambda (w) (if (or (window-get w 'sticky) + (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"right-frame-unsticky-button") (table-ref styletab-c-frame-cache '"right-frame-sticky-button")))) (cursor . hand2) @@ -1730,7 +1810,7 @@ (define top-frame-prev-button `((class . previous-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"top-frame-prev-last-button") (table-ref styletab-c-frame-cache '"top-frame-prev-button")))) (cursor . hand2) @@ -1741,7 +1821,7 @@ (define bottom-frame-prev-button `((class . previous-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"bottom-frame-prev-last-button") (table-ref styletab-c-frame-cache '"bottom-frame-prev-button")))) (cursor . hand2) @@ -1752,7 +1832,7 @@ (define left-frame-prev-button `((class . previous-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"left-frame-prev-last-button") (table-ref styletab-c-frame-cache '"left-frame-prev-button")))) (cursor . hand2) @@ -1763,7 +1843,7 @@ (define right-frame-prev-button `((class . previous-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-first-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"right-frame-prev-last-button") (table-ref styletab-c-frame-cache '"right-frame-prev-button")))) (cursor . hand2) @@ -1774,7 +1854,7 @@ (define top-frame-next-button `((class . next-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"top-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"top-frame-next-last-button") (table-ref styletab-c-frame-cache '"top-frame-next-button")))) (cursor . hand2) @@ -1785,7 +1865,7 @@ (define bottom-frame-next-button `((class . next-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"bottom-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"bottom-frame-next-last-button") (table-ref styletab-c-frame-cache '"bottom-frame-next-button")))) (cursor . hand2) @@ -1796,7 +1876,7 @@ (define left-frame-next-button `((class . next-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"left-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"left-frame-next-last-button") (table-ref styletab-c-frame-cache '"left-frame-next-button")))) (cursor . hand2) @@ -1807,7 +1887,7 @@ (define right-frame-next-button `((class . next-workspace-button) (background . ,(lambda (w) (table-ref styletab-c-frame-cache '"right-frame-button"))) - (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky)) + (foreground . ,(lambda (w) (if (or (window-in-workspace-p w (- (get-last-workspace) 1)) (window-get w 'sticky) (window-get w 'sticky-viewport)) (table-ref styletab-c-frame-cache '"right-frame-next-last-button") (table-ref styletab-c-frame-cache '"right-frame-next-button")))) (cursor . hand2) @@ -2505,6 +2585,10 @@ (when (eq (window-get w 'current-frame-style) theme-name) (reframe-window w)))) +(define (reframe-marked w) + (when (eq (window-get w 'current-frame-style) theme-name) + (reframe-window w))) + ;; reframe-with-style, resize bottons ;; reset icon cache (define (clear-icon-cache-reframe) @@ -2571,6 +2655,7 @@ (add-frame-style theme-name get-frame) +(call-after-state-changed '(marked) reframe-marked) (call-after-state-changed '(maximized sticky fixed-position stacking) reframe-one) (add-hook 'remove-from-workspace-hook reframe-one)
Attachment:
signature.asc
Description: PGP signature
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |