Code Monkey home page Code Monkey logo

fvwm3's People

Contributors

d-e-e-p avatar danespen avatar djwf avatar domivogt avatar elyesh avatar farblos avatar jasonpweber avatar jasontibbitts avatar kangie avatar klebertarcisio avatar lgsobalvarro avatar louies0623 avatar mikeandmore avatar nscde avatar omar-polo avatar pghvlaans avatar phileimer avatar pm215 avatar quipyowert2 avatar scootergrisen avatar shang avatar slazav avatar somiaj avatar sonyahay avatar thomasadam avatar thomasfunk avatar topcat001 avatar vgriph avatar zielaj avatar zirias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fvwm3's Issues

UI freeze

Hi all,

I experienced a complete freeze 3 times already. Where the mouse pointer moves but everything else is frozen. Even the keyboard. An external ssh login and a kill operation is the only rescue.
It happened after a few days of runtime.

My setup is a Slackware64-current with fvwm3 (clone of April 13).
With fvwm2 I experienced this also, that's why I moved to fvwm3.

Video card is a: NVIDIA GF119
X server is xorg-server-1.20.8, default (auto) config

I often see this in my ~/.xsession_errors:
FindScreenOfXY: couldn't find screen at 558 x 534 returning first monitor. This is a bug.

But I believe my freeze is instantly happening at a moment I'm doing a window raise
Not sure how I can be more specific.

Any clue?

Thanks a lot

Deprecate execute_function_override_*() calls

There are parts of FVWM which will internally call a FVWM function, which make it behave as though the command itself had been typed in to FvwmConsole, such as Iconify off.

Although helpful, this has a few problems:

  1. It means the APIs to performing window actions are overly complicated -- because each command does its own parsing;
  2. Changes to syntax in the future mean compilation changes to the FVWM3 binary.

Calls to execute_function_override_*() should be deprecated and the internal representation of commands refactored.

For reference:

