stumpwm-devel
[Top][All Lists]
Advanced

[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 =-=-




reply via email to

[Prev in Thread] Current Thread [Next in Thread]