JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Update arg.h from sbase
[st.git] / st.c
diff --git a/st.c b/st.c
index fb084b1..4fb3311 100644 (file)
--- a/st.c
+++ b/st.c
@@ -11,6 +11,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <signal.h>
+#include <stdint.h>
 #include <sys/ioctl.h>
 #include <sys/select.h>
 #include <sys/stat.h>
@@ -239,7 +240,7 @@ typedef struct {
        Colourmap cmap;
        Window win;
        Drawable buf;
-       Atom xembed, wmdeletewin, netwmname;
+       Atom xembed, wmdeletewin, netwmname, netwmpid;
        XIM xim;
        XIC xic;
        Draw draw;
@@ -379,7 +380,7 @@ static void tsetdirtattr(int);
 static void tsetmode(bool, bool, int *, int);
 static void tfulldirt(void);
 static void techo(char *, int);
-static uint32_t tdefcolor(int *, int *, int);
+static int32_t tdefcolor(int *, int *, int);
 static void tselcs(void);
 static void tdeftran(char);
 static inline bool match(uint, uint);
@@ -1666,7 +1667,7 @@ tdeleteline(int n) {
        tscrollup(term.c.y, n);
 }
 
-uint32_t
+int32_t
 tdefcolor(int *attr, int *npar, int l) {
        int32_t idx = -1;
        uint r, g, b;
@@ -2932,6 +2933,7 @@ xinit(void) {
        Cursor cursor;
        Window parent;
        int sw, sh;
+       pid_t thispid = getpid();
 
        if(!(xw.dpy = XOpenDisplay(NULL)))
                die("Can't open display\n");
@@ -3026,6 +3028,10 @@ xinit(void) {
        xw.netwmname = XInternAtom(xw.dpy, "_NET_WM_NAME", False);
        XSetWMProtocols(xw.dpy, xw.win, &xw.wmdeletewin, 1);
 
+       xw.netwmpid = XInternAtom(xw.dpy, "_NET_WM_PID", False);
+       XChangeProperty(xw.dpy, xw.win, xw.netwmpid, XA_CARDINAL, 32,
+                       PropModeReplace, (unsigned char *)&thispid, 1);
+
        xresettitle();
        XMapWindow(xw.dpy, xw.win);
        xhints();
@@ -3661,11 +3667,11 @@ run(void) {
                }
        }
 
+       ttynew();
        if(!xw.isfixed)
                cresize(w, h);
        else
                cresize(xw.fw, xw.fh);
-       ttynew();
 
        gettimeofday(&lastblink, NULL);
        gettimeofday(&last, NULL);