[projects/fvwm3]{3987}[0][master] % git grep execute_function_override_ fvwm libs
fvwm/add_window.c:                      execute_function_override_window(
fvwm/conditional.c:             execute_function_override_wcontext(
fvwm/conditional.c:             execute_function_override_window(
fvwm/conditional.c:                     execute_function_override_window(
fvwm/conditional.c:                     execute_function_override_window(
fvwm/conditional.c:                             execute_function_override_window(
fvwm/conditional.c:     execute_function_override_window(cond_rc, exc, action, 0, NULL);
fvwm/events.c:                          execute_function_override_window(
fvwm/ewmh.c:            execute_function_override_window(
fvwm/ewmh.c:            execute_function_override_window(
fvwm/ewmh.c:            execute_function_override_window(NULL, NULL, cmd, 0, fw);
fvwm/ewmh_events.c:     execute_function_override_window(NULL, NULL, action, 0, NULL);
fvwm/ewmh_events.c:     execute_function_override_window(
fvwm/ewmh_events.c:     execute_function_override_window(NULL, NULL, "Close", 0, fw);
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:                             execute_function_override_window(
fvwm/ewmh_events.c:             execute_function_override_window(NULL, NULL, cmd, 0, fw);
fvwm/ewmh_events.c:             execute_function_override_window(
fvwm/ewmh_events.c:             execute_function_override_window(
fvwm/ewmh_events.c:             execute_function_override_window(NULL, NULL, cmd, 0, fw);
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:             execute_function_override_window(NULL, NULL, cmd, 0, fw);
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/ewmh_events.c:                     execute_function_override_window(
fvwm/functions.c:void execute_function_override_wcontext(
fvwm/functions.c:void execute_function_override_window(
fvwm/functions.h:void execute_function_override_wcontext(
fvwm/functions.h:void execute_function_override_window(
fvwm/move_resize.c:             execute_function_override_window(
fvwm/move_resize.c:             execute_function_override_window(
fvwm/virtual.c:                 execute_function_override_window(NULL, NULL, cmd, 0, NULL);

"ThisWindow (Screen XY) Sticky" broken? in DesktopConfiguration global

In DesktopConfiguration per-monitor, I have this in my config:

DestroyFunc MoveWin
AddToFunc MoveWin | PipeRead 'echo Move'
+ I ThisWindow (Screen 2) Sticky

and it makes all windows on Screen 2 Sticky (albeit without the horizontal bars in the title).

When I change to DesktopConfiguration global, the same windows are not sticky anymore, and the above part of my config file doesn't seem to do anything.

Windows that were made sticky in per-monitor Configuration will disappear from all pages apart from the one on which they originated when I switch from per-monitor to global using FvwmConsole.

build: gh-28
config: basically default

Multiple Pages (3x3) and RandR is confusing and broken

If FVWM3 is configured with >1 monitor and the following configuration:

DesktopName 0 0
DesktopName 1 1
DesktopName 2 2
DesktopName 3 3
DesktopSize 3x3
DesktopConfiguration per-monitor

... and FvwmPager is started with the following, to match the number of configured desktops above:

FvwmPager 0 3

Opening some terminals (xterms) will correctly assign those to the relevant screen and page. However, FvwmPager has the ability to move windows around within the pager using Alt + mouse button 3 to other pages/desks.

Because tracking windows on monitors uses their x/y position on screen, with DesktopSize 1x1 the bounding page is within the configured monitor's coordinates as given by RandR. But with DesktopSize 3x3 the x/y positions of windows as changed through FvwmPager will be far greater than the physical dimensions of the given monitor, because pages are additions to the configured screen.

So the question becomes, how can we ensure when a window is on a given page, that the correct monitor is assigned, given that the x/y dimensions aren't going to match?

Indeed, because FvwmPager when it draws windows, doesn't limit itself to one monitor (but rather, all monitors), it's perfectly possible to drag a window from within FvwmPager and have it move to a different page and monitor. How are we going to ensure the correct monitor is picked up?

Part of the problem is that because DesktopSize is the same for all outputs, trying to use
$[desk.width] and $[desk.height] won't work, as these dimensions will be the same across monitors.

For instance, when dragging a window in FvwmPager to a different page, you'll see in the logs:

FindScreenOfXY: couldn't find screen at 0 x 2162 returning first monitor.  This is a bug.
FindScreenOfXY: couldn't find screen at 9462 x 2162 returning first monitor.  This is a bug.

The geometry of the window is valid, but in this case, the window has not only changed page, but also desk to what it was on originally. This is because 9462 x 2162 are on the page that represents a different monitor, but there's no way of mapping that back to the physical dimensions of the monitor itself.

Suggestions welcomed on how we can solve this!

The restart process does not restore custom window colorsets

I do not use window titles so when I stick a window I change its active and inactive colorsets to recognise it. The applied function is

DestroyFunc StickAndColor
AddToFunc StickAndColor
+ I ThisWindow (!Sticky) Stick
+ I TestRc (Match) ThisWindow WindowStyle BorderColorset 20, HilightBorderColorset 21
+ I TestRc (Match) Break
+ I ThisWindow (Sticky) Stick
+ I TestRc (Match) ThisWindow WindowStyle BorderColorset 3, HilightBorderColorset 4

After having some sticky windows working as expected I trigger the Fvwm restart action and the applied colorsets are not there anymore, sticky status keeps applied though.

  1. Should I expect this to happen?
  2. Is there a more appropriate way of implementing this behaviour?

Compiler warnings in ta/desktops

I guess you can live with the German version of the standard parts of the message...

make[3]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmIdent“ wird betreten
  CC       FvwmIdent.o
FvwmIdent.c: In Funktion »MakeList«:
FvwmIdent.c:1411:11: Warnung: Argument 1 ist als »restrict« markiert, wird aber auch in Argument 3 übergeben [-Wrestrict]
 1411 |   sprintf(ewmh_init_state, "%s %lu ",
      |           ^~~~~~~~~~~~~~~
 1412 |    ewmh_init_state, target.ewmh_hint_desktop);
      |    ~~~~~~~~~~~~~~~
Auf höchster Ebene:
FvwmIdent.c:116:13: Warnung: »xin_str« definiert, aber nicht verwendet [-Wunused-variable]
  116 | static char xin_str[10];
      |             ^~~~~~~
FvwmIdent.c: In Funktion »MakeList«:
FvwmIdent.c:1411:32: Warnung: »%lu«-Direktive schreibt zwischen 1 und 3 Bytes in eine Region der Größe zwischen 0 und 511 [-Wformat-overflow=]
 1411 |   sprintf(ewmh_init_state, "%s %lu ",
      |                                ^~~
FvwmIdent.c:1411:28: Anmerkung: Direktiven-Argument im Bereich [0, 255]
 1411 |   sprintf(ewmh_init_state, "%s %lu ",
      |                            ^~~~~~~~~
FvwmIdent.c:1411:3: Anmerkung: »sprintf« hat zwischen 4 und 517 Bytes in das Ziel der Größe 512 ausgegeben
 1411 |   sprintf(ewmh_init_state, "%s %lu ",
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1412 |    ewmh_init_state, target.ewmh_hint_desktop);
      |    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CCLD     FvwmIdent
make[3]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmIdent“ wird verlassen
``make[3]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmPager“ wird betreten
  CC       FvwmPager.o
FvwmPager.c: In Funktion »list_add«:
FvwmPager.c:667:47: Warnung: Format »%d« erwartet Argumenttyp »int«, aber Argument 3 hat Typ »long unsigned int« [-Wformat=]
  667 |   fprintf(stderr, "monitor was null with ID: %d\n", cfgpacket->monitor_id);
      |                                              ~^     ~~~~~~~~~~~~~~~~~~~~~
      |                                               |              |
      |                                               int            long unsigned int
      |                                              %ld
FvwmPager.c: In Funktion »list_configure«:
FvwmPager.c:711:48: Warnung: Format »%d« erwartet Argumenttyp »int«, aber Argument 3 hat Typ »long unsigned int« [-Wformat=]
  711 |    fprintf(stderr, "monitor was null with ID: %d\n", cfgpacket->monitor_id);
      |                                               ~^     ~~~~~~~~~~~~~~~~~~~~~
      |                                                |              |
      |                                                int            long unsigned int
      |                                               %ld
  CC       x_pager.o
x_pager.c: In Funktion »AddNewWindow«:
x_pager.c:2007:49: Warnung: »mon« könnte in dieser Funktion uninitialisiert verwendet werden [-Wmaybe-uninitialized]
 2007 |   if (monitor_to_track != NULL && (t->m != NULL && t->m != mon))
      |                                   ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
  CCLD     FvwmPager
make[3]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmPager“ wird verlassen
make[4]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmScript“ wird betreten
  CC       FvwmScript.o
In Funktion »ReadFvwmScriptArg«,
    eingefügt von »ReadFvwmScriptArg« beiFvwmScript.c:1302:6:
FvwmScript.c:1320:31: Warnung: »strncpy« angegebene Grenze hängt von der Länge des Quellarguments ab [-Wstringop-overflow=]
 1320 |     x11base->TabScriptId[0] = strncpy(x11base->TabScriptId[0],argv[7],
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1321 |         strlen(argv[7])-2);
      |         ~~~~~~~~~~~~~~~~~~     
FvwmScript.c: In Funktion »ReadFvwmScriptArg«:
FvwmScript.c:1321:9: Anmerkung: Länge wird hier berechnet
 1321 |         strlen(argv[7])-2);
      |         ^~~~~~~~~~~~~~~
  CC       Instructions.o
Instructions.c: In Funktion »WriteToFile«:
Instructions.c:1738:5: Warnung: Argument 1 ist als »restrict« markiert, wird aber auch in Argument 3 übergeben [-Wrestrict]
 1738 |     sprintf(buf,"%s\n%s%d\n",buf,StrBegin,getpid());
      |     ^~~~~~~
Instructions.c:1739:5: Warnung: Argument 1 ist als »restrict« markiert, wird aber auch in Argument 3 übergeben [-Wrestrict]
 1739 |     sprintf(buf,"%s%s",buf,arg[1]);
      |     ^~~~~~~
Instructions.c:1740:5: Warnung: Argument 1 ist als »restrict« markiert, wird aber auch in Argument 3 übergeben [-Wrestrict]
 1740 |     sprintf(buf,"%s%s\n",buf,StrEnd);
      |     ^~~~~~~
Instructions.c: In Funktion »FuncGetOutput«:
Instructions.c:363:7: Warnung: »strncpy« angegebene Grenze 255 ist genau die Größe des Ziels [-Wstringop-truncation]
  363 |       strncpy(Command,cmndbuf,255);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CC       libyywrap.o
  CC       scanner.o
  CC       script.o
  CCLD     FvwmScript
make[4]: Verzeichnis „/home/peter/.git/fvwm3/modules/FvwmScript“ wird verlassen

If it's related: the version that is made with these messages starts nicely, but neither FvwmButtons on its own nor the RightPanel work - components seem to start, but are immediately lost.

fvwm3 test result

fvwm3 is installedd on my gentoo system with the following configuration:

fvwm3 --version
fvwm 3.0.0 compiled on Jan  4 2020 at 22:48:57
with support for: ReadLine, RPlay, Stroke, XPM, SVG, Shape, XShm, SM, Bidi text, XRandR, XRender, XCursor, XFT, NLS

When started with its default config and startx, I get:

Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
[fvwm][executeModule]: <<ERROR>> No such module 'FvwmBanner' in ModulePath '/usr/local/libexec/fvwm3/3.0.0'
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
trayer: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.
XIO:  fatal IO error 4 (Interrupted system call) on X server ":0"
      after 128 requests (128 known processed) with 0 events remaining.
XIO:  fatal IO error 4 (Interrupted system call) on X server ":0"
      after 233 requests (233 known processed) with 1 events remaining.

The backgroung image and the menu are working, but I get no banner and no button.

When replacing fvwm by fvwm3 in fvwm-crystal and using startx:

Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
[fvwm][executeModule]: <<ERROR>> No such module 'FvwmCommandS' in ModulePath '/usr/local/libexec/fvwm3/3.0.0'
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-xmahjongg.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][scanForPixmap]: <<WARNING>> Couldn't load image from /home/dom/.fvwm-crystal/icons/fvwm-desktop/32x32-dosbox.png
[fvwm][scanForPixmap]: <<WARNING>> Check that FVWM has support for the filetype it's being asked to load.
[fvwm][Echo]: Custom recipe loading from '/home/dom/.fvwm-crystal/recipes'
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
[fvwm][Echo]: /--------- Fvwm-Crystal: Recipe loaded ---------/
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
could not open /home/dom/.stalonetrayrc (No such file or directory)
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
Monitor: LVDS (PRIMARY) (x: 0, y: 0, w: 1600, h: 900)
Screen found; no crtc present
WARNING: Could not find all icon sizes for the application icon
[fvwm][CreateConditionMask]: <<DEPRECATED>> Use comma instead of whitespace to separate conditions
[fvwm][GetWindowSizeHints]: <<WARNING>> reason: 5: The hints have been ignored because the window's current size would have become invalid.  The new hints will become active when the window generates the next ConfigureRequest.

[fvwm][GetWindowSizeHints]: <<WARNING>> The application window (id 0xc0012a)
  "mc [dom@tux]:~/.fvwm-crystal" has broken size hints (inconsistent with current size).
    fvwm is ignoring those hints.    hint override = 0, flags = 350
  min_width = 12, min_height = 18, max_width = 0, max_height = 0
  width_inc = 8, height_inc = 14
  min_aspect = 0/0, max_aspect = 0/0
  base_width = 4, base_height = 4
  win_gravity = 1

    If you are having a problem with the application, send a bug report
    with this message included to the application owner.
    There is no need to notify [email protected].
[fvwm][GetWindowSizeHints]: <<WARNING>> reason: 5: The hints have been ignored because the window's current size would have become invalid.  The new hints will become active when the window generates the next ConfigureRequest.

[fvwm][GetWindowSizeHints]: <<WARNING>> The application window (id 0xc0012a)
  "mc [dom@tux]:~/.fvwm-crystal" has broken size hints (inconsistent with current size).
    fvwm is ignoring those hints.    hint override = 0, flags = 350
  min_width = 12, min_height = 18, max_width = 0, max_height = 0
  width_inc = 8, height_inc = 14
  min_aspect = 0/0, max_aspect = 0/0
  base_width = 4, base_height = 4
  win_gravity = 1

    If you are having a problem with the application, send a bug report
    with this message included to the application owner.
    There is no need to notify [email protected].

Unmaximizing windows can sometimes vanish

When moving a maximized window between pages or screens, FVWM records the previous geometry of the unmaximized window, so it can restore correctly.

However, this doesn't work well when the maximized window itself has moved between screens or different pages, since the unmaximized geometry from the point of view of the maximized window is now incorrect. Subsequently, unmaximizing a window will put that window in to the ether.

For now, the approach is to make unmaximizing a window imply MoveToScreen (relative to the window's screen) such that it remains visible, and should largely do what the user expects.

FvwmButtons fails silently; Fvwm3

On both Void and ArchLabs, kernel 5.6.x, FvwmButtons does not start.

With the default RightPanel configuration, there is a quick flash (FvwmPager, I think) and then just the wallpaper visible. Sometimes, FvwmIconMan or stalonetray will remain, but not both.

Fvwm3 is functional afterwards, I can start both FvwmPager and FvwmIconMan from FvwmConsole. If I try to start FvwmButtons from FvwmConsole (either the RightPanel or a simple test panel with just FvwmIconMan) no FvwmModule starts, and there is no message in FvwmConsole.

Multiscreen support issue

On branch ta-gh22, FVWM sometimes moves the windows to other virtual desktops instead of just going to the desktop.

At the same time, it also messes with the cursor's functions, and the user is unable to enter input or click on a window to set focus. It resembles the behaviour of FVWM when "IgnoreModifiers L2" is not set. Of course, I set that. Alt-Tab window switching solves the focus issue.

Attached a sceenshot. On this screenshot, the focused window decoration should be orange, and unfocused window decoration should be grey.

screenshot

Attached a log as well. I can add the FvwmCommand-sxhkd config as well as my xkb layout+xmodmap, but this issue persisted even when I used Fvwm's own keybinding system.

debug.log

Zero-size malloc on ta/randr branch

Hello.

The attached config file will result in an fvwm3: malloc: zero size. error and abnormal exit.

config.txt

(gdb) bt
#0  0x00007ffff699df90 in exit () at /usr/lib/libc.so.6
#1  0x00007ffff6a59eb9 in  () at /usr/lib/libc.so.6
#2  0x00007ffff6a59ff8 in  () at /usr/lib/libc.so.6
#3  0x000055555564261d in xmalloc (length=0) at safemalloc.c:27
#4  0x00005555555dc77f in CMD_All (cond_rc=0x7fffffffdde8, exc=0x5555556e9970, action=0x555555711764 "PlaceAgain")
    at conditional.c:1611
#5  0x00005555555eed51 in __execute_function
    (cond_rc=0x0, exc=0x555555711a10, action=0x5555556475c5 "All PlaceAgain", exec_flags=0 '\000', args=0x0, has_ref_window_moved=0)
    at functions.c:639
#6  0x00005555555f0159 in execute_function
    (cond_rc=0x0, exc=0x555555711a10, action=0x5555556475c5 "All PlaceAgain", exec_flags=0 '\000') at functions.c:1302
#7  0x00005555555f02a6 in execute_function_override_window
    (cond_rc=0x0, exc=0x0, action=0x5555556475c5 "All PlaceAgain", exec_flags=0 '\000', fw=0x0) at functions.c:1352
#8  0x00005555555980db in HandleRRScreenChangeNotify (e=0x7fffffffe010) at events.c:1798
#9  0x000055555559cb44 in dispatch_event (e=0x7fffffffe010) at events.c:4122
#10 0x000055555559ce0d in HandleEvents () at events.c:4231
#11 0x00005555555c8061 in main (argc=3, argv=0x7fffffffe498) at fvwm3.c:2597

The existing FVWM 2.6.8 release prints a warning but continues running.

Addressing monitors proposal for fvwm3

Hi

I will like to share some of my thoughts about monitor addressing. Maybe you find something useful from this.

In fvwm2, this was a number, monitor number, while on fvwm3, we see RandR provided name in the place of it.

I think there should be two kinds of variables: one with numbers, and one with names. Analogy for this should be gethostbyaddr and gethostbyname - getmonitorybyaddr and getmonitorbyname. :)

Here is why:

Many people have two or more monitors at home and at work place. This monitors can have different cabling technologies and can be called DP, HDMI, DVI, VGA, Virtual, FOO, Bar ... One guy in my department has 3 monitors at work and 2 at home ...

If monitors are referred with their RandR names in the configuration, things will break if one has HDMI1 --right-of eDP1 at one place, and DP2 --right-of eDP1 on other while moving with laptop. Also, connecting projector on presentations/educations can have some funny effects.

Additionaly, there can be the same names (HDMI1 for example) on both places, but in different resolution.

There should be the way to address monitors in 3 ways:

  1. 0 as primary and then dinamically 1, 2, 3 as fvwm2 $[pointer.screen] in order they are connected
  2. Direction from primary (left, right, above, below) + offset if it is not a nearest one
  3. RandR name (as present pointer.screen in fvwm3)
  4. Unique (or semi-unique) identifier which can be obtained from EDID, which is as far as I know available to RandR. For example with some helper command to generate some unique string (like iSCSI IQN, or disk WWN) which can be referenced as exact object from configuration

Actually, this are the 4 ways ... But I didn't expected the Spanish Inquisition. :-)

Maybe pointer.screen should revert to fvwm2 numbering and whole new scheme of monitor macros to be introduced. For example, this days $[monitor.primary] was introduced. I think this should continue in that direction with $[monitor.]. Of course, it should be decided for consistency if "screen" should be used for naming or "monitor" (in addition to pages and desks).

I will try to construct an example here:

eDP1 as laptop screen + DP1 as external monitor:

  • $[pointer.screen] = 0 for eDP1, then 1 for DP1
  • $[monitor.name] = eDP1 and then DP1
  • $[monitor.identifier] = scr.54598789447-1 and then scr.76342832982-1 (example)
  • $[monitor.$[pointer.screen].position] = (L1 | R1 | A1 | B1 | L2 | R2 | ...) where L/R/A/B are left, right, above, below, and 1, 2 is the offset from $[monitor.primary].
  • $[monitor.$[monitor.identifier].position] = same as for $[pointer.screen], but with exact monitors
  • $[monitor.$[monitor.name].position] = same positioning for RandR names possibly

From this scheme, I can see some of this benefits:

  • xrandr command can be combined with macros and called with Exec/PipeRead from configuration in most if not all possible ways for user to make desirable configuration, wheater some behaviour is wanted for any monitor which is "--left-of" or just particular one by identifier or cabling technology (last one as some workaround possibly like xgamma or ...)

  • in combination with proposed events from FvwmEvent from #26, automatization possibilities are even more in the hands of the user

  • backward compatible $[pointer.screen] and new consistent naming for new $[screen.X] or $[monitor.X] macros. Maybe "screen" should be used, to be consistent with MoveToScreen, StartsOnScreen and other commands which are already using that term.

Just my 2 ... 3 cents ...

FvwmButtons on FVWM3

If using only one monitor FvwmButtons is never placed, even if it's loaded manually via FvwmConsole. This issue is persistent with the default config and my custom. xsession-errors does not show anything unusual with FvwmButtons.

If using two monitors FvwmButtons is placed in the second screen, but FvwmButtons is not placed where it's supposed to be. Once again, this occurs with the default, and my custom config.

Tested on OpenSUSE Tumbleweed. FVWM was built without Rplay support.

dynamic randr dpi configuration causes miss-configured screen dimensions

My laptop screen is a high-dpi one. Sometimes I need to connect an external screen and work in a clamshell mode. So I configure the monitor and disable the laptop one. Then I change the dpi to some factor. And when I maximise any window it does not fill the whole screen. To fix this, I do restart fvwm3 and it gets the proper scaled dimension.

I am using the latest tg-22 branch. If there is anything I can do to check this further happy to help so.

Do we need to check the value returned from FCreateFImage?

Hi everyone,

I would like to know if we need any verification after calling the FCreateFImage function. See the lines below that it can return a value that has already been released.

fvwm3/libs/FImage.c

Lines 188 to 193 in 6213e5e

free(fim);
}
}
return fim;
}

See that in the code below there is a check on the value of out_fim

out_fim = FCreateFImage(
dpy, Pvisual, Pdepth, ZPixmap, out_width, out_height);
if (gc == None)
{
gc = PictureDefaultGC(dpy, win);
}
if (!out_pix || !out_fim || !gc)
{
FDestroyFImage(dpy, src_fim);
if (mask_fim)
{
FDestroyFImage(dpy, mask_fim);
}
if (out_pix)
{
XFreePixmap(dpy, out_pix);
}
if (out_fim)
{
FDestroyFImage(dpy, out_fim);
}
return None;
}

Why doesn't the same check exist on the line below?

new_mask_fim = FCreateFImage(
dpy, Pvisual, 1, ZPixmap, w, h);

IconBox moves across screens

The system has two randr screens, DVI-I-1 and DP-2. A single one-row iconbox was initially defined (under fvwm2):

Style * IconSize 32 32 32 32
Style * IconBox 0 -40 -1 -1, IconGrid 40 40

This definition has been adapted for fvwm3:

Style * IconBox screen DVI-I-1 0 -40 -1 -1, IconGrid 40 40

The windows are iconized with a Mouse definition calling Iconify, and restored according to the function

DestroyFunc DeiconifyAndRearrange
AddToFunc DeiconifyAndRearrange
+ C Iconify off
+ C All (CurrentDesk, Iconic) PlaceAgain Icon

Regardless of the above configuration, windows on DP-2 are always initially iconized according to the defined geometry, but on DP-2.

Moreover, the iconbox might jump screens.
Given windows w1s1, w2s1 on screen 1 (DVI) and w3s2 on screen 2 (DP):

  • iconizing w3s2 puts the icon on DP
  • then iconizing w2s1 puts its icon on DVI
  • restoring w2s1 puts it back on DVI, and brings the icon for w3s2 to the iconbox on DVI
  • on the other hand, with w1s1 and w2s1 iconized on DVI and w3s2 iconized on DP, restoring w3s2 will puts it back up on DP2 and move the icons for w1s1 and w2s1 onto DP2 as well.
  • across these jumps, the geometry of the iconbox is respected.

With the explicit placement of the iconbox using the IconBox screen argument, all icons should always be put on DVI-I-1 regardless of the original window's screen.

I suspect that the jumping around part has to do with the parameters to DeiconifyAndRearrange but I haven't been able to find the Screen-related parameter to fix it.

Page navigation and selection is incorrect after FVWM3 restart/start while two screens are enabled

Continuation from #20 ...

Testing function f_TestSDP works ok in one screen mode, in two screens mode it is working ok if second screen is added during FVWM3 session with xrandr, but if FVWM3 is restarted (or logout + login with secondary screen on), pages are still shifted: after f_TestSDP, on "0 0" there is nothing. On "0 1" tthere is "0 0", on "1 0" there is "0 1", and on "1 1" there is "1 0" - after another Restart, xterm from desk 3, page "1 1" is positioned on desk 0, page "0 0" but iconified. Same behaviour is observed in global and per-monitor mode. If second screen is forced --off with xrandr and FVWM3 restarted, f_TestSDP works again - until FVWM3 is restarted with secondary screen on. This occurs no matter on which page I'm positioned with terminal from which I call f_TestSDP. Screenshot attached here shows window list on Virtual-0 after running f_TestSDP in such conditions. In working state, window list is correct. Probably some buffer must be cleared or shifted back ... you will see this from the order on window list.

This is stderr output during right page selection (no restart):

[fvwm][Echo]: Performing for Screen Virtual-0 ('Virtual-0') ...
monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
sh: pointer.screen: syntax error: invalid arithmetic operator (error token is ".screen")
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 0, Vy: 2100
EdgeScrollX: 1400, EdgeScrollY: 1050
CurrentDesk: 0
CurrentPage: {x: 0, y: 2}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
sh: pointer.screen: syntax error: invalid arithmetic operator (error token is ".screen")
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 2800, Vy: 0
EdgeScrollX: 1400, EdgeScrollY: 1050
CurrentDesk: 0
CurrentPage: {x: 2, y: 0}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
sh: pointer.screen: syntax error: invalid arithmetic operator (error token is ".screen")
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 2800, Vy: 2100
EdgeScrollX: 1400, EdgeScrollY: 1050
CurrentDesk: 0
CurrentPage: {x: 2, y: 2}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

This is stderr output during wrong page selection (after restart):

[fvwm][Echo]: Performing for Screen Virtual-0 ('Virtual-0') ...

Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 0, Vy: 0
EdgeScrollX: 2800, EdgeScrollY: 2100
CurrentDesk: 0
CurrentPage: {x: 0, y: 0}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 0, Vy: 2100
EdgeScrollX: 2800, EdgeScrollY: 2100
CurrentDesk: 0
CurrentPage: {x: 0, y: 2}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 2800, Vy: 0
EdgeScrollX: 2800, EdgeScrollY: 2100
CurrentDesk: 0
CurrentPage: {x: 2, y: 0}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)
sh: pointer.screen: syntax error: invalid arithmetic operator (error token is ".screen")
monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
Monitor Debug
number of outputs: 2
Name: Virtual-0
Disabled: false
Is Primary: no
Is Current: yes
Wants Refresh: false
Output: 67
Coords: {x: 0, y: 0, w: 1400, h: 1050}
VirtScr: {
VxMax: 5600, VyMax: 4200, Vx: 2800, Vy: 2100
EdgeScrollX: 2800, EdgeScrollY: 2100
CurrentDesk: 0
CurrentPage: {x: 2, y: 2}
MyDisplayWidth: 1400, MyDisplayHeight: 1050
}
Desktops: yes
Flags:per-monitor

monitor_by_name: couldn't find monitor: (c)
monitor_by_name: returning current monitor (Virtual-0)
__place_window: assigned fw to: 0 (Virtual-0)

I can see no difference in this outputs.

If I turn the order in which I walk pages in f_TestSDP from "1 1" to "0 0", first page executed seems to be the one that appears empty.

In global DesktopConfiguration mode, Wait XTerm fails after changing current desk from 0 0 to 0 1

While testing with f_TestSDP in "DesktopConfiguration global" mode, everything works on 1st screen. On second screen it works until desk is changed. In that moment pages "0 0", "0 1", "1 0" are omitted by Wait, and all 4 xterms are concentrated on page "1 1".

Notice: I have tested with only with desks 0 and 1, 2 and 3 were commented out for brevity.

  • In per-monitor mode, this behaviour is not reproducable.
  • If there is no XTerm's on left (first) monitor (pkill xterm before running f_TestSDP on Virtual-1), this doesn't happen.

StartsOnPage/StartsOnDesk ignored

Hello,

Using a config file I am adapting and correcting from fvwm2, I came across a regression regarding forced window placement on a given desktop.
Configuration is explicitely declared global (but it makes no difference) :
DesktopConfiguration global

I do not use pages, and 4 desktops are defined:

DesktopSize 1x1
DesktopName 0 Net
DesktopName 1 Dev
DesktopName 2 MM
DesktopName 3 Misc
EdgeScroll 0 0
EdgeThickness 0

Multimedia applications are set to open on Desktop 2:

Style vlc StartsOnPage 2
Style mpv StartsOnPage 2

(StartsOnDesk 2 does no better)

Opening any application defined as above to open on a given desk results in the application actually opening on the current active desk.

This configuration was working as expected under fvwm2.

It should be noted that StartsOnScreen on the other hand works as documented.

Vim/Gtk3 crashes with BadMatch after Alt-Tabbing to a different desktop

Possibly related to fvwmorg/fvwm#59

I'm using Slackware64-current, FVWM 2.6.9 and Vim 8.2.0050 - both sufficiently recent though not the bleeding edge. FVWM configured with 4 desktops with 2x2 screens.

gVim is built with Gtk3 GUI and works as expected most of the time - until I try to Alt-Tab to another desktop and WindowList is drawn over gVim window. The xscope output is as follows:

96.50: Client 1 -->   12 bytes
	 ............REQUEST: SetInputFocus
	           revert-to: Parent
	               focus: WIN 04400008
	                time: TIM 00a9b8a0
96.51: 					  32 bytes <-- X11 Server 1
					 ..............ERROR: Match
					        minor opcode: 0000
					        major opcode: 2a
96.51: 					  32 bytes <-- X11 Server 1
					 ..............EVENT: ClientMessage
					              source: SendEvent
					              format: 20
					              window: WIN 04400007
					                type: <WM_PROTOCOLS>

As far as I understand, it happens as follows. WindowList steals the input focus and informs gVim of it by sending a PartiallyObscured NotifyEvent, and as gVim tries to get it back from it - it is no longer visible as another desktop is already shown, which is in line with X11 Proto spec .

According to gVim bug #1392, Gtk3 is already handling this scenario by guarding XSetInputFocus() invocation but somehow it is not enough for FVWM.

Alt-Tabbing over the same desktop works as expected, so I believe it is related to how FVWM implements multiple desktops. Though I don't see such problems with other Gtk3 applications - it looks quite generic so it may surface elsewhere as well, and a fix or a good workaround would certainly be nice: maybe guarding XSetInputFocus() in fvwm/focus.c same as Gtk3 does?

PS Previous gVim version built against Gtk2 does not have this problem - most likely building current gVim against Gtk2 will also "fix" - or, rather, obscure it, but eventually Gtk2 will become obsolete.

Proposal: FvwmEvent new events in FVWM3

As FvwmEvent handles new_page and new_desk window manager event, it will be nice to make RandR screen events acessible through it.

According to debug output, FVWM3 sees when monitor is added or removed, enabled or disabled, or when pointer changes active screen.

Proposal for exposing events is:

add_monitor
remove_monitor
enable_monitor
disable_monitor
change_screen

That way, user can configure custom actions and functions for this situations if wanted/needed.

DesktopSize 1x1 is not respected

DesktopSize 1x1 configuration is not respected and the mouse can still freely move on edges. My fvwm3 configuration is accessible here and I am currently using Fvwm3 master branch.

conky can make fvwm3 go sloppy

I usually put my conky onto the root window. In fvwm3 (desktops branch), the whole mouse-keyboard systems becomes very sloppy and slow as if it all happened inside a viscuous fluid.

Running conky with "own_window yes" resolves the problem, running it without the "own_window" config makes the problem.

I cannot see any differences in CPU or RAM use between the two config scenarios.
My fvwm backround is set via the default fvwm config file (I like the flowers).

msgpack as fvwm <-> modules <-> bindings communicator

FVWM was written before any formal message parsing libraries existed. Currently, the communication protocol that FVWM uses is a packed structure which is shoved down a pipe, which the receiving end has registered interest in by locking on to various messages which are sent.

Other libraries exist to abstract away this message construction, such as msgpack which allows for other binary data to be considered (rather than packing unsigned longs down a pipe, which is how FVWM does this currently).

Another benefit is that other languages have native msgpack bindings, which would allow for agnostic FVWM APIs to be created to allow scripting in any language. This is similar to how neovim does things, for example.

Hence, it would be interesting to:

  • Replace the current FVWM <-> Module messages with msgpack;
  • Expose interfaces for modules to listen on certain events;

Fix snap attraction

With per-monitor snapattraction is broken.

This is because of monitor detection.

Support lists of fonts (for falling back on)

I was asked to create this issue on IRC after I brought it up there.

Quoting from the channel:

I think FVWM3 should be able to use 'fallback' fonts, or maybe a list of fonts, for cases where a character isn't represented in the preferred font. Currently (in FVWM2) lots of japanese text is rendered as '??' characters since I am en_US.UTF-8 and using a font without CJK support.

It'd be good to handle it so that in the event of a glyph that is not in the primary/preferred font, a list of the second, third, and fourth… etc. fonts can be 'fallen back' on to supply the given character.

Example (in my mind, just so you get the general idea):

The current way it works:

# Tahoma just is chosen as an example of a somewhat common font that doesn't support CJK.
Style * Font "xft:Tahoma:size=8:bold"

CJK characters like 'あ' will render as ??.

My suggestion is something like:

# Try to use tahoma for the characters it has support for, and try the TTF version of GNU Unifont as a fallback
Style * Font "xft:Tahoma:size=8:bold,xft:Unifont"

Maybe even make that a style attribute named 'Fonts' instead of 'Font'. Of course, however is the easiest way to parse a list would be fine. I used commas just because that's how CSS does it.

Ideas for new default config

My primary screen is the left one and having the RightPanel in the left margin has made a lot of sense to me for quite a while. So I thought, others whose primary screen is the left one might have similar feelings. And as fvwm3 might want to come with a new/updated standard config, I thought we could have a collection of ideas for this fvwm3-standard-config here. As I can only start this from a user perspective, I shall suggest results rather than ways / codes, but if you have code, I'm sure nobody will be disappointed with it being shared here.

Make standard panel LeftPanel
or have a switch in the config to choose between left or right margin
currently: *RightPanel: Geometry 120x$[vp.height]-0+0 v new *LeftPanel: Geometry 120x$[vp.height]+0+0
On a switch-level I could think of something like set panel = left
or, which could be discussed, have a general switch in a top-section of the config as to which screen is the main one and/or whether we have global or per-monitor configuration and have the position of the panel and possibly all kinds of other things depending on this, so something like
set primary screen = left -> panel=left v set primary screen = right -> panel = right

DesktopConfiguration per-monitor segmentation fault in certain repeatable conditions

Hello again,

Version: ta/desktops

If secondary monitor is plugged off and I log in via XDM, plug new monitor and then issue the command:

xrandr --output eDP1 --mode 1920x1080 --primary --output DP1 --mode 2560x1440 --right-of eDP1 --noprimary

fvwm3 crashes (trace on the bottom).

When it doesn't crashes:

  • when DesktopConfiguration is "global" and than changed to per-monitor via FvwmConsole after startup prior or after xrandr command described above.
  • when I exit/restart from fvwm3 to bare xterm and start fvwm3 from command line (prior or after xrandr)
  • If second monitor is already on before logging in

Probably not related to this issue, but may be of interest to you:
I was reading your "Multiple Pages (3x3) and RandR is confusing and broken" and trying to introduce myself to new per-monitor mode to better understand problematic and maybe propose something when I discovered this. I have also found that "FvwmPager * 3" is very confused and changes DesktopSize (pages) from configured 2x2 to 3x3 on the fly, but that is probably already known to you ... or maybe currently/temporary hardcoded for testing? Interestingly, "local" pager, that is, FvwmPager which shows only one desk retains 2x2 DesktopSize.

Trace:

gdb /opt/fvwm3/bin/fvwm3 /var/coredumps/core-prokopije-fvwm3-7011-11-22687

Reading symbols from /opt/fvwm3/bin/fvwm3...done.
[New LWP 22687]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/opt/fvwm3/bin/fvwm3 -f /opt/NsCDE/config/NsCDE-Main.conf'.
Program terminated with signal 11, Segmentation fault.
#0 0x000000000047c502 in EWMH_SetDesktopNames (m=0x2108990) at ewmh_names.c:285
285 ewmh_names.c: No such file or directory.

[...]

(gdb) bt
#0 0x000000000047c502 in EWMH_SetDesktopNames (m=0x2108990) at ewmh_names.c:285
#1 0x0000000000428e68 in HandleRRScreenChangeNotify (e=e@entry=0x7fff819dacf0) at events.c:1806
#2 0x000000000042b7c0 in dispatch_event (e=e@entry=0x7fff819dacf0) at events.c:4185
#3 0x000000000042c49d in HandleEvents () at events.c:4294
#4 0x000000000040aeaa in main (argc=, argv=0x7fff819db568) at fvwm3.c:2594

Desktop names are set during login. I'm using 4 desks x 4 pages (2x2) == 16.

fvwm-menu-desktop is wrong when converting multiple image files.

When an original icon contain several images, convert in fvwm-menu-desktop is converting all the images and rename them into "filename-n.png", where n is the number of the image into the original file.

The result is a broken resulting menu because fvwm look for filename.png.

To reproduce it, I find 2 icons in my system, the ones from doxbox and xmahjongg. Otherwise any animated gif will do it.

It must be the same issue with fvwm2 as well. That patch fix that issue:

fix_multiple_images_file_conversion.patch.txt

FvwmPager is broken with RandR

With the RandR changes, FvwmPager (and other modules) won't be able to access the monitor_q information directly. Instead, new Broadcast packets must be created to allow modules to listen when RandR events change.

Add support for the XDG Base Directory Specification

According to XDG Base Directory Specification by freedesktop.org, user configuration files for FVWM3 ought to be stored under $XDG_CONFIG_HOME/fvwm3 directory. (e.g. ~/.config/fvwm3/config.fvwm)

Currently, the default configuration files are stored under ~/.fvwm directory, and FVWM3 does not recognize the files under $XDG_CONFIG_HOME/fvwm3 directory.

I propose that the configuration files for FVWM3 are stored under $XDG_CONFIG_HOME/fvwm3 directory, not ~/.fvwm.

feature request: global menu support

i'm openning this feature request following a talk on #fvwm channel, to discuss the feasibility of adding global menu support on fvwm3.

what are globalmenu / appmenu:

"it's a menu exported out of an application window via DBus and placed instead on a desktop panel. "

implementation:

among the ideas that were discussed in the channel, it was expressed that perhaps it "could be implemented as a synchronous module written against libfvwm which relies on DBus".

for reference: freedesktop.org
"The motivation for this abstract model of application controls is that modern user interfaces tend to make these controls available outside the application. Examples include global menus, jumplists, dash boards, etc."
that link is the closest match i could find to document the feature. please let me know if you find something better.

usage

on other desktops, usualy a global shell variable is being set to enable / disable exporting the menus. it works with qt and gtk apps.
the menu displayed in the panel is the one from the focused application.
idealy, when no application are focused, then a default menu is displayed
(e.g: some kind of desktop menu.. rearrange icons, create file, delete file and such)

example of the feature as seen in other desktops

budgie:
budgie

elementary:
elementary

gnome:
gnome

kde:
kde3

xfce:
xcfe

Remove win_count functionality

In previous iterations of tracking which screen a given window was on, or moved to, the assigned struct monitor would maintain a count of the number of its windows.

This was meant to provide functionality which is not going to be used now, so this can be removed.

FvwmPager segfaults on fvwm3 ta/gh-22

While performing testing function for issue #24 I FvwmPager occasionally dies.

This is a permanent "local" pager with only current desk and pages view.
It's configuration can be found here:

https://github.com/NsCDE/NsCDE/blob/rc20_pending/NsCDE/config/NsCDE-Pager-LocalPager.conf

Backtrace:

[New LWP 1002252]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/opt/fvwm3/libexec/fvwm3/3.0.0/FvwmPager 37 4 none 0 8 LocalPager * 3'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 DrawGrid (desk=desk@entry=0, erase=1, erase@entry=0, ew=, r=r@entry=0x7ffca7cee378) at x_pager.c:1768
1768 if(((mon->virtual_scr.CurrentDesk - desk1) == desk) && !ShapeLabels)
(gdb) bt full
#0 DrawGrid (desk=desk@entry=0, erase=1, erase@entry=0, ew=, r=r@entry=0x7ffca7cee378) at x_pager.c:1768
y =
y1 =
y2 =
x =
x1 =
x2 =
d =
w =
str = "\000\000\000\000\000\000\000\b\000\000\000\000\000\000"
ptr =
cs =
bound = {x = 0, y = 0, width = 327, height = 15}
region = 0x13b6fd0
mon = 0x0
#1 0x0000000000410f3d in HandleExpose (Event=0x7ffca7cee440) at x_pager.c:1334
i = 0
r = {x = 0, y = 0, width = 327, height = 15}
#2 0x00000000004121e0 in DispatchEvent (Event=Event@entry=0x7ffca7cee440) at x_pager.c:1077
i =
x = 0
y = 0
JunkRoot = 0
JunkChild = 0
w =
JunkX = 0
JunkY = 0
JunkMask = 0
keychar = 0 '\000'
keysym = 0
do_move_page = 0
dx = 0
dy = 0
mon = 0x0
#3 0x000000000040b5e7 in Loop (fd=fd@entry=0x44b8f8 ) at FvwmPager.c:515
Event =
{type = 12, xany = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296}, xkey = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, root = 0, subwindow = 64424509767, time = 597000454144, x = 0, y = 0, x_root = 2098365, y_root = 0, state = 0, keycode = 0, same_screen = 0}, xbutton = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, root = 0, subwindow = 64424509767, time = 597000454144, x = 0, y = 0, x_root = 2098365, y_root = 0, state = 0, button = 0, same_screen = 0}, xmotion = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, root = 0, subwindow = 64424509767, time = 597000454144, x = 0, y = 0, x_root = 2098365, y_root = 0, state = 0, is_hint = 0 '\000', same_screen = 0}, xcrossing = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, root = 0, subwindow = 64424509767, time = 597000454144, x = 0, y = 0, x_root = 2098365, y_root = 0, mode = 0, detail = 0, same_screen = 0, focus = 0, state = 0}, xfocus = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, mode = 0, detail = 0}, xexpose = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, x = 0, y = 0, width = 327, height = 15, count = 0}, xgraphicsexpose = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, drawable = 31457296, x = 0, y = 0, width = 327, height = 15, count = 0, major_code = 139, minor_code = 0}, xnoexpose = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, drawable = 31457296, major_code = 0, minor_code = 0}, xvisibility = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, state = 0}, xcreatewindow = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, parent = 31457296, window = 0, x = 327, y = 15, width = 0, height = 139, border_width = 0, override_redirect = 0}, xdestroywindow = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0}, xunmap = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, from_configure = 327}, xmap = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, override_redirect = 327}, xmaprequest = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, parent = 31457296, window = 0}, xreparent = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, parent = 64424509767, x = 0, y = 139, override_redirect = 0}, xconfigure = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, x = 327, y = 15, width = 0, height = 139, border_width = 0, above = 2098365, override_redirect = 0}, xgravity = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, x = 327, y = 15}, xresizerequest = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, width = 0, height = 0}, xconfigurerequest = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, parent = 31457296, window = 0, x = 327, y = 15, width = 0, height = 139, border_width = 0, above = 2098365, detail = 0, value_mask = 0}, xcirculate = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, event = 31457296, window = 0, place = 327}, xcirculaterequest = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, parent = 31457296, window = 0, place = 327}, xproperty = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, atom = 0, time = 64424509767, state = 0}, xselectionclear = {type = 12, serial = --Type for more, q to quit, c to continue without paging--
4445, send_event = 0, display = 0x12b8c90, window = 31457296, selection = 0, time = 64424509767}, xselectionrequest = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, owner = 31457296, requestor = 0, selection = 64424509767, target = 597000454144, property = 0, time = 2098365}, xselection = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, requestor = 31457296, selection = 0, target = 64424509767, property = 597000454144, time = 0}, xcolormap = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, colormap = 0, new = 327, state = 15}, xclient = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, message_type = 0, format = 327, data = {b = "\000\000\000\000\213", '\000' <repeats 11 times>, "\275\004 ", s = {0, 0, 139, 0, 0, 0, 0, 0, 1213, 32}, l = {597000454144, 0, 2098365, 0, 0}}}, xmapping = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, request = 0, first_keycode = 0, count = 327}, xerror = {type = 12, display = 0x115d, resourceid = 0, serial = 19631248, error_code = 16 '\020', request_code = 0 '\000', minor_code = 224 '\340'}, xkeymap = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, window = 31457296, key_vector = "\000\000\000\000\000\000\000\000G\001\000\000\017\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000"}, xgeneric = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, extension = 31457296, evtype = 0}, xcookie = {type = 12, serial = 4445, send_event = 0, display = 0x12b8c90, extension = 31457296, evtype = 0, cookie = 0, data = 0xf00000147}, pad = {12, 4445, 0, 19631248, 31457296, 0, 64424509767, 597000454144, 0, 2098365, 0 <repeats 14 times>}}
#4 0x0000000000407741 in main (argc=, argv=) at FvwmPager.c:491
itemp =
i =
line = "Desk 0\000\000\aP", '\000' <repeats 89 times>
opt_num =
JunkRoot = 511101108348
JunkChild = 0
JunkX = 0
JunkY = -1292853888
JunkMask = 32737
(gdb)

