[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [STUMP] Real fullscreen and centering windows.
From: |
Philippe Brochard |
Subject: |
Re: [STUMP] Real fullscreen and centering windows. |
Date: |
Sun, 26 Mar 2006 14:16:23 +0200 |
User-agent: |
Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) |
Shawn Betts writes:
> Philippe Brochard <address@hidden> writes:
>
>>> I suspect the solution to this problem is to iconize the unfocused
>>> windows (with some hacks to make transients and maxsize windows work).
>>>
>>> This has the advantage of not "waking them up" and causing my system
>>> to page like an angry monster :).
>>>
>> After some use, I dislike to have to draw a white or black window to
>> hide other windows in fullscreen (I think it's not a good thing in a
>> real program but *it works* :)
>
> Turns out iconizing/hiding windows wasn't too hard to implement. It's
> in CVS now. Let me know if you have problems.
>
Ok, I got it. Here is the new code => No need for background window!
Also, I have add a unhide-window in frame-raise-window because without
this some window stay hiden after changing a window to another frame.
-- core.lisp -----------------------------------------------
(defun frame-raise-window (s f w &optional (focus t))
"Raise the window w in frame f in screen s. if FOCUS is
T (default) then also focus the frame."
;; nothing to do when W is nil
(if w
(progn
(assert (eq (window-frame s w) f))
(setf (frame-window f) w)
(if focus
(focus-frame s f)
(progn
(setf (xlib:window-priority w) :top-if)
(unhide-window w)))) ; <- here
;; empty the frame
(setf (frame-window f) nil)))
------------------------------------------------------------
-- ~/.stumpwmrc --------------------------------------------
;;(defvar *maximized-frame-size* (make-frame :x 0 :y 0 :width 1024 :height 600))
;;; For a dual screen.
(defvar *maximized-frame-size* (make-frame :number -1 :x 1024 :y 0 :width 1024
:height 768))
(defvar *current-frame-size* (make-frame :number -1 :x 0 :y 0 :width 0 :height
0))
(defvar *current-maximized-frame* nil)
(defun maximize-frame (screen frame)
(when *current-maximized-frame*
(minimize-frame screen))
(setf (frame-x *current-frame-size*) (frame-x frame)
(frame-y *current-frame-size*) (frame-y frame)
(frame-width *current-frame-size*) (frame-width frame)
(frame-height *current-frame-size*) (frame-height frame))
(setf *current-maximized-frame* frame)
(setf (frame-x frame) (frame-x *maximized-frame-size*)
(frame-y frame) (frame-y *maximized-frame-size*)
(frame-width frame) (frame-width *maximized-frame-size*)
(frame-height frame) (frame-height *maximized-frame-size*))
(sync-frame-windows screen frame)
(dolist (win (screen-mapped-windows screen))
(hide-window win))
(focus-frame screen frame))
(defun minimize-frame (screen)
(when *current-maximized-frame*
(setf (frame-x *current-maximized-frame*) (frame-x *current-frame-size*)
(frame-y *current-maximized-frame*) (frame-y *current-frame-size*)
(frame-width *current-maximized-frame*) (frame-width
*current-frame-size*)
(frame-height *current-maximized-frame*) (frame-height
*current-frame-size*))
(sync-frame-windows screen *current-maximized-frame*)
(setf *current-maximized-frame* nil)
(dolist (frame (screen-frames screen))
(when (frame-window frame)
(unhide-window (frame-window frame))))
(focus-frame screen (screen-current-frame screen))))
(defun toggle-minmax-frame (screen frame)
(if *current-maximized-frame*
(minimize-frame screen)
(maximize-frame screen frame)))
(define-stumpwm-command "max" (screen)
(maximize-frame screen (screen-current-frame screen)))
(define-stumpwm-command "min" (screen)
(minimize-frame screen))
(define-stumpwm-command "toggle" (screen)
(toggle-minmax-frame screen (screen-current-frame screen)))
(define-stumpwm-command "bdb" (screen)
(setf (xlib:window-border (xlib:input-focus *display*))
(xlib:screen-black-pixel (screen-number screen))))
(define-stumpwm-command "bdw" (screen)
(setf (xlib:window-border (xlib:input-focus *display*))
(xlib:screen-white-pixel (screen-number screen))))
------------------------------------------------------------
Philippe
--
Philippe Brochard <address@hidden>
http://hocwp.free.fr
-=-= http://www.gnu.org/home.fr.html =-=-
Re: [STUMP] Real fullscreen and centering windows., Shawn Betts, 2006/03/24