Subject: Re: bug#74496: 30.0.91; fullscreen frame set with F11 is shifted when ctwm restarts

From: Van Ly <[email-masked]>
Date: Wed, 04 Dec 2024 05:47:41 +0000

martin rudalics <[email-masked]> writes:

>  >> - The size of fullscreen frames shrinks by 8 pixels unless there is a
>  >>     maximized frame present.
>  >
>  > That was the case when I was evaluating those expressions.  But, now
>  > fullboth and maximized frames will adjust up the bottom edge by 8
>  > pixels.
>
> Does this mean that restarting CWTM will always shrink all maximized and
> fullboth Emacs frames by 8 pixels?  What about fullheight frames?  And
> does the width of frames not shrink any more?

Below is another go to capture the state of the windowframes.

When I claimed the presence of a maximized full screen would let all
fullscreens stick across ctwm restart, that might've been me seeing an
illusion.

>From the data below, I see that a `maximized' full screen will leave a
gap at the bottom border.  The outer-size stays at `1914 . 1069'.  The
gap persists across ctwm restart.

In the case of ctwm restart on `F11 fullscreen' the windowframe
outer-size parameter goes from `1920 . 1080' to `1914 . 1069'.

Emacs 29.4 behaves the same.

More information, CTWM's window context menu for zoom, zoom-v, zoom-h
does the following to an initial frame

  outer-size frame parameter changes
  - 674  . 678  <= initial
  - 1914 . 1069    zoom
  - 674  . 1069    zoom-v
  - 1914 . 678     zoom-h

Hope this helps.

   // zoom zoom-v zoom-h BEGIN

 1 (frame-geometry)
 2 ;; initial window frame parameters
 3 ;; => ((outer-position 629 . 104) (outer-size 674 . 678) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 674 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 672 . 36) (internal-border-width . 1))
 4 
 5 (frame-geometry)
 6 ;; ctwm window zoom
 7 ;; => ((outer-position 0 . 0) (outer-size 1914 . 1069) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1914 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1912 . 36) (internal-border-width . 1))
 8 
 9 (frame-geometry)
