On Mon, Jun 06 2011, Jan Djärv wrote: > Julien Danjou skrev 2011-06-06 10.38: >> On Fri, Jun 03 2011, Jan Djärv wrote: >> >>> This might not behave as you wish. Some window managers (metacity at least) >>> apply struts to all windows made by an application if one window has struts >>> set. For Emacs that would mean that if you set struts on one frame, it >>> applies to all frames. >> >> I don't believe you. That sounds like an extra amount of code to write >> that would break EWMH explicitely. Quickly reading Metacity source code >> makes me believe that you're wrong too. >> >> (Now, I don't have time to find/write an app to check that, so, one of >> us is wrong! :-) >> > > I tried this with Emacs and it does behave the way I described. If it is a > metacity bug or not, I don't know. So we may not be talking about the same thing. But I just tried (thanks for the tip, I know see that my old branch is useless) using your hint: #+begin_src: emacs-lisp (defun make-special-frame () (let* ((width 200) (height 500) (ff (make-frame `((visibility . nil) (width . 20))))) (x-change-window-property "_NET_WM_STRUT_PARTIAL" `(,width 0 0 0 0 ,height 0 0 0 0 0 0) ff "CARDINAL" 32 t) (x-change-window-property "_NET_WM_WINDOW_TYPE" '("_NET_WM_WINDOW_TYPE_DOCK") ff "ATOM" 32 t) (make-frame-visible ff))) #+end_src This, under awesome and Metacity, creates a new frame and reserves 50 pixels on the left of the screen for the frame. It does not affect any other Emacs frame. Both awesome and metacity drops the window decoration because they recognise the window as a dock, and reserve the space. I think this is exactly what Ted wants, except portability. I just miss a way to set the Emacs frame width and height in pixel. -- Julien Danjou ❱ http://julien.danjou.info