fvwmorg / fvwm3 Goto Github PK
View Code? Open in Web Editor NEWFVWM version 3 -- the successor to fvwm2
License: Other
FVWM version 3 -- the successor to fvwm2
License: Other
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
Following previous recommendations, I was unable capturing events of the type stick
. I guess this can be unified with another open issue.
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:
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);
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
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!
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.
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 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].
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.
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.
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.
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.
Hello.
The attached config file will result in an fvwm3: malloc: zero size.
error and abnormal exit.
(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.
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:
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
I will try to construct an example here:
eDP1 as laptop screen + DP1 as external monitor:
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
Just my 2 ... 3 cents ...
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.
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.
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.
Lines 188 to 193 in 6213e5e
See that in the code below there is a check on the value of out_fim
Lines 851 to 874 in 6213e5e
Why doesn't the same check exist on the line below?
Lines 577 to 578 in 6213e5e
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):
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.
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.
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.
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.
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.
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
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.
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).
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:
With per-monitor
snapattraction is broken.
This is because of monitor detection.
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.
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
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:
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:
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.
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:
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.
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
.
i'm openning this feature request following a talk on #fvwm channel, to discuss the feasibility of adding global menu support on fvwm3.
"it's a menu exported out of an application window via DBus and placed instead on a desktop panel. "
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.
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)
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.
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)
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)
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
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.
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
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
I've put together a package of files, tools including a config file (origin is mostly from the FVWM official site) which I've modified and it supports themes that extend to gtk, kde and gnome for a more uniform look.
https://github.com/kevingnet/fvwm_themed
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 ...
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:
IconBox
styles?geometry
strings? (80x24+32+32
for example)StartsOnScreen, SkipMapping, StartsOnDesk, StartsOnPage
IconBox
styles. Are icons placed correctly? Are they retained after a reboot?StartsOnScreen, SkipMapping, StartsOnDesk, StartsOnPage
What happens when you switch between global
and per-monitor
DesktopConfiguration
dynamically in FvwmConsole
while FVWM3
is running?
Restarting FVWM3:
Plus, anything else!
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
test
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, ...
EwmhBaseStruts glitches when using two or more screens with different resolutions. FVWM3 will honor EwmhBaseStruts but only for the screen with the higher resolution available. EwmhBaseStruts will be ignored in all other screens.
fvwm-1.log
fvwm3_default-config_per-monitor.log
fvwm3_default-config_unchanged.log
In both cases, fvwm3 starts nicely and I haven't run into problems yet. But the RightPanel does not start. During startup, I can see in the top left corner components popping up (Pager, stalonetray, etc?), but there is no Panel at all, and after popping up, they are gone. No trace.
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 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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.