I still can’t get Xojo maximum window size works in TWM (in this case I’m using i3-wm). The window is always launched in maximize state. The only working solution is to set the window as a modal (movable modal, modal dialog, etc). I’m also trying to mimic Xojo window by using Gtk. This Gtk code works as expected.
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *app;
gtk_init(&argc, &argv);
app = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(app), "Hello Gtk");
gtk_window_set_resizable(GTK_WINDOW(app), false);
gtk_window_set_gravity(GTK_WINDOW(app), GDK_GRAVITY_STATIC);
gtk_widget_set_size_request(app, 600, 400);
gtk_widget_show_all(app);
g_signal_connect(app, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_main();
return 0;
}
This is window properties for both Xojo and Gtk.
_NET_WM_USER_TIME(CARDINAL) = 13288924
_NET_WM_STATE(ATOM) =
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x1, 0x3e, 0x0, 0x0, 0x0
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
window id # of group leader: 0x2c00001
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 46137349
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x2c00004
WM_CLIENT_LEADER(WINDOW): window id # 0x2c00001
_NET_WM_PID(CARDINAL) = 5965
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "pattisahusiwa"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified minimum size: 600 by 400
program specified maximum size: 600 by 400
window gravity: Static
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "DebugMyApplication", "DebugMyApplication"
WM_ICON_NAME(STRING) = "Untitled"
_NET_WM_ICON_NAME(UTF8_STRING) = "Untitled"
WM_NAME(STRING) = "Untitled"
_NET_WM_NAME(UTF8_STRING) = "Untitled"
_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
I3_FLOATING_WINDOW(CARDINAL) = 1
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
window id # of group leader: 0x2c00001
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 46137349
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x2c00004
WM_CLIENT_LEADER(WINDOW): window id # 0x2c00001
_NET_WM_PID(CARDINAL) = 5989
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "pattisahusiwa"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified minimum size: 600 by 400
program specified maximum size: 600 by 400
window gravity: Static
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "gtk-hello", "Gtk-hello"
WM_ICON_NAME(STRING) = "Hello Gtk"
_NET_WM_ICON_NAME(UTF8_STRING) = "Hello Gtk"
WM_NAME(STRING) = "Hello Gtk"
_NET_WM_NAME(UTF8_STRING) = "Hello Gtk"
The only main differences are I3_FLOATING_WINDOW(CARDINAL) = 1
and _MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x1, 0x3e, 0x0, 0x0, 0x0
. This behavior also affected Xojo license, options, about, and code completion windows. I need to force i3-wm to launch these windows in floating mode
for_window [class="Xojo" title="Licenses"] floating enable
for_window [class="Xojo" title="Options..."] floating enable
for_window [class="Xojo" title="About Xojo"] floating enable
for_window [class="Xojo" title="Untitled"] floating enable
Any idea?