10 ;; ctwm window zoom vertical
11 ;; => ((outer-position 629 . 0) (outer-size 674 . 1069) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 674 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 672 . 36) (internal-border-width . 1))
12 
13 (frame-geometry)
14 ;; ctwm window zoom horizontal
15 ;; => ((outer-position 0 . 104) (outer-size 1914 . 678) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1914 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1912 . 36) (internal-border-width . 1))

   // zoom zoom-v zoom-h END

   -- before ctwm restart F11 fullscreen BEGIN

     1  (frame-geometry)
     2  ;; => ((outer-position -3 . -3) (outer-size 1920 . 1080) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1920 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1918 . 36) (internal-border-width . 1))
     3  (frame-parameter nil 'fullscreen)
     4  ;; => fullboth

     1  $ xprop
     2  CTWM_OTP_AFLAGS(INTEGER) = 4
     3  _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
     4  XdndAware(ATOM) = BITMAP
     5  WM_STATE(WM_STATE):
     6                  window state: Normal
     7                  icon window: 0x0
  => 8  _NET_WM_STATE(ATOM) = _NET_WM_STATE_FULLSCREEN
     9  _NET_WM_DESKTOP(CARDINAL) = 1
    10  WM_OCCUPATION(STRING) = "2"
    11  _NET_WM_SYNC_FENCES(CARDINAL) = 52428953, 52428954
    12  _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 52428952
    13  _NET_WM_PID(CARDINAL) = 1943
    14  _NET_WM_ICON_NAME(UTF8_STRING) = "*scratch*"
    15  _NET_WM_NAME(UTF8_STRING) = "*scratch*"
    16  WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF, _NET_WM_PING, _NET_WM_SYNC_REQUEST
    17  WM_CLIENT_LEADER(WINDOW): window id # 0x3200088
    18  WM_LOCALE_NAME(STRING) = "en_AU.UTF-8"
    19  WM_CLASS(STRING) = "emacs", "Emacs"
    20  WM_HINTS(WM_HINTS):
    21                  Client accepts input or input focus: True
    22                  Initial state is Normal State.
    23                  bitmap id # to use for icon: 0x320002d
    24                  bitmap id # of mask for icon: 0x320002f
    25  WM_NORMAL_HINTS(WM_SIZE_HINTS):
    26                  user specified size: 674 by 678
    27                  program specified minimum size: 34 by 66
    28                  program specified resize increment: 8 by 17
    29                  program specified base size: 34 by 66
    30                  window gravity: NorthWest
    31  WM_CLIENT_MACHINE(STRING) = "xxx"
    32  WM_ICON_NAME(STRING) = "*scratch*"
    33  WM_NAME(STRING) = "*scratch*"

   -- before ctwm restart F11 fullscreen END

   == after ctwm restart F11 fullscreen BEGIN

     1  (frame-geometry)
     2  ;; => ((outer-position -3 . -3) (outer-size 1914 . 1069) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1914 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1912 . 36) (internal-border-width . 1))
     3  (frame-parameter nil 'fullscreen)
     4  ;; => nil

     1  $ xprop
     2  CTWM_OTP_AFLAGS(INTEGER) = 4
     3  _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
     4  XdndAware(ATOM) = BITMAP
     5  WM_STATE(WM_STATE):
     6                  window state: Normal
     7                  icon window: 0x0
  => 8  _NET_WM_STATE(ATOM) =
     9  _NET_WM_DESKTOP(CARDINAL) = 1
    10  WM_OCCUPATION(STRING) = "2"
    11  _NET_WM_SYNC_FENCES(CARDINAL) = 52428953, 52428954
    12  _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 52428952
    13  _NET_WM_PID(CARDINAL) = 1943
    14  _NET_WM_ICON_NAME(UTF8_STRING) = "*scratch*"
    15  _NET_WM_NAME(UTF8_STRING) = "*scratch*"
    16  WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF, _NET_WM_PING, _NET_WM_SYNC_REQUEST
    17  WM_CLIENT_LEADER(WINDOW): window id # 0x3200088
    18  WM_LOCALE_NAME(STRING) = "en_AU.UTF-8"
    19  WM_CLASS(STRING) = "emacs", "Emacs"
    20  WM_HINTS(WM_HINTS):
    21                  Client accepts input or input focus: True
    22                  Initial state is Normal State.
    23                  bitmap id # to use for icon: 0x320002d
    24                  bitmap id # of mask for icon: 0x320002f
    25  WM_NORMAL_HINTS(WM_SIZE_HINTS):
    26                  user specified size: 674 by 678
    27                  program specified minimum size: 34 by 66
    28                  program specified resize increment: 8 by 17
    29                  program specified base size: 34 by 66
    30                  window gravity: NorthWest
    31  WM_CLIENT_MACHINE(STRING) = "xxx"
    32  WM_ICON_NAME(STRING) = "*scratch*"
    33  WM_NAME(STRING) = "*scratch*"

   == after ctwm restart F11 fullscreen END

   -- before ctwm restart zoom maximized full screen BEGIN

     1  (frame-geometry)
     2  ;; => ((outer-position 0 . 0) (outer-size 1914 . 1069) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1914 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1912 . 36) (internal-border-width . 1))
     3  (frame-parameter nil 'fullscreen)
     4  ;; => maximized

     1  $ xprop
     2  CTWM_OTP_AFLAGS(INTEGER) = 4
     3  _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
     4  XdndAware(ATOM) = BITMAP
     5  WM_STATE(WM_STATE):
     6                  window state: Normal
     7                  icon window: 0x0
  => 8  _NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ
     9  _NET_WM_DESKTOP(CARDINAL) = 2
    10  WM_OCCUPATION(STRING) = "3"
    11  _NET_WM_SYNC_FENCES(CARDINAL) = 52429087, 52429088
    12  _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 52429086
    13  _NET_WM_PID(CARDINAL) = 1943
    14  _NET_WM_ICON_NAME(UTF8_STRING) = "*scratch*"
    15  _NET_WM_NAME(UTF8_STRING) = "*scratch*"
    16  WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF, _NET_WM_PING, _NET_WM_SYNC_REQUEST
    17  WM_CLIENT_LEADER(WINDOW): window id # 0x320010e
    18  WM_LOCALE_NAME(STRING) = "en_AU.UTF-8"
    19  WM_CLASS(STRING) = "emacs", "Emacs"
    20  WM_HINTS(WM_HINTS):
    21                  Client accepts input or input focus: True
    22                  Initial state is Normal State.
    23                  bitmap id # to use for icon: 0x320002d
    24                  bitmap id # of mask for icon: 0x320002f
    25  WM_NORMAL_HINTS(WM_SIZE_HINTS):
    26                  user specified size: 674 by 678
    27                  program specified minimum size: 34 by 66
    28                  program specified resize increment: 8 by 17
    29                  program specified base size: 34 by 66
    30                  window gravity: NorthWest
    31  WM_CLIENT_MACHINE(STRING) = "xxx"
    32  WM_ICON_NAME(STRING) = "*scratch*"
    33  WM_NAME(STRING) = "*scratch*"

   -- before ctwm restart zoom maximized full screen END

   == after ctwm restart zoom maximized full screen BEGIN

     1  (frame-geometry)
     2  ;; => ((outer-position 0 . 0) (outer-size 1914 . 1069) (external-border-size -3 . -3) (outer-border-width . 0) (title-bar-size 0 . 6) (menu-bar-external . t) (menu-bar-size 1914 . 28) (tab-bar-size 0 . 0) (tool-bar-external) (tool-bar-position . top) (tool-bar-size 1912 . 36) (internal-border-width . 1))
     3  (frame-parameter nil 'fullscreen)
     4  ;; => nil

     1  $ xprop
     2  CTWM_OTP_AFLAGS(INTEGER) = 4
     3  _MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
     4  XdndAware(ATOM) = BITMAP
     5  WM_STATE(WM_STATE):
     6                  window state: Normal
     7                  icon window: 0x0
  => 8  _NET_WM_STATE(ATOM) =
     9  _NET_WM_DESKTOP(CARDINAL) = 2
    10  WM_OCCUPATION(STRING) = "3"
    11  _NET_WM_SYNC_FENCES(CARDINAL) = 52429087, 52429088
    12  _NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 52429086
    13  _NET_WM_PID(CARDINAL) = 1943
    14  _NET_WM_ICON_NAME(UTF8_STRING) = "*scratch*"
    15  _NET_WM_NAME(UTF8_STRING) = "*scratch*"
    16  WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, WM_SAVE_YOURSELF, _NET_WM_PING, _NET_WM_SYNC_REQUEST
    17  WM_CLIENT_LEADER(WINDOW): window id # 0x320010e
    18  WM_LOCALE_NAME(STRING) = "en_AU.UTF-8"
    19  WM_CLASS(STRING) = "emacs", "Emacs"
    20  WM_HINTS(WM_HINTS):
    21                  Client accepts input or input focus: True
    22                  Initial state is Normal State.
    23                  bitmap id # to use for icon: 0x320002d
    24                  bitmap id # of mask for icon: 0x320002f
    25  WM_NORMAL_HINTS(WM_SIZE_HINTS):
    26                  user specified size: 674 by 678
    27                  program specified minimum size: 34 by 66
    28                  program specified resize increment: 8 by 17
    29                  program specified base size: 34 by 66
    30                  window gravity: NorthWest
    31  WM_CLIENT_MACHINE(STRING) = "xxx"
    32  WM_ICON_NAME(STRING) = "*scratch*"
    33  WM_NAME(STRING) = "*scratch*

   == after ctwm restart zoom maximized full screen END

-- 
vl