9

私はインターネットを検索し、プロパティのフィールドを1つだけ設定する例を見つけました:

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

しかし、どうすれば複数のフィールドを設定できますか? 私は試した:

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

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

運の悪い他の多くの変種。出来ますか ?:)


Ok....

これを修正するために xprop のパッチを書きました。動作しますが、それが正しいかどうかはわかりません。
@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':
4

1 に答える 1

12

xprop のコードを見ると、それは不可能です。

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

これは、値を に解析するコードです-set

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

したがって、単一のアトムのみを解析します。


また、バグを開きました。多分彼らはこれを追加します。

于 2012-07-28T12:55:38.160 に答える