2016-02-25 14 views
7

A quanto pare questo è qualcosa che non è parte del protocollo nucleo Wayland, ma sto usando Weston e l'estensione xdg-shell sembra avere il metodo necessario:Come impostare le coordinate x, y di una finestra in Wayland?

xdg_surface_set_window_geometry

così mi sono imbattuto wayland-scanner per creare codice xdg e file di intestazione:

wayland-scanner code < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.c

wayland-scanner client-header < ./weston-1.6.0/protocol/xdg-shell.xml > xdg_shell.h

Il co de sto usando è più o meno la seguente:

surface = wl_compositor_create_surface(compositor); 
if(surface == NULL) { 
    ... 
} 

native_window = wl_egl_window_create(surface, some_width, some_height); 
if(native_window == NULL) { 
    ... 
} 

_xdg_surface = xdg_shell_get_xdg_surface(_xdg_shell, surface); 

xdg_surface_set_window_geometry(_xdg_surface, 0, 0, some_width, some_height); 

Il codice viene eseguito senza errori, ma non fa nulla. Sto correndo su Debian Jessie con i pacchetti stock di Wayland e Weston.

Se ci sono approcci diversi da xdg_shell che potrebbero funzionare, sono tutto orecchie.

+0

Hai trovato una risposta? Sto anche cercando di impostare una posizione predefinita per la mia finestra sotto weston –

+1

Con un po 'di aiuto dai forum di Wayland/Weston ho fatto una soluzione alternativa, che era di impostare le mie finestre a dimensioni di output a schermo intero con uno sfondo trasparente, quindi compensare il mio contenuto all'interno lo schermo intero. Le API Wayland non sono pensate per questo tipo di controllo del livello di applicazione al momento. – mpr

risposta

2

Non sono sicuro che corrisponda alle tue necessità, ma in weston/desktop-shell/shell.c in weston_view_set_initial_position (...) c'è una funzione usata in esso, chiamata set_position.

Imposta il valore xy predefinito e funziona.

+0

Come hai ottenuto gli oggetti 'weston_view' e' desktop_shell' dal tuo programma client? – mpr

+0

È accessibile nelle fonti di Weston. Non so se è accessibile dal lato del client. Questa modifica verrà applicata per ogni finestra. –

+0

Ho cercato di estendere Weston, ma per il momento è stato un po 'troppo difficile per me. Per il momento lascerò la domanda aperta, con l'idea che forse le API di Wayland offriranno più controllo del livello di applicazione in futuro. – mpr

Problemi correlati