Sto provando a utilizzare XResizeWindow() per creare una finestra che occuperà 2 monitor, ma il? Window manager? lo sta limitando a uno.Come rendere la finestra X11 estesa a più monitor
C'è un suggerimento o una proprietà che posso associare alla finestra per dire al WM di non limitarlo?
Per il mio caso di test, ho due monitor 1600x1200 che nVidia presenta come uno schermo 3200x1200 su KDE4. XDisplayWidth (display, 0); restituisce 3200 e XDisplayHeight (display, 0); restituisce 1200.
Quando chiamo
XCreateWindow(display, DefaultRootWindow(display),
220, 0, 1700, 930,
1, DefaultDepth(display,screen),
InputOutput, CopyFromParent,
CWCursor, &attributes);
di 1700x930 finestra al 220,0 ottengo una finestra di 1593x930 a 0,0, mantenendolo interamente sul monitor di sinistra. Qualsiasi XResizeWindow più grande di quello viene ridotto a 1593. (Suppongo che i 7 pixel siano decorazione della finestra, che va bene.)
Ma, se io XMoveWindow (visualizzazione, vinci, 800, 0), si sposterà la finestra per allargare gli schermi e posso quindi ingrandirlo fino a 3200 di larghezza (meno pochi pixel).
C'è qualcosa che posso fare per dire al window manager, oa chiunque stia facendo questo, non limitare la finestra ad un singolo monitor, e lasciarmi usare l'intero schermo?
Grazie!
%xrandr -q --verbose
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 3200 x 1200, current 3200 x 1200, maximum 3200 x 1200
default connected 3200x1200+0+0 (0x161) normal (normal) 0mm x 0mm
Identifier: 0x160
Timestamp: 64409661
Subpixel: unknown
Clones:
CRTC: 0
CRTCs: 0
Transform: 1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
filter:
3200x1200 (0x161) 192.0MHz *current
h: width 3200 start 0 end 0 total 3200 skew 0 clock 60.0KHz
v: height 1200 start 0 end 0 total 1200 clock 50.0Hz
Aha! L'impostazione di min_width fa il trucco. L'applicazione cerca di essere rigida sulla dimensione solo quando l'utente dice esplicitamente all'applicazione quanto vuole che fosse la finestra. Così posso controllare le dimensioni dello schermo e se è abbastanza grande, forzarlo manualmente con min_width, quindi ridimensionare min_width a 640 dopo che è stato ridimensionato. Grazie! –
Per la dimensione specificata utilizzata è necessario utilizzare USSize/USMinSize ecc anziché il P * (le preferenze specificate dall'utente devono essere rispettate di più). –