/usr/share/sawfish/site-lisp/merlin/placement.jl is in sawfish-merlin-ugliness 1.3.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | ;; merlin/placement.jl -- opaque placement and with resize
;; version 0.4.1
;; Copyright (C) 2000-2001 merlin <merlin@merlin.org>
;; http://merlin.org/sawfish/
;; this is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; this is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with sawfish; see the file COPYING. If not, write to
;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
;;;;;;;;;;;;;;;;;;
;; INSTALLATION ;;
;;;;;;;;;;;;;;;;;;
;; Create a directory ~/.sawfish/lisp/merlin and then put this file there:
;; mkdir -p ~/.sawfish/lisp/merlin
;; mv placement.jl ~/.sawfish/lisp/merlin
;; Then add to your .sawfishrc:
;; (require 'merlin.placement)
;; Then restart sawfish and go to Customize->Placement and select
;; (opaque-)interactively(-with-resize)
;; - Henceforth, windows will be placed opaquely if you so choose.
;; - If you select -with-resize then if you place
;; a window with a mouse button and hold it down,
;; you can drag-resize the window (twm-style).
; BUGS: Sometimes windows get messed up by this. I don't know
; when or why so I don't know what to do about it.
; TODO: do I fire the after-place / before-resize hooks on go-resize
; TODO: do i set the cursor - resize-cursor-shape on go-resize
(define-structure merlin.placement
(export)
(open
rep
rep.system
sawfish.wm.placement
sawfish.wm.commands
sawfish.wm.commands.move-resize
sawfish.wm.events
sawfish.wm.misc
sawfish.wm.windows)
(define (merlin-placement-go-resize) ;; hackalicious
(setq move-resize-function 'resize)
(setq move-resize-old-x move-resize-x)
(setq move-resize-old-y move-resize-y))
(define (merlin-place-window w opaque resize)
(accept-x-input)
(when (window-id w)
(let
((move-outline-mode (if opaque 'opaque 'box))
(resize-edge-mode 'border-grab)
(ptr (query-pointer))
(siz (window-dimensions w))
(dims (window-frame-dimensions w)))
(move-window-to w (- (car ptr) (quotient (car dims) 2))
(- (cdr ptr) (quotient (cdr dims) 2)))
(when opaque
(hide-window w) (show-window w)) ;; hackalicious
(when resize
(bind-keys move-resize-map "Any-Click1" 'merlin-placement-go-resize))
(move-window-interactively w)
(when resize
(unbind-keys move-resize-map "Any-Click1")))))
(define (place-window-opaque-interactively w)
(merlin-place-window w t nil))
(define (place-window-opaque-interactively-with-resize w)
(merlin-place-window w t t))
(define (place-window-interactively-with-resize w)
(merlin-place-window w nil t))
(define-placement-mode 'opaque-interactively
place-window-opaque-interactively
#:for-normal t)
(define-placement-mode 'opaque-interactively-with-resize
place-window-opaque-interactively-with-resize
#:for-normal t)
(define-placement-mode 'interactively-with-resize
place-window-interactively-with-resize
#:for-normal t)
(define-command 'merlin-placement-go-resize
merlin-placement-go-resize))
|