2016-10-28 3 views
-2

Ich möchte nur eine Beispiel-App erstellen, wenn die einzige mögliche Aktion in der Nähe ist. Ist das mit Unity (Ubuntu) möglich? Mache ich einen Fehler?Xlib + Unity Nur erlaubte Aktion schließen

#include <stdio.h> 
#include <X11/Xlib.h> 
#include <X11/Xos.h> 
#include <X11/Xatom.h> 
static void only_close(Display *display, Window window) 
{ 

    int retval; 
    Atom aa = XInternAtom(display, "_NET_WM_ALLOWED_ACTIONS", False); 
    Atom close = XInternAtom(display, " _NET_WM_ACTION_CLOSE", False); 

    retval = XChangeProperty(display, window, aa, XA_ATOM, 32, PropModeReplace, (unsigned char*)close, 1); 

    printf("###### XChangeProperty() reted %d\n", retval); 
} 

int main() 
{ 

    Display *dis; 
    Window win; 

    dis = XOpenDisplay(NULL); 
    win = XCreateSimpleWindow(dis, RootWindow(dis, 0), 1, 1, 500, 500, \ 
           0, BlackPixel (dis, 0), BlackPixel(dis, 0)); 
    XMapWindow(dis, win); 
    printf("window %i\n", (int)win); 
    only_close(dis, win); 
    XFlush(dis); 
    sleep(10); 
    return(0); 
} 
+0

Sie fragen uns, wenn Sie einen Fehler gemacht haben, haben Sie versucht, den Code in erster Linie zu kompilieren? Wenn ja, welchen Fehler bekommst du? Bitte beachten Sie die Hilfe zu [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask). – Enfyve

+0

Ich habe eigentlich keinen Fehler. Völlig explizit nichts hinzuzufügen. Alle Aktionen (Größenänderung, Minimierung, Vollbild ...) sind erlaubt – Preovaleo

+0

Benötigt mehr Details, was ist der Fehler? Siehe ersten Kommentar –

Antwort

0

Zuerst müssen Sie (unsigned char*)&close (eine Adresse der Daten)

Zweitens Sie setzen die Eigenschaft zu früh, vor WM eine Chance hat, um das Fenster zu verwalten. Ein WM muss den alten Wert dieser Eigenschaft verwerfen, wenn es das Fenster zuerst verwaltet. Versuchen Sie es nach dem ersten Belichtungsereignis oder nach einer Verzögerung von 1 Sekunde.

Drittens ist es nicht garantiert, dass es funktioniert. Auf meinem Rechner (nicht Unity) sind die Fensteraktionen in der Taskleiste zwar deaktiviert, aber der Fensterrahmen hat sie immer noch, die WM erlaubt sie noch. Ich weiß nicht, ob es ein Fehler in meinem WM ist oder nicht.