Segmentation fault while using StartsOnScreen and/or StartsOnPage

Hi Thomas,

In continuation on #24 there is crash when using there attached style definitions. Interesting part is that crash doesn't occur if you add SkipMapping on the end of the style lines. Bug is triggered with f_TestSDP8 function, but it can be also triggered with older Goto*-based versions of the f_TestSDP if Style definitions remains defined.

Here is the full trace:

Reading symbols from /opt/fvwm3/bin/fvwm3...
[New LWP 1922809]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/opt/fvwm3/bin/fvwm3 -f /opt/NsCDE/config/NsCDE-Main.conf'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004a0421 in BroadcastConfig (event_type=1073741824, t=0xdd9540) at module_interface.c:378
378 BroadcastNewPacket(event_type, CONFIGARGS(t1));
(gdb) bt full
#0 0x00000000004a0421 in BroadcastConfig (event_type=1073741824, t=0xdd9540) at module_interface.c:378
t1 = 0x7ffc32506a20
#1 0x0000000000467bcf in __frame_setup_window (fw=0xdd9540, frame_g=0x7ffc32506b00, do_send_configure_notify=1, do_force=0, is_application_request=0) at frame.c:438
mr_args = 0x20001a
is_resized = 0
is_moved = 1
new_g = {x = -1400, y = 0, width = 733, height = 135}
#2 0x000000000046b1e1 in frame_setup_window (fw=0xdd9540, x=-1400, y=0, w=733, h=135, do_send_configure_notify=0) at frame.c:2057
g = {x = -1400, y = 0, width = 733, height = 135}
#3 0x0000000000471cc8 in MoveViewport (m=0xaeb970, newx=1400, newy=0, grab=1) at virtual.c:1416
t = 0x50f8d8 <Scr+24>
t1 = 0xdd9540
deltax = -1400
deltay = 0
PageTop = 0
PageLeft = 1400
PageBottom = 1049
PageRight = 2799
txl = 0
txr = 732
tyt = 0
tyb = 134
#4 0x000000000046e2e0 in __place_window (exc=0xdc0a60, pstyle=0x7ffc32506f80, attr_g=0x7ffc32506f10, start_style=..., mode=0, win_opts=0x7ffc32507360, reason=0x7ffc32506cf0) at placement.c:1850
m = 0xaeb970
t = 0x4b0bb8 <exc_create_context+46>
is_skipmapping_forbidden = 0
px = 1400
py = 0
pdeltax = 0
pdeltay = 0
screen_g = {x = 0, y = 0, width = 1400, height = 1050}
rc = 0
flags = {do_forbid_manual_placement = 0, do_honor_starts_on_page = 1, do_honor_starts_on_screen = 1, do_not_use_wm_placement = 0}
fw = 0xdd9540
#5 0x000000000046f1ff in setup_window_placement (fw=0xdd9540, pstyle=0x7ffc32506f80, attr_g=0x7ffc32506f10, win_opts=0x7ffc32507360, mode=PLACE_INITIAL) at placement.c:2300
rc = 0
exc = 0xdc0a60
ecc = {type = EXCT_NULL, x = {etrigger = 0xdd9540, elast = 0x400409a90}, w = {fw = 0xdd9540, w = 140721152617904, wcontext = 4548568}, m = {module = 0x7ffc32506f80}}
reason =
{pos = {reason = PR_POS_NORMAL, x = 0, y = 0, algo = 0, pl_position_string = 0x0, do_not_manual_icon_placement = 0, do_adjust_off_screen = 0, do_adjust_off_page = 0, is_pl_position_string_invalid = 0, has_tile_failed = 0, has_manual_failed = 0, has_placement_failed = 0}, screen = {reason = PR_SCREEN_STYLE, screen = 0xb3cda0 "c", g = {x = 0, y = 0, width = 1400, height = 1050}, was_modified_by_ewmh_workingarea = 1}, page = {reason = PR_PAGE_STYLE, px = 2, py = 1, do_switch_page = 0, do_honor_starts_on_page = 0, do_ignore_starts_on_page = 0}, desk = {reason = PR_DESK_STYLE, sod_reason = PR_DESK_STYLE, desk = 1, do_switch_desk = 1}}
start_style = {desk = 2, page_x = 2, page_y = 1, screen = 0xb3cda0 "c"}
#6 0x000000000045839a in AddWindow (ret_initial_map_command=0x7ffc32507350, exc=0xd34120, ReuseWin=0x0, win_opts=0x7ffc32507360) at add_window.c:2587
attr_g = {x = 0, y = 0, width = 723, height = 106}
fw = 0xdd9540
tmp = 0xdd9540
valuemask = 288
attributes =
{background_pixmap = 0, background_pixel = 4758467104797470208, border_pixmap = 11392400, border_pixel = 11392400, bit_gravity = 0, win_gravity = 0, backing_store = 0, backing_planes = 11392424, backing_pixel = 0, save_under = 0, event_mask = 140574238253060, do_not_propagate_mask = 140721152619088, override_redirect = 11383200, colormap = 11387936, cursor = 0}
wattr =
{x = 0, y = 0, width = 723, height = 106, border_width = 1, depth = 24, visual = 0xae8280, root = 710, class = 1, bit_gravity = 1, win_gravity = 1, backing_store = 0, backing_planes = 4294967295, --Type for more, q to quit, c to continue without paging--c
backing_pixel = 0, save_under = 0, colormap = 32, map_installed = 0, map_state = 0, all_event_masks = 6422576, your_event_mask = 0, do_not_propagate_mask = 0, override_redirect = 0, screen = 0xadc670}
style = {next = 0x0, prev = 0x0, id = {name = 0x0, window_id = 0, flags = {has_name = 0, has_window_id = 0}}, icon_name = 0xb7dc00 "CDE/Fpterm.l.pm", mini_icon_name = 0xb7d9b0 "CDE/Fpterm.s.pm", decor_name = 0x0, min_icon_width = 48 '0', max_icon_width = 64 '@', min_icon_height = 48 '0', max_icon_height = 64 '@', icon_resize_type = 0, icon_background_padding = 6 '\006', icon_background_relief = 0 '\000', icon_title_relief = 2 '\002', icon_font = 0xb077b0 "xft:DejaVu Serif:Medium:Book:size=10", window_font = 0xb07780 "xft:DejaVu Serif:Medium:Book:size=10", fore_color_name = 0x0, back_color_name = 0x0, fore_color_name_hi = 0x0, back_color_name_hi = 0x0, colorset = 1, colorset_hi = 2, border_colorset = 1, border_colorset_hi = 2, icon_title_colorset = 1, icon_title_colorset_hi = 2, icon_background_colorset = 18, border_width = 5, handle_width = 5, layer = 0, start_desk = 2, start_page_x = 2, start_page_y = 1, start_screen = 0xb3cda0 "c", min_window_width = 0, min_window_height = 0, max_window_width = 0, max_window_height = 0, shade_anim_steps = 48, snap_attraction = {proximity = 2, mode = 68, types = SNAP_NONE}, snap_grid_x = 1, snap_grid_y = 1, edge_delay_ms_move = 320, edge_delay_ms_resize = 1000, edge_resistance_move = 80, edge_resistance_xinerama_move = 0, icon_boxes = 0xaf8e20, norm_placement_penalty = 0, pl_penalty = {normal = 1, ontop = 5, icon = 10, sticky = 1, below = 0.0500000007, strut = 50}, pl_percent_penalty = {p99 = 12, p95 = 6, p85 = 4, p75 = 1}, pl_position_string = 0x0, initial_map_command_string = 0x0, title_format_string = 0x0, icon_title_format_string = 0x0, flags = {common = {is_sticky_across_pages = 0, is_sticky_across_desks = 0, has_icon_font = 1, has_no_border = 0, has_window_font = 1, title_dir = 0, user_states = 0, s = {do_circulate_skip = 0, do_circulate_skip_icon = 0, do_circulate_skip_shaded = 0, do_ewmh_donate_icon = 0, do_ewmh_donate_mini_icon = 0, do_ewmh_ignore_state_hints = 0, do_ewmh_ignore_strut_hints = 0, do_ewmh_mini_icon_override = 0, do_ewmh_use_stacking_hints = 0, do_ewmh_ignore_window_type = 0, do_iconify_window_groups = 0, do_ignore_icon_boxes = 0, do_ignore_restack = 0, do_use_window_group_hint = 0, do_lower_transient = 0, do_not_show_on_map = 0, do_raise_transient = 1, do_resize_opaque = 0, do_shrink_windowshade = 0, do_stack_transient_parent = 1, do_window_list_skip = 0, ewmh_maximize_mode = 1, has_depressable_border = 1, has_mwm_border = 1, has_mwm_buttons = 1, has_mwm_override = 1, has_no_icon_title = 0, has_override_size = 0, has_stippled_title = 0, has_stippled_icon_title = 0, has_no_sticky_stippled_title = 0, has_no_sticky_stippled_icon_title = 1, icon_override = 1, is_bottom_title_rotated = 0, is_fixed = 0, is_fixed_ppos = 0, is_uniconifiable = 0, is_unmaximizable = 0, is_unclosable = 0, is_maximize_fixed_size_disallowed = 0, is_icon_sticky_across_pages = 1, is_icon_sticky_across_desks = 0, is_icon_suppressed = 0, is_left_title_rotated_cw = 0, is_lenient = 0, is_size_fixed = 0, is_psize_fixed = 0, is_right_title_rotated_cw = 0, is_top_title_rotated = 0, use_icon_position_hint = 0, use_indexed_window_name = 0, use_indexed_icon_name = 0, windowshade_laziness = 0, use_title_decor_rotation = 0, focus_policy = {do_raise_focused_click = {client = 0, decor = 0, icon = 0}, do_raise_unfocused_click = {client = 0, decor = 0, icon = 0}, do_focus_click = {client = 0, decor = 0, icon = 0}, do_focus_enter = 1, do_unfocus_leave = 0, do_focus_by_program = 1, do_focus_by_function = 1, do_warp_pointer_on_focus_func = 1, is_lenient = 0, use_mouse_buttons = 7, use_modifiers = 0, do_pass_focus_click = 1, do_pass_raise_click = 1, do_ignore_focus_click_motion = 0, do_ignore_raise_click_motion = 0, do_allow_func_focus_click = 0, do_allow_func_raise_click = 0, do_open_grabs_focus = 0, do_open_grabs_focus_transient = 0, do_override_grab_focus = 1, do_close_releases_focus = 1, do_close_releases_focus_transient = 1, do_override_release_focus = 0, do_sort_windowlist_by = 0}}}, do_decorate_transient = 1, placement_mode = 5, ewmh_placement_mode = 0, ws_cr_motion_method = 0, do_save_under = 0, do_start_iconic = 0, do_start_lowered = 0, do_start_shaded = 0, start_shaded_dir = 0, has_border_width = 1, has_color_back = 0, has_color_fore = 0, has_color_back_hi = 0, has_color_fore_hi = 0, has_decor = 0, has_edge_delay_ms_move = 1, has_edge_delay_ms_resize = 1, has_edge_resistance_move = 1, has_edge_resistance_xinerama_move = 0, has_handle_width = 1, has_icon = 1, has_icon_boxes = 1, has_icon_size_limits = 1, has_min_window_size = 0, has_max_window_size = 0, has_icon_background_padding = 1, has_icon_background_relief = 1, has_icon_title_relief = 1, has_window_shade_steps = 1, has_mini_icon = 1, has_mwm_decor = 1, has_mwm_functions = 1, has_no_handles = 0, has_no_title = 0, has_ol_decor = 0, has_snap_grid = 1, has_snap_attraction = 1, is_button_disabled = 0, is_unmanaged = 0, use_backing_store = 0, use_parent_relative = 0, use_colorset = 1, use_colorset_hi = 1, use_border_colorset = 1, use_border_colorset_hi = 1, use_icon_title_colorset = 1, use_icon_title_colorset_hi = 1, use_icon_background_colorset = 1, use_layer = 0, use_no_pposition = 1, use_no_usposition = 0, use_no_transient_pposition = 0, use_no_transient_usposition = 0, use_start_on_desk = 1, use_start_on_page_for_transient = 0, use_start_on_screen = 1, manual_placement_honors_starts_on_page = 0, um_placement_honors_starts_on_page = 0, capture_honors_starts_on_page = 1, recapture_honors_starts_on_page = 0, has_placement_penalty = 0, has_placement_percentage_penalty = 0, has_placement_position_string = 0, has_initial_map_command_string = 0, has_title_format_string = 0, has_icon_title_format_string = 0}, flag_default = {common = {is_sticky_across_pages = 0, is_sticky_across_desks = 0, has_icon_font = 0, has_no_border = 0, has_window_font = 0, title_dir = 0, user_states = 0, s = {do_circulate_skip = 0, do_circulate_skip_icon = 0, do_circulate_skip_shaded = 0, do_ewmh_donate_icon = 0, do_ewmh_donate_mini_icon = 0, do_ewmh_ignore_state_hints = 0, do_ewmh_ignore_strut_hints = 0, do_ewmh_mini_icon_override = 0, do_ewmh_use_stacking_hints = 0, do_ewmh_ignore_window_type = 0, do_iconify_window_groups = 0, do_ignore_icon_boxes = 0, do_ignore_restack = 0, do_use_window_group_hint = 0, do_lower_transient = 0, do_not_show_on_map = 0, do_raise_transient = 0, do_resize_opaque = 0, do_shrink_windowshade = 0, do_stack_transient_parent = 0, do_window_list_skip = 0, ewmh_maximize_mode = 0, has_depressable_border = 0, has_mwm_border = 0, has_mwm_buttons = 0, has_mwm_override = 0, has_no_icon_title = 0, has_override_size = 0, has_stippled_title = 0, has_stippled_icon_title = 0, has_no_sticky_stippled_title = 0, has_no_sticky_stippled_icon_title = 0, icon_override = 0, is_bottom_title_rotated = 0, is_fixed = 0, is_fixed_ppos = 0, is_uniconifiable = 0, is_unmaximizable = 0, is_unclosable = 0, is_maximize_fixed_size_disallowed = 0, is_icon_sticky_across_pages = 0, is_icon_sticky_across_desks = 0, is_icon_suppressed = 0, is_left_title_rotated_cw = 0, is_lenient = 0, is_size_fixed = 0, is_psize_fixed = 0, is_right_title_rotated_cw = 0, is_top_title_rotated = 0, use_icon_position_hint = 0, use_indexed_window_name = 0, use_indexed_icon_name = 0, windowshade_laziness = 0, use_title_decor_rotation = 0, focus_policy = {do_raise_focused_click = {client = 1, decor = 1, icon = 0}, do_raise_unfocused_click = {client = 1, decor = 1, icon = 0}, do_focus_click = {client = 0, decor = 0, icon = 0}, do_focus_enter = 0, do_unfocus_leave = 0, do_focus_by_program = 1, do_focus_by_function = 0, do_warp_pointer_on_focus_func = 1, is_lenient = 0, use_mouse_buttons = 0, use_modifiers = 0, do_pass_focus_click = 1, do_pass_raise_click = 1, do_ignore_focus_click_motion = 0, do_ignore_raise_click_motion = 0, do_allow_func_focus_click = 1, do_allow_func_raise_click = 1, do_open_grabs_focus = 0, do_open_grabs_focus_transient = 0, do_override_grab_focus = 0, do_close_releases_focus = 1, do_close_releases_focus_transient = 0, do_override_release_focus = 0, do_sort_windowlist_by = 1}}}, do_decorate_transient = 0, placement_mode = 0, ewmh_placement_mode = 0, ws_cr_motion_method = 0, do_save_under = 0, do_start_iconic = 0, do_start_lowered = 0, do_start_shaded = 0, start_shaded_dir = 0, has_border_width = 0, has_color_back = 0, has_color_fore = 0, has_color_back_hi = 0, has_color_fore_hi = 0, has_decor = 0, has_edge_delay_ms_move = 0, has_edge_delay_ms_resize = 0, has_edge_resistance_move = 0, has_edge_resistance_xinerama_move = 0, has_handle_width = 0, has_icon = 0, has_icon_boxes = 0, has_icon_size_limits = 0, has_min_window_size = 0, has_max_window_size = 0, has_icon_background_padding = 0, has_icon_background_relief = 0, has_icon_title_relief = 0, has_window_shade_steps = 0, has_mini_icon = 0, has_mwm_decor = 0, has_mwm_functions = 0, has_no_handles = 0, has_no_title = 0, has_ol_decor = 0, has_snap_grid = 0, has_snap_attraction = 0, is_button_disabled = 0, is_unmanaged = 0, use_backing_store = 0, use_parent_relative = 0, use_colorset = 0, use_colorset_hi = 0, use_border_colorset = 0, use_border_colorset_hi = 0, use_icon_title_colorset = 0, use_icon_title_colorset_hi = 0, use_icon_background_colorset = 0, use_layer = 0, use_no_pposition = 0, use_no_usposition = 0, use_no_transient_pposition = 0, use_no_transient_usposition = 0, use_start_on_desk = 0, use_start_on_page_for_transient = 0, use_start_on_screen = 0, manual_placement_honors_starts_on_page = 0, um_placement_honors_starts_on_page = 0, capture_honors_starts_on_page = 0, recapture_honors_starts_on_page = 0, has_placement_penalty = 0, has_placement_percentage_penalty = 0, has_placement_position_string = 0, has_initial_map_command_string = 0, has_title_format_string = 0, has_icon_title_format_string = 0}, flag_mask = {common = {is_sticky_across_pages = 0, is_sticky_across_desks = 0, has_icon_font = 1, has_no_border = 0, has_window_font = 1, title_dir = 0, user_states = 0, s = {do_circulate_skip = 0, do_circulate_skip_icon = 0, do_circulate_skip_shaded = 0, do_ewmh_donate_icon = 0, do_ewmh_donate_mini_icon = 0, do_ewmh_ignore_state_hints = 0, do_ewmh_ignore_strut_hints = 0, do_ewmh_mini_icon_override = 0, do_ewmh_use_stacking_hints = 0, do_ewmh_ignore_window_type = 0, do_iconify_window_groups = 0, do_ignore_icon_boxes = 1, do_ignore_restack = 0, do_use_window_group_hint = 0, do_lower_transient = 1, do_not_show_on_map = 0, do_raise_transient = 1, do_resize_opaque = 0, do_shrink_windowshade = 0, do_stack_transient_parent = 1, do_window_list_skip = 0, ewmh_maximize_mode = 3, has_depressable_border = 1, has_mwm_border = 1, has_mwm_buttons = 1, has_mwm_override = 1, has_no_icon_title = 0, has_override_size = 0, has_stippled_title = 0, has_stippled_icon_title = 0, has_no_sticky_stippled_title = 0, has_no_sticky_stippled_icon_title = 1, icon_override = 3, is_bottom_title_rotated = 0, is_fixed = 0, is_fixed_ppos = 0, is_uniconifiable = 0, is_unmaximizable = 0, is_unclosable = 0, is_maximize_fixed_size_disallowed = 0, is_icon_sticky_across_pages = 1, is_icon_sticky_across_desks = 0, is_icon_suppressed = 1, is_left_title_rotated_cw = 0, is_lenient = 0, is_size_fixed = 0, is_psize_fixed = 0, is_right_title_rotated_cw = 0, is_top_title_rotated = 0, use_icon_position_hint = 0, use_indexed_window_name = 0, use_indexed_icon_name = 0, windowshade_laziness = 0, use_title_decor_rotation = 0, focus_policy = {do_raise_focused_click = {client = 0, decor = 0, icon = 0}, do_raise_unfocused_click = {client = 0, decor = 0, icon = 0}, do_focus_click = {client = 1, decor = 1, icon = 1}, do_focus_enter = 1, do_unfocus_leave = 1, do_focus_by_program = 0, do_focus_by_function = 1, do_warp_pointer_on_focus_func = 0, is_lenient = 0, use_mouse_buttons = 0, use_modifiers = 0, do_pass_focus_click = 0, do_pass_raise_click = 0, do_ignore_focus_click_motion = 0, do_ignore_raise_click_motion = 0, do_allow_func_focus_click = 0, do_allow_func_raise_click = 0, do_open_grabs_focus = 1, do_open_grabs_focus_transient = 1, do_override_grab_focus = 1, do_close_releases_focus = 0, do_close_releases_focus_transient = 1, do_override_release_focus = 0, do_sort_windowlist_by = 0}}}, do_decorate_transient = 1, placement_mode = 15, ewmh_placement_mode = 0, ws_cr_motion_method = 0, do_save_under = 0, do_start_iconic = 0, do_start_lowered = 0, do_start_shaded = 0, start_shaded_dir = 0, has_border_width = 1, has_color_back = 0, has_color_fore = 0, has_color_back_hi = 0, has_color_fore_hi = 0, has_decor = 0, has_edge_delay_ms_move = 1, has_edge_delay_ms_resize = 1, has_edge_resistance_move = 1, has_edge_resistance_xinerama_move = 1, has_handle_width = 1, has_icon = 1, has_icon_boxes = 1, has_icon_size_limits = 1, has_min_window_size = 0, has_max_window_size = 0, has_icon_background_padding = 1, has_icon_background_relief = 1, has_icon_title_relief = 1, has_window_shade_steps = 1, has_mini_icon = 1, has_mwm_decor = 1, has_mwm_functions = 1, has_no_handles = 0, has_no_title = 0, has_ol_decor = 0, has_snap_grid = 1, has_snap_attraction = 1, is_button_disabled = 0, is_unmanaged = 0, use_backing_store = 0, use_parent_relative = 0, use_colorset = 1, use_colorset_hi = 1, use_border_colorset = 1, use_border_colorset_hi = 1, use_icon_title_colorset = 1, use_icon_title_colorset_hi = 1, use_icon_background_colorset = 1, use_layer = 0, use_no_pposition = 1, use_no_usposition = 0, use_no_transient_pposition = 0, use_no_transient_usposition = 0, use_start_on_desk = 1, use_start_on_page_for_transient = 0, use_start_on_screen = 1, manual_placement_honors_starts_on_page = 0, um_placement_honors_starts_on_page = 0, capture_honors_starts_on_page = 0, recapture_honors_starts_on_page = 0, has_placement_penalty = 0, has_placement_percentage_penalty = 0, has_placement_position_string = 0, has_initial_map_command_string = 0, has_title_format_string = 0, has_icon_title_format_string = 0}, change_mask = {common = {is_sticky_across_pages = 0, is_sticky_across_desks = 0, has_icon_font = 0, has_no_border = 0, has_window_font = 0, title_dir = 0, user_states = 0, s = {do_circulate_skip = 0, do_circulate_skip_icon = 0, do_circulate_skip_shaded = 0, do_ewmh_donate_icon = 0, do_ewmh_donate_mini_icon = 0, do_ewmh_ignore_state_hints = 0, do_ewmh_ignore_strut_hints = 0, do_ewmh_mini_icon_override = 0, do_ewmh_use_stacking_hints = 0, do_ewmh_ignore_window_type = 0, do_iconify_window_groups = 0, do_ignore_icon_boxes = 0, do_ignore_restack = 0, do_use_window_group_hint = 0, do_lower_transient = 0, do_not_show_on_map = 0, do_raise_transient = 0, do_resize_opaque = 0, do_shrink_windowshade = 0, do_stack_transient_parent = 0, do_window_list_skip = 0, ewmh_maximize_mode = 0, has_depressable_border = 0, has_mwm_border = 0, has_mwm_buttons = 0, has_mwm_override = 0, has_no_icon_title = 0, has_override_size = 0, has_stippled_title = 0, has_stippled_icon_title = 0, has_no_sticky_stippled_title = 0, has_no_sticky_stippled_icon_title = 0, icon_override = 0, is_bottom_title_rotated = 0, is_fixed = 0, is_fixed_ppos = 0, is_uniconifiable = 0, is_unmaximizable = 0, is_unclosable = 0, is_maximize_fixed_size_disallowed = 0, is_icon_sticky_across_pages = 0, is_icon_sticky_across_desks = 0, is_icon_suppressed = 0, is_left_title_rotated_cw = 0, is_lenient = 0, is_size_fixed = 0, is_psize_fixed = 0, is_right_title_rotated_cw = 0, is_top_title_rotated = 0, use_icon_position_hint = 0, use_indexed_window_name = 0, use_indexed_icon_name = 0, windowshade_laziness = 0, use_title_decor_rotation = 0, focus_policy = {do_raise_focused_click = {client = 0, decor = 0, icon = 0}, do_raise_unfocused_click = {client = 0, decor = 0, icon = 0}, do_focus_click = {client = 0, decor = 0, icon = 0}, do_focus_enter = 0, do_unfocus_leave = 0, do_focus_by_program = 0, do_focus_by_function = 0, do_warp_pointer_on_focus_func = 0, is_lenient = 0, use_mouse_buttons = 0, use_modifiers = 0, do_pass_focus_click = 0, do_pass_raise_click = 0, do_ignore_focus_click_motion = 0, do_ignore_raise_click_motion = 0, do_allow_func_focus_click = 0, do_allow_func_raise_click = 0, do_open_grabs_focus = 0, do_open_grabs_focus_transient = 0, do_override_grab_focus = 0, do_close_releases_focus = 0, do_close_releases_focus_transient = 0, do_override_release_focus = 0, do_sort_windowlist_by = 0}}}, do_decorate_transient = 0, placement_mode = 0, ewmh_placement_mode = 0, ws_cr_motion_method = 0, do_save_under = 0, do_start_iconic = 0, do_start_lowered = 0, do_start_shaded = 0, start_shaded_dir = 0, has_border_width = 0, has_color_back = 0, has_color_fore = 0, has_color_back_hi = 0, has_color_fore_hi = 0, has_decor = 0, has_edge_delay_ms_move = 0, has_edge_delay_ms_resize = 0, has_edge_resistance_move = 0, has_edge_resistance_xinerama_move = 0, has_handle_width = 0, has_icon = 0, has_icon_boxes = 0, has_icon_size_limits = 0, has_min_window_size = 0, has_max_window_size = 0, has_icon_background_padding = 0, has_icon_background_relief = 0, has_icon_title_relief = 0, has_window_shade_steps = 0, has_mini_icon = 0, has_mwm_decor = 0, has_mwm_functions = 0, has_no_handles = 0, has_no_title = 0, has_ol_decor = 0, has_snap_grid = 0, has_snap_attraction = 0, is_button_disabled = 0, is_unmanaged = 0, use_backing_store = 0, use_parent_relative = 0, use_colorset = 0, use_colorset_hi = 0, use_border_colorset = 0, use_border_colorset_hi = 0, use_icon_title_colorset = 0, use_icon_title_colorset_hi = 0, use_icon_background_colorset = 0, use_layer = 0, use_no_pposition = 0, use_no_usposition = 0, use_no_transient_pposition = 0, use_no_transient_usposition = 0, use_start_on_desk = 0, use_start_on_page_for_transient = 0, use_start_on_screen = 0, manual_placement_honors_starts_on_page = 0, um_placement_honors_starts_on_page = 0, capture_honors_starts_on_page = 0, recapture_honors_starts_on_page = 0, has_placement_penalty = 0, has_placement_percentage_penalty = 0, has_placement_position_string = 0, has_initial_map_command_string = 0, has_title_format_string = 0, has_icon_title_format_string = 0}, has_style_changed = 0, has_title_format_string = 0, has_icon_title_format_string = 0}
sflags = 0x7ffc325070c0
buttons = 1023
used_sm = 0
do_resize_too = 0
b = {top_left = {width = 5, height = 24}, bottom_right = {width = 5, height = 5}, total_size = {width = 10, height = 29}}
mr_args = 0x409a90 <_start>
state_args = {shade_dir = 0, do_shade = 0, used_title_dir_for_shading = 0, do_max = 0}
w = 67108877
exc2 = 0xadb1a0
ecc = {type = 0, x = {etrigger = 0x0, elast = 0x7ffc32507030}, w = {fw = 0x7fd9fd8918e3 <_xcb_in_read+1155>, w = 5303811, wcontext = 14376596}, m = {module = 0xdc04c0}}
mon = 0x7fd9fe62d81d <poll_for_response+157>
#7 0x000000000043caca in HandleMapRequestKeepRaised (ea=0x7ffc32507448, KeepRaised=0, ReuseWin=0x0, win_opts=0x7ffc32507360) at events.c:3068
is_on_this_page = 0
is_new_window = 0
tmp = 0x1f00d34158
sf = 0xadb1a0
win_opts_bak = {initial_state = 0, flags = {do_override_ppos = 0, is_iconified_by_parent = 0, is_menu = 0, is_recapture = 0, use_initial_icon_xy = 0}, initial_icon_x = 0, initial_icon_y = 0, default_icon_x = 0, default_icon_y = 0}
ew = 67108877
fw = 0x0
initial_map_command = 0x0
m = 0x0
#8 0x000000000043c960 in HandleMapRequest (ea=0x7ffc32507448) at events.c:3005
#9 0x000000000043e9ea in dispatch_event (e=0x7ffc32507480) at events.c:4228
ea = {exc = 0xd34120}
ecc = {type = EXCT_EVENT, x = {etrigger = 0x7ffc32507480, elast = 0x0}, w = {fw = 0x0, w = 67108877, wcontext = 8}, m = {module = 0x0}}
dummyw = 71303179
w = 67108877
fw = 0x0
event_group = 0xaf4500
sce = 0x32507440
#10 0x000000000043eac8 in HandleEvents () at events.c:4279
ev = {type = 20, xany = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710}, xkey = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, root = 67108877, subwindow = 18446744073709551615, time = 68719476828, x = 2, y = 0, x_root = 92274701, y_root = 0, state = 0, keycode = 0, same_screen = 12}, xbutton = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, root = 67108877, subwindow = 18446744073709551615, time = 68719476828, x = 2, y = 0, x_root = 92274701, y_root = 0, state = 0, button = 0, same_screen = 12}, xmotion = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, root = 67108877, subwindow = 18446744073709551615, time = 68719476828, x = 2, y = 0, x_root = 92274701, y_root = 0, state = 0, is_hint = 0 '\000', same_screen = 12}, xcrossing = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, root = 67108877, subwindow = 18446744073709551615, time = 68719476828, x = 2, y = 0, x_root = 92274701, y_root = 0, mode = 0, detail = 0, same_screen = 12, focus = 0, state = 0}, xfocus = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, mode = 67108877, detail = 0}, xexpose = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, x = 67108877, y = 0, width = -1, height = -1, count = 92}, xgraphicsexpose = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, drawable = 710, x = 67108877, y = 0, width = -1, height = -1, count = 92, major_code = 16, minor_code = 2}, xnoexpose = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, drawable = 710, major_code = 67108877, minor_code = 0}, xvisibility = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, state = 67108877}, xcreatewindow = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, parent = 710, window = 67108877, x = -1, y = -1, width = 92, height = 16, border_width = 2, override_redirect = 0}, xdestroywindow = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877}, xunmap = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, from_configure = -1}, xmap = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, override_redirect = -1}, xmaprequest = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, parent = 710, window = 67108877}, xreparent = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, parent = 18446744073709551615, x = 92, y = 16, override_redirect = 2}, xconfigure = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, x = -1, y = -1, width = 92, height = 16, border_width = 2, above = 92274701, override_redirect = 0}, xgravity = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, x = -1, y = -1}, xresizerequest = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, width = 67108877, height = 0}, xconfigurerequest = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, parent = 710, window = 67108877, x = -1, y = -1, width = 92, height = 16, border_width = 2, above = 92274701, detail = 0, value_mask = 12}, xcirculate = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, event = 710, window = 67108877, place = -1}, xcirculaterequest = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, parent = 710, window = 67108877, place = -1}, xproperty = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, atom = 67108877, time = 18446744073709551615, state = 92}, xselectionclear = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, selection = 67108877, time = 18446744073709551615}, xselectionrequest = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, owner = 710, requestor = 67108877, selection = 18446744073709551615, target = 68719476828, property = 2, time = 92274701}, xselection = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, requestor = 710, selection = 67108877, target = 18446744073709551615, property = 68719476828, time = 2}, xcolormap = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, colormap = 67108877, new = -1, state = -1}, xclient = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, message_type = 67108877, format = -1, data = {b = "\\000\000\000\020\000\000\000\002\000\000\000\000\000\000\000\r\000\200\005", s = {92, 0, 16, 0, 2, 0, 0, 0, 13, 1408}, l = {68719476828, 2, 92274701, 0, 12}}}, xmapping = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, request = 67108877, first_keycode = 0, count = -1}, xerror = {type = 20, display = 0xb677, resourceid = 4981306780752543744, serial = 11383200, error_code = 198 '\306', request_code = 2 '\002', minor_code = 0 '\000'}, xkeymap = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, window = 710, key_vector = "\r\000\000\004\000\000\000\000\377\377\377\377\377\377\377\377\\000\000\000\020\000\000\000\002\000\000\000\000\000\000"}, xgeneric = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, extension = 710, evtype = 0}, xcookie = {type = 20, serial = 46711, send_event = 0, display = 0xadb1a0, extension = 710, evtype = 0, cookie = 67108877, data = 0xffffffffffffffff}, pad = {140569984630804, 46711, 4981306780752543744, 11383200, 710, 67108877, -1, 68719476828, 2, 92274701, 0, 12, 8026374555654160384, 5269222954816316014, 7310027690582435438, 4768837317553316929, 7957688116615147124, 7154287005842433396, 5057337066046647919, 3345099683619235952, 8030558231927614832, 4209851276438041710, 3113160733889734688, 7308604913722862640}}
#11 0x00000000004672d7 in main (argc=4, argv=0x7ffc325078f8) at fvwm3.c:2583
valuemask = 8202
attributes = {background_pixmap = 0, background_pixel = 12500670, border_pixmap = 0, border_pixel = 0, bit_gravity = 0, win_gravity = 0, backing_store = -36625503, backing_planes = 11207968, backing_pixel = 140574242868608, save_under = 124, event_mask = 2097155, do_not_propagate_mask = 4097, override_redirect = 1, colormap = 32, cursor = 2097156}
i = 1
len = 2
display_string = 0xadd330 "@Ȯ"
do_force_single_screen = 0
single_screen_num = -1
replace_wm = 0
visualClass = -1
visualId = -1
colorLimitop = {color_limit = -1, strict = -1, allocate = -1, not_dynamic = -1, use_named_table = -1}
exc = 0xb0a780
ecc = {type = EXCT_INIT, x = {etrigger = 0x0, elast = 0x770000007c}, w = {fw = 0x5b0000006e, w = 11248976, wcontext = 8}, m = {module = 0x7fd9fda7b9e0 <main_arena>}}
m = 0x0
(gdb)

