bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#19413: 24.4; (desktop-save-mode 1) save frame as page and desktop st


From: martin rudalics
Subject: bug#19413: 24.4; (desktop-save-mode 1) save frame as page and desktop sticky (_NET_WM_STATE_STICKY) when close Emacs shaded, (setq desktop-restore-frames nil) fix issue.
Date: Sat, 20 Dec 2014 15:50:14 +0100

> When frame sticky (Fvwm decorate it especially) I get "t". For non-sticky I
> get "nil".

So the value of sticky corresponds to what you see on screen.  Correct?

> I always get normally started Emacs unless I shaded Emacs window. When I close
> shaded Emacs ~/.emacs.desktop changed to:
>
> (setq desktop-saved-frameset [frameset 1 (21653 24375 351017 568000) (desktop . "206") "user@desktop.home.int" nil nil ((((font-backend xft x) (font . 
"-Misc-Fixed-normal-normal-normal-*-14-*-*-*-c-70-iso10646-1") (font-parameter . "-misc-fixed-medium-r-normal-*-14-*-*-*-c-*-iso10646-1") (border-width . 0) 
(internal-border-width . 0) (right-divider-width . 0) (bottom-divider-width . 0) (vertical-scroll-bars . right) (foreground-color . "black") (background-color . 
"white") (mouse-color . "black") (border-color . "black") (screen-gamma) (line-spacing) (left-fringe . 10) (right-fringe . 11) (scroll-bar-foreground) 
(scroll-bar-background . "grey75") (menu-bar-lines . 1) (tool-bar-lines . 1) (title) (wait-for-wm . t) (fullscreen) (tool-bar-position . top) (icon-type . t) (auto-raise) 
(auto-lower) (cursor-type . box) (scroll-bar-width . 16) (alpha) (horizontal-scroll-bars . t) (display-type . color) (background-mode . light) (cursor-color . "black") 
(environment) (frameset--id . "A948
-AB72-D73D-287C") (frameset--mini t . t) (modeline . t) (minibuffer . t) (unsplittable) (icon-name) (visibility . t) (display . ":0") (explicit-name) (sticky) (height . 35) (width . 80) (left . 1240) (top . 28)) ((min-height . 8) (min-width . 10) (min-height-ignore . 4) (min-width-ignore . 8) (min-height-safe . 2) (min-width-safe . 2) (min-pixel-height . 112) (min-pixel-width . 70) (min-pixel-height-ignore . 56) (min-pixel-width-ignore . 56) (min-pixel-height-safe . 28) (min-pixel-width-safe . 14)) vc (pixel-width . 597) (pixel-height . 476) (total-width . 85) (total-height . 34) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 597) (pixel-height . 238) (total-width . 85) (total-height . 17) (normal-height . 0.5) (normal-width . 1.0) (buffer "mc.ext" (selected) (hscroll . 0) (fringes 10 11 nil) (margins nil) (scroll-bars 16 3 t nil) (vscroll . 0) (dedicated) (point . 5457) (start . 5293))) (leaf (last . t) (pixel-width . 597) (pixel-height . 238) (total-width . 85) (total-height . 17) (normal-height . 0.5) (normal-width . 1.0) (buffer "*Messages*" (selected . t) (hscroll . 0) (fringes 10 11 nil) (margins nil) (scroll-bars 16 3 t nil) (vscroll . 0) (dedicated) (point . 284) (start . 1)))))])
>
> You can see difference in "(sticky)" above. New "emacs --no-site-file" opened
> as sticky and when I close Emacs ~/.emacs.desktop changed to:
>
> (setq desktop-saved-frameset [frameset 1 (21653 24557 165658 111000) (desktop . "206") "user@desktop.home.int" nil nil ((((font-backend xft x) (font . 
"-Misc-Fixed-normal-normal-normal-*-14-*-*-*-c-70-iso10646-1") (font-parameter . "-misc-fixed-medium-r-normal-*-14-*-*-*-c-*-iso10646-1") (border-width . 0) 
(internal-border-width . 0) (right-divider-width . 0) (bottom-divider-width . 0) (vertical-scroll-bars . right) (foreground-color . "black") (background-color . 
"white") (mouse-color . "black") (border-color . "black") (screen-gamma) (line-spacing) (left-fringe . 10) (right-fringe . 11) (scroll-bar-foreground) 
(scroll-bar-background . "grey75") (menu-bar-lines . 1) (tool-bar-lines . 1) (title) (wait-for-wm . t) (fullscreen) (tool-bar-position . top) (icon-type . t) (auto-raise) 
(auto-lower) (cursor-type . box) (scroll-bar-width . 16) (alpha) (horizontal-scroll-bars . t) (display-type . color) (background-mode . light) (cursor-color . "black") 
(environment) (frameset--id . "A948
-AB72-D73D-287C") (frameset--mini t . t) (modeline . t) (minibuffer . t) (unsplittable) (icon-name) (visibility . t) (display . ":0") (explicit-name) (sticky . t) (height . 35) (width . 80) (left . 1240) (top . 28)) ((min-height . 8) (min-width . 10) (min-height-ignore . 4) (min-width-ignore . 8) (min-height-safe . 2) (min-width-safe . 2) (min-pixel-height . 112) (min-pixel-width . 70) (min-pixel-height-ignore . 56) (min-pixel-width-ignore . 56) (min-pixel-height-safe . 28) (min-pixel-width-safe . 14)) vc (pixel-width . 597) (pixel-height . 476) (total-width . 85) (total-height . 34) (normal-height . 1.0) (normal-width . 1.0) (combination-limit) (leaf (pixel-width . 597) (pixel-height . 238) (total-width . 85) (total-height . 17) (normal-height . 0.5) (normal-width . 1.0) (buffer "mc.ext" (selected) (hscroll . 0) (fringes 10 11 nil) (margins nil) (scroll-bars 16 3 t nil) (vscroll . 0) (dedicated) (point . 5457) (start . 5293))) (leaf (last . t) (pixel-width . 597) (pixel-height . 238) (total-width . 85) (total-height . 17) (normal-height . 0.5) (normal-width . 1.0) (buffer "*Messages*" (selected . t) (hscroll . 0) (fringes 10 11 nil) (margins nil) (scroll-bars 16 3 t nil) (vscroll . 0) (dedicated) (point . 284) (start . 1)))))])
>
> You can see difference in "(sticky . t)" above. Next rerun leave
> ~/.emacs.desktop without changes.

To get it right: You first close Emacs with a shaded frame and if you
afterwards look at the desktop file it has (sticky) in it.  If you now
restart Emacs and close it again, the desktop file has (sticky . t).

> So there are two problems:
>
>   1) Emacs instead saving shaded window attribute add "(sticky)" to 
~/.emacs.desktop

So if you do not have a desktop file initially but enable
`desktop-save-mode' and then

(1) close Emacs with a shaded frame, and

(2) close Emacs with an unshaded frame

the difference is a (sticky) entry for (1) and no such entry for (2).
Is that correct?

>   2) (desktop-read) wrongly apply (sticky), and (sticky . t) and (sticky . 
nil)
>   - as always sticky.

This sounds like a reasonable explanation.  x_net_wm_state has

/**   store_frame_param (f, Qsticky, sticky ? Qt : Qnil); **/

without any further comment, maybe it's related.  Does Emacs process

(set-frame-parameter nil 'sticky ...)

correctly on your system without desktop saving involved?

> I check /src/xterm.h:
>
>    /* Atoms dealing with EWMH (i.e. _NET_...) */
>    Atom Xatom_net_wm_state, Xatom_net_wm_state_fullscreen,
>      Xatom_net_wm_state_maximized_horz, Xatom_net_wm_state_maximized_vert,
>      Xatom_net_wm_state_sticky, Xatom_net_wm_state_hidden,
>      Xatom_net_frame_extents,
>      Xatom_net_current_desktop, Xatom_net_workarea;
>
> There are no _NET_WM_STATE_SHADED that defined in:
>
>    
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#idm140130317598336
>      _NET_WM_STATE
>
> which say:
>
>    Possible atoms are:
>
>    _NET_WM_STATE_MODAL, ATOM
>    _NET_WM_STATE_STICKY, ATOM
>    _NET_WM_STATE_MAXIMIZED_VERT, ATOM
>    _NET_WM_STATE_MAXIMIZED_HORZ, ATOM
>    _NET_WM_STATE_SHADED, ATOM
>    _NET_WM_STATE_SKIP_TASKBAR, ATOM
>    _NET_WM_STATE_SKIP_PAGER, ATOM
>    _NET_WM_STATE_HIDDEN, ATOM
>    _NET_WM_STATE_FULLSCREEN, ATOM
>    _NET_WM_STATE_ABOVE, ATOM
>    _NET_WM_STATE_BELOW, ATOM
>    _NET_WM_STATE_DEMANDS_ATTENTION, ATOM

We have to possibilities to deal with these: Either we wait for Jan to
return from his voyage or you fix these issues yourself.  Given your
findings above I'm quite confident that you could do it.

martin





reply via email to

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