2012-07-28 4 views
6

I Internet gesucht und gefunden Beispiele mit nur einem Bereich der Immobilieneinstellung:xprop mehrere Felder von Atom-Eigenschaft

xprop -id "$windowid" -f _NET_WM_STATE 32a -set _NET_WM_STATE _NET_WM_STATE_ABOVE 

aber wie kann ich mehrere Felder festgelegt? Ich habe versucht:

xprop -id "$windowid" -f _NET_WM_STATE 32a -set _NET_WM_STATE '_NET_WM_STATE_ABOVE, _NET_WM_STATE_SKIP_TASKBAR' 

und

xprop -id "$windowid" -f _NET_WM_STATE 32aa -set _NET_WM_STATE _NET_WM_STATE_ABOVE,_NET_WM_STATE_SKIP_TASKBAR 

und viele andere Varianten ohne Glück. Ist es möglich? :)


Ok ....

ich einen Patch für xprop schrieb dieses Problem zu beheben, und es funktioniert, aber nicht wissen, ist es richtig.
Dank @ MichałGórny.
(xprop.c, v 1,6)

--- xprop.c 2012-07-31 11:24:01.178117974 +0400 
+++ xprop.mod 2012-07-31 11:23:19.434784430 +0400 
@@ -1487,11 +1487,20 @@ 
    break; 
     } 
     case 'a': { 
- static Atom avalue; 
- avalue = Parse_Atom(value, False); 
- type = XA_ATOM; 
- data = (unsigned char *) &avalue; 
- nelements = 1; 
+ static unsigned long data32[MAXELEMENTS]; 
+ char * value2 = strdup(value); 
+ char * tmp = strtok(value2,","); 
+ nelements = 0; 
+ while(NULL != tmp){ 
+  data32[nelements] = Parse_Atom(tmp, False); 
+  nelements +=1; 
+  if(nelements >= MAXELEMENTS) 
+  break; 
+  tmp = strtok(NULL,","); 
+ } 
+ type = XA_ATOM; 
+ data = (unsigned char *) data32; 
+ free(value2); 
    break; 
     } 
     case 'm': 

Antwort

10

Mit Blick auf den Code des xprop, dann ist es nicht möglich.

case 'a': { 
    static Atom avalue; 
    avalue = Parse_Atom(value, False); 
    type = XA_ATOM; 
    data = (unsigned char *) &avalue; 
    nelements = 1; 
    break; 
} 

Dies ist der Code, der den Wert zu -set analysiert.

static Atom 
Parse_Atom (const char *name, int only_if_exists) 
{ 
    /* may return None = 0 */ 
    return XInternAtom(dpy, name, only_if_exists); 
} 

So analysiert es nur ein einzelnes Atom.


Ich habe auch a bug dafür geöffnet; vielleicht fügen sie das hinzu.

+1

+1 für die Quelle gehen. –