FvwmPager divide by zero on startup - never appears

Ubuntu 18.04 config, worked on 2.6.9
Upgraded to Ubuntu 19, FvwmPager stopped working.
Jumped to Ubuntu 20 just now, still not working

strace shows

/usr/bin/strace -f -o /var/tmp/fvwm.strace /usr/local/bin/fvwm3


4492  access("/usr/local/libexec/fvwm3/3.0.0/FvwmPager", X_OK) = 0
4492  pipe([4, 5])                      = 0
4492  pipe([6, 7])                      = 0
4492  clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f4596acaa50) = 4493
4492  close(7)                          = 0
4492  close(4)    
[...]

4493  poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}])
4493  writev(3, [{iov_base="\\\0\5\0 \0\0\0\6\0_DYellowlu", iov_len=20}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 20
4493  poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
4493  recvmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0J\0\0\0\0\0\377\377\377\377\0\0\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0", i
ov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
4493  --- SIGFPE {si_signo=SIGFPE, si_code=FPE_INTDIV, si_addr=0x557ac0637959} ---
4492  <... select resumed> )            = 1 (in [6])
4493  +++ killed by SIGFPE (core dumped) +++
4492  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_DUMPED, si_pid=4493, si_uid=1000, si_status=SIGFPE, si_utime=0, si_stime=0} ---
4492  wait4(-1, NULL, WNOHANG, NULL)    = 4493
4492  wait4(-1, NULL, WNOHANG, NULL)    = -1 ECHILD (No child processes)
4492  rt_sigreturn({mask=[]})           = 1

Panframes: switching between desktops not reliable / broken

Expected behaviour from fvwm2: mouse moved over /beyond the edge of desktop (left edge of left screen or right edge of right screen) switches desktop and is indicated in pager. Similarly top / bottom.

Behaviour in fvwm3 branch ta/desktops: top-bottom switch is only possible on main screen, left-right works on both screens. However, it's no longer reliable, sometimes it works, sometimes it doesn't and the mouse pointer simply hits the wall of the edge and can go beyond.
From my current workflow, my first guess is that remmina seems to make fvwm3 misbehave every now and then.

Behaviour in fvwm3 branch ta/gh-22: no switching with the mouse occurs at all. (The pager shows the RightPanel, though.)

Tested with standard config.

FVWM3 on Kubuntu: unknown type name ‘RROutput’

Hello All,
i have tried to do the ./configure && make and it all goes well, but then it fails with the following

What am I missing? this is a 'new' installation and I have put all the dependencies I could

... Making all in libs make[2]: Entering directory '/home/me/Downloads/fvwm3-master/libs' CC FScreen.o In file included from FScreen.c:29: FScreen.h:79:2: error: unknown type name ‘RROutput’ 79 | RROutput rr_output; | ^~~~~~~~ FScreen.h:162:41: error: unknown type name ‘XRRScreenChangeNotifyEvent’ 162 | void monitor_output_change(Display *, XRRScreenChangeNotifyEvent *); | ^~~~~~~~~~~~~~~~~~~~~~~~~~ FScreen.c: In function ‘FScreenSelect’: FScreen.c:235:2: warning: implicit declaration of function ‘XRRSelectInput’; did you mean ‘XSelectInput’? [-Wimplicit-function-declaration] 235 | XRRSelectInput(disp, DefaultRootWindow(disp), | ^~~~~~~~~~~~~~ | XSelectInput FScreen.c:236:3: error: ‘RRScreenChangeNotifyMask’ undeclared (first use in this function) 236 | RRScreenChangeNotifyMask | RROutputChangeNotifyMask); | ^~~~~~~~~~~~~~~~~~~~~~~~ FScreen.c:236:3: note: each undeclared identifier is reported only once for each function it appears in FScreen.c:236:30: error: ‘RROutputChangeNotifyMask’ undeclared (first use in this function) 236 | RRScreenChangeNotifyMask | RROutputChangeNotifyMask); | ^~~~~~~~~~~~~~~~~~~~~~~~ FScreen.c: At top level: FScreen.c:240:37: error: unknown type name ‘XRRScreenChangeNotifyEvent’ 240 | monitor_output_change(Display *dpy, XRRScreenChangeNotifyEvent *e) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ FScreen.c: In function ‘scan_screens’: FScreen.c:293:2: error: unknown type name ‘XRRMonitorInfo’ 293 | XRRMonitorInfo *rrm; | ^~~~~~~~~~~~~~ FScreen.c:298:8: warning: implicit declaration of function ‘XRRGetMonitors’ [-Wimplicit-function-declaration] 298 | rrm = XRRGetMonitors(dpy, root, false, &n); | ^~~~~~~~~~~~~~ FScreen.c:298:6: warning: assignment to ‘int *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion] 298 | rrm = XRRGetMonitors(dpy, root, false, &n); | ^ FScreen.c:306:40: error: request for member ‘name’ in something not a structure or union 306 | char *name = XGetAtomName(dpy, rrm[i].name); | ^ FScreen.c:324:20: error: request for member ‘x’ in something not a structure or union 324 | m->si->x = rrm[i].x; | ^ FScreen.c:325:20: error: request for member ‘y’ in something not a structure or union 325 | m->si->y = rrm[i].y; | ^ FScreen.c:326:20: error: request for member ‘width’ in something not a structure or union 326 | m->si->w = rrm[i].width; | ^ FScreen.c:327:20: error: request for member ‘height’ in something not a structure or union 327 | m->si->h = rrm[i].height; | ^ FScreen.c:328:29: error: request for member ‘outputs’ in something not a structure or union 328 | m->si->rr_output = *rrm[i].outputs; | ^ FScreen.c:329:29: error: request for member ‘primary’ in something not a structure or union 329 | m->si->is_primary = rrm[i].primary > 0; | ^ FScreen.c: In function ‘FScreenInit’: FScreen.c:338:2: error: unknown type name ‘XRRScreenResources’ 338 | XRRScreenResources *res = NULL; ... FScreen.c:377:3: warning: implicit declaration of function ‘XRRFreeScreenResources’ [-Wimplicit-function-declaration] 377 | XRRFreeScreenResources(res); | ^~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [Makefile:575: FScreen.o] Error 1 make[2]: Leaving directory '/home/me/Downloads/fvwm3-master/libs' make[1]: *** [Makefile:507: all-recursive] Error 1 make[1]: Leaving directory '/home/me/Downloads/fvwm3-master' make: *** [Makefile:448: all] Error 2 $>
Thanks

