| Re: [Sawfish] Re: Add compton module to sawfish |
[ Thread Index | Date Index | More lists.tuxfamily.org/sawfish Archives ]
Hi, On Sat, 14 Sep 2013 08:30:29 +0200 wrote Christopher Roy Bratusek <nano@xxxxxxxxxxxxx>: >> >> Currently testing, made two changes: >> >> - renamed window matcher from never-shadow to no-shadow >> - renamed releas-tab to release-tab (typo in function name) >> >> Regards, >> Chris > >Have not yet tracked down, but compton does not start for me with >this update (only default settings). Gonna check where the issue is >the next days. > >Chris This was a bug. Compton detect shaped/shaded windows other as sawfish. Windows with tabs for compton are shaped/shaded. And if you enable "Don’t draw shadows on shaped windows." it's also apply by tabs and overwrite "Force shadows by tabbed windows." I fix that, disable "--shadow-ignore-shaped" from compton and enable it with the "sawfish way". Also fix typos with this patch. -- Regards, Fuchur GPG Fingerprint: CA3B 8204 5B3E 6D48 6D53 C116 E5BC 70D5 B8D7 B2B0
diff -urNad sawfish.orig/lisp/sawfish/wm/prg/compton.jl sawfish/lisp/sawfish/wm/prg/compton.jl
--- sawfish.orig/lisp/sawfish/wm/prg/compton.jl 2013-09-14 11:31:02.000000000 +0200
+++ sawfish/lisp/sawfish/wm/prg/compton.jl 2013-09-14 13:19:53.000000000 +0200
@@ -58,6 +58,36 @@
:type boolean
:after-set (lambda () (switch-opacity)))
+ (defcustom shadows-main-win nil "Only draw shadows on normal windows and dialogs."
+ :depends opacity-enable
+ :group (appearance window-effects)
+ :type boolean
+ :after-set (lambda () (switch-opacity)))
+
+ (defcustom shadows-disable-shaped nil "Donâ??t draw shadows on shaped windows."
+ :depends opacity-enable
+ :group (appearance window-effects)
+ :type boolean
+ :after-set (lambda () (switch-opacity)))
+
+ (defcustom shadows-disable-dad nil "Donâ??t draw shadows on drag-and-drop windows."
+ :depends opacity-enable
+ :group (appearance window-effects)
+ :type boolean
+ :after-set (lambda () (switch-opacity)))
+
+ (defcustom shadows-disable-menu nil "Donâ??t draw shadows on menus."
+ :depends opacity-enable
+ :group (appearance window-effects)
+ :type boolean
+ :after-set (lambda () (switch-opacity)))
+
+ (defcustom force-tabbed nil "Force shadows by tabbed windows."
+ :depends opacity-enable
+ :group (appearance window-effects)
+ :type boolean
+ :after-set (lambda () (switch-opacity)))
+
(defcustom top-offset -15 "The top offset for shadows. (Default -15)"
:depends opacity-enable
:group (appearance window-effects)
@@ -140,17 +170,17 @@
:options (0 2 4 6 8 10 12 14 16 18 20 25 30 35 40 45 50)
:after-set (lambda () (switch-opacity)))
- (defcustom menu-opacity 10 "The opacity for menus. (Default 10)"
+ (defcustom zero-mask nil "Zero the part of the shadow's mask behind the window (experimental)."
:depends opacity-enable
:group (appearance window-effects)
- :type symbol
- :options (5 6 7 8 9 10)
+ :type boolean
:after-set (lambda () (switch-opacity)))
- (defcustom zero-mask nil "Zero the part of the shadow's mask behind the window (experimental)."
+ (defcustom menu-opacity 10 "The opacity for menus. (Default 10)"
:depends opacity-enable
:group (appearance window-effects)
- :type boolean
+ :type symbol
+ :options (5 6 7 8 9 10)
:after-set (lambda () (switch-opacity)))
(defcustom opacity-by-move 75 "Opacity by move. (Default 75)"
@@ -207,11 +237,17 @@
;; windows custom-settings entry
(define-match-window-property 'opacity 'appearance '(number 0 100 100))
+ (define-match-window-property 'no-shadows 'appearance 'boolean)
+ ;; info: comton crash with emty values
+ ;; set allways somthing, overwrite later
(define (shadows) (if shadows-enable '-c '-e1))
(define (fade) (if fade-enable '-f '-e1))
(define (avoid) (if avoid-shadows '-C '-e1))
(define (zero) (if zero-mask '-z '-e1))
+ (define (dad) (if shadows-disable-dad '-G '-e1))
+ (define (smenu) (if shadows-disable-menu (concat "window_type *= 'menu'") (concat "window_type *= 'nil'")))
+
(define (trans) (/ (+ 0.00 translucency) 100))
(define (fade-i) (/ (+ 0.00 fade-in) 1000))
(define (fade-o) (/ (+ 0.00 fade-out) 1000))
@@ -225,6 +261,8 @@
(c-fade (fade))
(c-avoid (avoid))
(c-zero (zero))
+ (c-smenu (smenu))
+ (c-dad (dad))
(c-trans (trans))
(c-fade-i (fade-i))
(c-fade-o (fade-o))
@@ -237,10 +275,11 @@
(stop-compton)
(setq %compton-proc (make-process))
(start-process %compton-proc "compton" (format nil "%s" c-shadows) (format nil "%s" c-fade) (format nil "%s" c-avoid) (format nil "%s" c-zero)
- "-r" (number->string blur-radius) "-o" (format nil "%s" c-trans) "-l" (number->string left-offset)
- "-t" (number->string top-offset) "-I" (format nil "%s" c-fade-i) "-O" (format nil "%s" c-fade-o) "-D" (number->string fade-time)
- "-m" (format nil "%s" c-menu-o) "--shadow-red" (format nil "%s" c-red) "--shadow-green" (format nil "%s" c-green)
- "--shadow-blue" (format nil "%s" c-blue))))
+ "-r" (number->string blur-radius) "-o" (format nil "%s" c-trans) "-l" (number->string left-offset)
+ "-t" (number->string top-offset) "-I" (format nil "%s" c-fade-i) "-O" (format nil "%s" c-fade-o) "-D" (number->string fade-time)
+ "-m" (format nil "%s" c-menu-o) "--shadow-red" (format nil "%s" c-red) "--shadow-green" (format nil "%s" c-green)
+ "--shadow-blue" (format nil "%s" c-blue) (format nil "%s" c-dad) "--xinerama-shadow-crop" "--detect-rounded-corners"
+ "--shadow-exclude" (concat c-smenu) "--shadow-exclude" "_COMPTON_SHADOW:32c = 0")))
(define (stop-compton)
"Stop compton, if running."
@@ -250,9 +289,6 @@
;;0xffffffff opacity 0%
;;4294967294.00 opacity 0%
;;0x00000000 opacity 100%
- (define (get-id w)
- (window-frame-id w))
-
(define (get-opacity w)
(* (/ 4294967294.00 100) w))
@@ -260,22 +296,38 @@
(if (get-x-property w '_NET_WM_WINDOW_TYPE)
(aref (nth 2 (get-x-property w '_NET_WM_WINDOW_TYPE)) 0)))
- (define (dim-window id opacity)
- "Set _NET_WM_WINDOW_OPACITY to opacity for window id"
+ (define (window-shadow w)
+ "Set _COMPTON_SHADOW to exclude shadow for window w"
+ (if (or (and (window-get w 'tabbed)
+ (not force-tabbed))
+ (and (window-get w 'shaded)
+ shadows-disable-shaped)
+ (and (not shadows-enable))
+ (window-get w 'no-shadows)
+ (and (if shadows-main-win
+ (and (not (eq (get-type w) '_NET_WM_WINDOW_TYPE_DIALOG))
+ (not (eq (get-type w) '_NET_WM_WINDOW_TYPE_NORMAL))))))
+ (set-x-property (window-frame-id w) '_COMPTON_SHADOW (make-vector 1 0) 'CARDINAL 32)
+ (delete-x-property (window-frame-id w) '_COMPTON_SHADOW))
+ (sync-server))
+
+ (define (dim-window w opacity)
+ "Set _NET_WM_WINDOW_OPACITY to opacity for window w"
+ (window-shadow w)
(if (eq opacity '0)
- (delete-x-property id '_NET_WM_WINDOW_OPACITY)
- (set-x-property id '_NET_WM_WINDOW_OPACITY (make-vector 1 opacity) 'CARDINAL 32))
+ (delete-x-property (window-frame-id w) '_NET_WM_WINDOW_OPACITY)
+ (set-x-property (window-frame-id w) '_NET_WM_WINDOW_OPACITY (make-vector 1 opacity) 'CARDINAL 32))
(sync-server))
(define (window-opacity w)
(if (window-get w 'opacity)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity '100))
- (dim-window (get-id w) (get-opacity (window-get w 'opacity))))
+ (dim-window w (get-opacity '100))
+ (dim-window w (get-opacity (window-get w 'opacity))))
(if (window-get w 'tabbed)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity '100))
- (dim-window (get-id w) (get-opacity opacity-tabbed-i)))
+ (dim-window w (get-opacity '100))
+ (dim-window w (get-opacity opacity-tabbed-i)))
(let ((type-is (get-type w)))
(if (or (eq type-is '_NET_WM_WINDOW_TYPE_DIALOG)
(eq type-is '_NET_WM_WINDOW_TYPE_NOTIFY)
@@ -284,23 +336,23 @@
(progn
(if (eq type-is '_NET_WM_WINDOW_TYPE_DIALOG)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity '100))
- (dim-window (get-id w) (get-opacity opacity-dialog-i))))
+ (dim-window w (get-opacity '100))
+ (dim-window w (get-opacity opacity-dialog-i))))
(if (eq type-is '_NET_WM_WINDOW_TYPE_NOTIFY)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity opacity-notify-i))
- (dim-window (get-id w) (get-opacity opacity-notify-i))))
+ (dim-window w (get-opacity opacity-notify-i))
+ (dim-window w (get-opacity opacity-notify-i))))
(if (eq type-is '_NET_WM_WINDOW_TYPE_DOCK)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity opacity-dock-a))
- (dim-window (get-id w) (get-opacity opacity-dock-i))))
+ (dim-window w (get-opacity opacity-dock-a))
+ (dim-window w (get-opacity opacity-dock-i))))
(if (eq type-is '_NET_WM_WINDOW_TYPE_DESKTOP)
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity '100))
- (dim-window (get-id w) (get-opacity opacity-desktop-i)))))
+ (dim-window w (get-opacity '100))
+ (dim-window w (get-opacity opacity-desktop-i)))))
(if (eq (input-focus) w)
- (dim-window (get-id w) (get-opacity '100))
- (dim-window (get-id w) (get-opacity opacity-normal-i))))))))
+ (dim-window w (get-opacity '100))
+ (dim-window w (get-opacity opacity-normal-i))))))))
(define (update-opacity type)
(map-windows (lambda (w)
@@ -330,14 +382,24 @@
(map-windows (lambda (w)
(if opacity-enable
(window-opacity w)
- (dim-window (get-id w) (get-opacity '100))))))
+ (dim-window w (get-opacity '100))))))
(define (before-move w)
- (dim-window (get-id w) (get-opacity opacity-by-move)))
+ (dim-window w (get-opacity opacity-by-move)))
(define (before-resize w)
- (dim-window (get-id w) (get-opacity opacity-by-resize)))
+ (dim-window w (get-opacity opacity-by-resize)))
+
+ (define (tab-release w)
+ (if (eq w 'tab-release-window)
+ (map-windows (lambda (win)
+ (if opacity-enable
+ (window-opacity win)
+ (dim-window win (get-opacity '100)))))))
+ (add-hook 'post-command-hook (lambda (w) (if opacity-enable (tab-release w))))
+ (add-hook 'after-add-window-hook (lambda (w) (if opacity-enable (window-opacity w))))
+ (add-hook 'shade-window-hook (lambda (w) (if opacity-enable (window-opacity w))))
(add-hook 'focus-in-hook (lambda (w) (if opacity-enable (window-opacity w))))
(add-hook 'focus-out-hook (lambda (w) (if opacity-enable (window-opacity w))))
(add-hook 'before-move-hook (lambda (w) (if opacity-enable (before-move w))))
Attachment:
signature.asc
Description: PGP signature
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |