(setq x-gtk-use-window-move t) (defun frame-position-make-frame-arg (p-left p-top id) (let ((frame (make-frame `((name . ,id) (p-type . arg) (p-left . ,p-left) (left . ,p-left) (p-top . ,p-top) (top . ,p-top) (width . 80) (height . 20))))) frame)) (defun frame-position-make-frame-par (p-left p-top id) (let ((frame (make-frame `((name . ,id) (visibility . nil) (p-type . par) (p-left . ,p-left) (p-top . ,p-top))))) (modify-frame-parameters frame `((left . ,p-left) (top . ,p-top) (width . 80) (height . 20))) (make-frame-visible frame) frame)) (defun frame-position-make-frame-fun (p-left p-top id) (let ((frame (make-frame `((name . ,id) (visibility . nil) (p-type . fun) (p-left . ,p-left) (p-top . ,p-top))))) (set-frame-size frame 80 20) (set-frame-position frame p-left p-top) (make-frame-visible frame) frame)) (defconst frame-position-frame-list '()) (defun frame-position-make () (interactive) (let (frame) (dolist (frame (frame-list)) (set-frame-parameter frame 'p-type nil))) (setq frame-position-frame-list (list (frame-position-make-frame-arg 40 40 "1 Left Top") (frame-position-make-frame-arg 40 -40 "2 Left Bottom") (frame-position-make-frame-arg -40 40 "3 Right Top") (frame-position-make-frame-arg -40 -40 "4 Right Bottom") (frame-position-make-frame-par 40 40 "5 Left Top") (frame-position-make-frame-par 40 -40 "6 Left Bottom") (frame-position-make-frame-par -40 40 "7 Right Top") (frame-position-make-frame-par -40 -40 "8 Right Bottom") (frame-position-make-frame-fun 40 40 "9 Left Top") (frame-position-make-frame-fun 40 -40 "A Left Bottom") (frame-position-make-frame-fun -40 40 "B Right Top") (frame-position-make-frame-fun -40 -40 "C Right Bottom"))) ) (defvar display-pixel-width (display-pixel-width)) (defvar display-pixel-height (display-pixel-height)) (defun frame-position-test-1 (frame) (let* ((type (frame-parameter frame 'p-type)) (name (frame-parameter frame 'name)) (p-left (frame-parameter frame 'p-left)) (p-top (frame-parameter frame 'p-top)) (pos (frame-position frame)) (left (car pos)) (top (cdr pos)) (width (frame-pixel-width frame)) (height (frame-pixel-height frame)) (list (list type (cons 'name name) (cons 'p-left p-left) (cons 'p-top p-top) (cons 'left left) (cons 'top top) (cons 'width width) (cons 'height height)))) (when (< p-left 0) (let ((r-left (+ (- display-pixel-width) left width))) (setq list (nconc list (list (cons 'r-left r-left)))))) (when (< p-top 0) (let ((r-top (+ (- display-pixel-height) top height))) (setq list (nconc list (list (cons 'r-top r-top)))))) (YS list)) ) (defun frame-position-list () (interactive) (let ((list (list (cons 'display-pixel-height display-pixel-height) (cons 'display-pixel-width display-pixel-width))) frame) (dolist (frame (nreverse frame-position-frame-list)) (when (frame-parameter frame 'p-type) (setq list (cons (frame-position-test-1 frame) list)))) list)) ;; (eval-buffer) ;; (frame-position-make) ;; (insert (format "\n%s" (pp (nreverse (frame-position-list)))))