No .desktop file generated from make install

Did ./configure make sudo make install
logged out to lightdm. No new fvwm3 session.
ls -la /usr/local/xessions gives no fvwm3.desktop. Copied and renamed fvwm2.desktop to fvwm3.desktop. Edited some of the contents in that file.
Did sudo killall Xorg to force reload of lightdm. Problem solved.

uname -a Linux macbookserver 5.0.0-38-generic #41-Ubuntu SMP Tue Dec 3 00:27:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 19.04 Release: 19.04 Codename: disco

Position of windows on screens, desks and pages is not accurate after FVWM 3 Restart

As subject tells.

Preliminary observation:
I have found windows from Virtual-0 on Virtual-1 (When 1 0 is selected on Virtual-0, 1 1 from Virtual-0 was visible on Virtual-1) after 'Restart'.

According to conversation on #17 state from temporary file is read by FVWM on restart, but at that point, FVWM doesn't understand anything about monitors.

I will make more detailed tests later ...

Testing notes for FVWM3-rc.X release candidate

Hi all,

As determined by me (which is arbitrary), there's a few more things left to sort before a potential release candidate, but not too much.

As of what's on master now, I'd like as much focus on the following to be tested, please. Leave any comments below.

  • DesktopConfiguration:

    • global:
      • Are icons placed correctly with different IconBox styles?
      • Are windows placed correctly with different X11 geometry strings? (80x24+32+32 for example)
      • Test styles: StartsOnScreen, SkipMapping, StartsOnDesk, StartsOnPage
    • per-monitor:
      • Configure per-screen IconBox styles. Are icons placed correctly? Are they retained after a reboot?
      • Test styles: StartsOnScreen, SkipMapping, StartsOnDesk, StartsOnPage
  • What happens when you switch between global and per-monitor DesktopConfiguration dynamically in FvwmConsole while FVWM3 is running?

  • Restarting FVWM3:

    • Are windows retained across desks/pages/monitors correctly;
    • Are icons retained across desks/pages/monitors correctly?

Plus, anything else!

X windows started on newly defined monitor doesn't accept focus

It was said on the fvwm list that after turning new monitor everything should work without restart of fvwm3, but ...

Either windows moved (with mouse) from primary monitor to the new one, or started there, most of them doesn't have a keyboard/mouse focus. I can move them around, but that's it. Strangely, gvim doesn't have this problem, while Okular (Qt PDF viewer) even doesn't show drop down menu when I click on "File" or "View" etc ... When moved to the old display, they have a focus.

Another interesting behaviour is when I move from old monitor, from focused window to the new one, I can focus window on the new monitor, but only if I position mouse on the titlebar, borders or corners. The moment mouse pointer is moved further in the window - out of decoration, focus is lost.

Workaround: FVWM Restart solves all this.

Tried with the master and ta/desktops branch - same behaviour.

CentOS 7 x86_64
Xorg X.Org X Server 1.20.4

Pager problems in gh-28

This is all tested with the default config.

Clicking with Mousebutton 1 changes the colour of the active page, but it doesn't change the actual page.
Clicking the Desk-number works as usual and changes desk.
One click with the Mouse button 2 and the pager turns empty or nothing happens at all (depending on ???).
Dragging a mini-icon inside the pager moves the mini-icon from one page to another, but not in reality.
Window-Menu Send-to Page works and is correctly indicated in the pager.
Mouse button 3 inside the pager does all sorts of funny things, mini-icons jump around, pager becomes empty, ...

Segmentation fault while turning off display port cable and mouse pointer is positioned on the monitor which is going off

Hello!

As per request on [email protected], I have compiled (with -g) fvwm3 and tried things what Thomas said it would be nice to try.

There are glitches (described in separate issues), but the main one is this from the subject: if I enable secondary monitor, either before login or with "xrandr --output eDP1 --mode 1920x1080 --primary --output DP1 --mode 2560x1440 --right-of eDP1 --noprimary" I can work ok.

If mouse pointer is on eDP1 and I turn off DP1, windows from the DP1 are migrated to eDP1 and nothing crashes. But, if mouse pointer is left on the DP1 while pulling off it's cable, FVWM 3 dies with segmentation fault and I'm logged out.

System:
HP EliteBook 850 G2
CentOS 7 x86_64
Xorg X.Org X Server 1.20.4
fvwm3 from today's (12. 1. 2020.) clone of the repo.

Here is the gdb trace of the core dump. I have them 3 (repeatable) and they are all the same. Some debug info is missing, but probably this is enought description and function names for thing to be repeatable.

(root!prokopije:~)# gdb /opt/fvwm3/bin/fvwm3 /var/coredumps/core-prokopije-fvwm3-7011-11-6392
Reading symbols from /opt/fvwm3/bin/fvwm3...done.
[New LWP 6392]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/opt/fvwm3/bin/fvwm3 -f /opt/NsCDE/config/NsCDE-Main.conf -s'.
Program terminated with signal 11, Segmentation fault.
#0 monitor_by_name (name=) at FScreen.c:130
130 FScreen.c: No such file or directory.
Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 cairo-1.15.12-4.el7.x86_64 expat-2.1.0-10.el7_3.x86_64 fontconfig-2.13.0-4.3.el7.x86_64 freetype-2.8-14.el7.x86_64 fribidi-1.0.2-1.el7_7.1.x86_64 gdk-pixbuf2-2.36.12-3.el7.x86_64 glib2-2.56.1-5.el7.x86_64 glibc-2.17-292.el7.x86_64 graphite2-1.3.10-1.el7_3.x86_64 harfbuzz-1.7.5-2.el7.x86_64 libICE-1.0.9-9.el7.x86_64 libSM-1.2.2-2.el7.x86_64 libX11-1.6.7-2.el7.x86_64 libXau-1.0.8-2.1.el7.x86_64 libXcursor-1.1.15-1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libXfixes-5.0.3-1.el7.x86_64 libXft-2.3.2-2.el7.x86_64 libXpm-3.5.12-1.el7.x86_64 libXrandr-1.5.1-2.el7.x86_64 libXrender-0.9.10-1.el7.x86_64 libblkid-2.23.2-61.el7_7.1.x86_64 libcroco-0.6.12-4.el7.x86_64 libffi-3.0.13-18.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libglvnd-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-egl-1.0.1-0.8.git5baa1e5.el7.x86_64 libglvnd-glx-1.0.1-0.8.git5baa1e5.el7.x86_64 libmount-2.23.2-61.el7_7.1.x86_64 libpng-1.5.13-7.el7_2.x86_64 librsvg2-2.40.20-1.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 libstroke-0.5.1-33.el7.x86_64 libthai-0.1.14-9.el7.x86_64 libuuid-2.23.2-61.el7_7.1.x86_64 libxcb-1.13-1.el7.x86_64 libxml2-2.9.1-6.el7_2.3.x86_64 pango-1.42.4-4.el7_7.x86_64 pcre-8.32-17.el7.x86_64 pixman-0.34.0-1.el7.x86_64 xz-libs-5.2.2-1.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt
#0 monitor_by_name (name=) at FScreen.c:130
#1 0x00000000004861b3 in FindScreen (screen=screen@entry=FSCREEN_BY_NAME, arg=) at FScreen.c:383
#2 FScreenGetScrRect (arg=arg@entry=0x7ffe64ed0a20, screen=screen@entry=FSCREEN_BY_NAME, x=x@entry=0x7ffe64ed08c0, y=y@entry=0x7ffe64ed08c4, w=w@entry=0x7ffe64ed08c8, h=h@entry=0x7ffe64ed08cc)
at FScreen.c:433
#3 0x000000000044d507 in __place_window (reason=0x7ffe64ed0930, win_opts=0x7ffe64ed0ba0, mode=1, attr_g=0x7ffe64ed0b90, pstyle=0x7ffe64ed0c50, exc=0x1721470, start_style=...) at placement.c:1669
#4 setup_window_placement (fw=, pstyle=pstyle@entry=0x7ffe64ed0c50, attr_g=attr_g@entry=0x7ffe64ed0b90, win_opts=win_opts@entry=0x7ffe64ed0ba0, mode=mode@entry=PLACE_AGAIN)
at placement.c:2277
#5 0x000000000044e19e in CMD_PlaceAgain (cond_rc=, exc=0x17631e0, action=0x1725d2a "") at placement.c:2353
#6 0x00000000004627cb in __execute_function (cond_rc=cond_rc@entry=0x7ffe64ed1360, exc=exc@entry=0x172fca0, action=action@entry=0x175f5f4 "PlaceAgain", exec_flags=,
exec_flags@entry=128 '\200', args=args@entry=0x0, has_ref_window_moved=has_ref_window_moved@entry=0) at functions.c:639
#7 0x00000000004634e1 in execute_function (exec_flags=128 '\200', action=0x175f5f4 "PlaceAgain", exc=0x172fca0, cond_rc=0x7ffe64ed1360) at functions.c:1302
#8 execute_function_override_window (cond_rc=cond_rc@entry=0x7ffe64ed1360, exc=exc@entry=0x173e0b0, action=0x175f5f4 "PlaceAgain", exec_flags=128 '\200', exec_flags@entry=0 '\000', fw=)
at functions.c:1352
#9 0x0000000000456859 in CMD_All (cond_rc=0x7ffe64ed1360, exc=0x173e0b0, action=) at conditional.c:1646
#10 0x00000000004627cb in __execute_function (cond_rc=cond_rc@entry=0x0, exc=exc@entry=0x1748740, action=action@entry=0x49e1d9 "All PlaceAgain", exec_flags=, exec_flags@entry=0 '\000',
args=args@entry=0x0, has_ref_window_moved=has_ref_window_moved@entry=0) at functions.c:639
#11 0x00000000004634e1 in execute_function (exec_flags=0 '\000', action=0x49e1d9 "All PlaceAgain", exc=0x1748740, cond_rc=0x0) at functions.c:1302
#12 execute_function_override_window (cond_rc=cond_rc@entry=0x0, exc=exc@entry=0x0, action=action@entry=0x49e1d9 "All PlaceAgain", exec_flags=exec_flags@entry=0 '\000', fw=fw@entry=0x0) at functions.c:1352
#13 0x0000000000428e97 in HandleRRScreenChangeNotify (e=e@entry=0x7ffe64ed16b0) at events.c:1798
#14 0x000000000042b5b8 in dispatch_event (e=e@entry=0x7ffe64ed16b0) at events.c:4122
#15 0x000000000042c25d in HandleEvents () at events.c:4231
#16 0x000000000040af4a in main (argc=, argv=0x7ffe64ed1f28) at fvwm3.c:2597

FvwmBacker screen awareness in per-monitor DesktopConfiguration mode

FvwmBacker in per-monitor mode should operate only on screen where pointer is located, and not applying background on other screen(s), where desk and page are not in sync across screens like in global mode.

At least when using Colorset or "-solid" as internal commands, or even possibly fvwm-root. It cannot be responsible for other program's handling of virtual screen geometry and coordinates of course.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.