[dev] [dwm] systray implementation

2012-03-25 Thread Jan Christoph Ebersbach
Hi,

I created a systray implementation for dwm. It can be dowloaded from 
http://dwm.suckless.org/patches/systray. Please let me know about any issues.

Cheers,

Jan Christoph


[dev] xid of a current window

2012-03-25 Thread Swiatoslaw Gal
How can I get a xid of a focused window?  Like with xprop, but
without user interaction.  Say, I want to write an program
that would log the xid of a currently focused window every second.

Sincerely,
s.



Re: [dev] xid of a current window

2012-03-25 Thread Anselm R Garbe
On 25 March 2012 13:37, Swiatoslaw Gal swiatoslaw@univie.ac.at wrote:
 How can I get a xid of a focused window?  Like with xprop, but
 without user interaction.  Say, I want to write an program
 that would log the xid of a currently focused window every second.

http://tronche.com/gui/x/xlib/input/XGetInputFocus.html

Cheers,
Anselm



Re: [dev] xid of a current window

2012-03-25 Thread Connor Lane Smith
On 25 March 2012 12:42, Anselm R Garbe garb...@gmail.com wrote:
 http://tronche.com/gui/x/xlib/input/XGetInputFocus.html

Note that a Window is an integer, specifically the window's XID.

cls



Re: [dev] xid of a current window

2012-03-25 Thread Ivan Kanakarakis
if you don't want to write something of your own, then

$ xprop -root _NET_ACTIVE_WINDOW
 _NET_ACTIVE_WINDOW(WINDOW): window id # 0x400050

or

$ xdotool getactivewindow
 4194384

will work, as long as your wm supports and correctly sets _NET_ACTIVE_WINDOW

note that xdotool outputs the id as an int,
to get the same with xprop do something like:

$ xprop -root _NET_ACTIVE_WINDOW | cut -d# -f2 | xargs printf %d\n
 4194384

some apps work with both formats, others require int
xwininfo can also give you the window id, and with -int it will be in int form.


On 25/03/2012, Connor Lane Smith c...@lubutu.com wrote:
 On 25 March 2012 12:42, Anselm R Garbe garb...@gmail.com wrote:
 http://tronche.com/gui/x/xlib/input/XGetInputFocus.html

 Note that a Window is an integer, specifically the window's XID.

 cls




-- 
*Ivan c00kiemon5ter V Kanakarakis *



Re: [dev] xid of a current window

2012-03-25 Thread Swiatoslaw Gal
-- From Ivan Kanakarakis 25-03-2012 at 15:20 --
 if you don't want to write something of your own, then
 
 $ xprop -root _NET_ACTIVE_WINDOW
  _NET_ACTIVE_WINDOW(WINDOW): window id # 0x400050

xprop -root shows me the values of the folowing fields:
CUT_BUFFER0(STRING)
WM_NAME(STRING)
_NET_SUPPORTED(ATOM)
ESETROOT_PMAP_ID(PIXMAP)
_XROOTPMAP_ID(PIXMAP)
RESOURCE_MANAGER(STRING)
_XKB_RULES_NAMES(STRING)
XFree86_VT(INTEGER)
XFree86_DDC_EDID1_RAWDATA(INTEGER)

 $ xdotool getactivewindow
XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error

 will work, as long as your wm supports and correctly sets _NET_ACTIVE_WINDOW
I assume that this is not the case.
I am using dwm.  Does it matter?

s.



Re: [dev] xid of a current window

2012-03-25 Thread Ivan Kanakarakis
A quick look into the tip of dwm, shows that it is the case for dwm.
It doesn't set the _NET_ACTIVE_WINDOW property correctly,
although the atom is there, and included in _NET_SUPPORTED.

To fix that, one must call (supposing c is
the Client that holds the current window) :

XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW,
32, PropModeReplace, (unsigned char*)c-window, 1);

everytime the current window changes.
also one should delete the property if there is no active window
(either no window on the screen, or no window focused)



On 25/03/2012, Swiatoslaw Gal swiatoslaw@univie.ac.at wrote:
 -- From Ivan Kanakarakis 25-03-2012 at 15:20 --
 if you don't want to write something of your own, then

 $ xprop -root _NET_ACTIVE_WINDOW
  _NET_ACTIVE_WINDOW(WINDOW): window id # 0x400050

 xprop -root shows me the values of the folowing fields:
 CUT_BUFFER0(STRING)
 WM_NAME(STRING)
 _NET_SUPPORTED(ATOM)
 ESETROOT_PMAP_ID(PIXMAP)
 _XROOTPMAP_ID(PIXMAP)
 RESOURCE_MANAGER(STRING)
 _XKB_RULES_NAMES(STRING)
 XFree86_VT(INTEGER)
 XFree86_DDC_EDID1_RAWDATA(INTEGER)

 $ xdotool getactivewindow
 XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
 xdo_get_active_window reported an error

 will work, as long as your wm supports and correctly sets
 _NET_ACTIVE_WINDOW
 I assume that this is not the case.
 I am using dwm.  Does it matter?

 s.




-- 
*Ivan c00kiemon5ter V Kanakarakis *



Re: [dev] xid of a current window

2012-03-25 Thread Andreas Amann

On Sun, Mar 25, 2012 at 04:33:23PM +0300, Ivan Kanakarakis wrote:
 A quick look into the tip of dwm, shows that it is the case for dwm.
 It doesn't set the _NET_ACTIVE_WINDOW property correctly,
 although the atom is there, and included in _NET_SUPPORTED.
 
 To fix that, one must call (supposing c is
 the Client that holds the current window) :
 
 XChangeProperty(dpy, root, netatom[NetActiveWindow], XA_WINDOW,
 32, PropModeReplace, (unsigned char*)c-window, 1);
 
 everytime the current window changes.
 also one should delete the property if there is no active window
 (either no window on the screen, or no window focused)

Attached is a patch which does that.  It works for me. 

If you want support for NetActiveWindow, you probably also want support
for NetClientList.  The second patch implements that.

Andreas

# HG changeset patch
# Parent bbfe55c2f7562ea3e428d4c7cbd1d8da0c32f02f

diff --git a/dwm.c b/dwm.c
--- a/dwm.c
+++ b/dwm.c
@@ -499,6 +500,7 @@
cleanupmon(mons);
XSync(dpy, False);
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
+   XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
 }
 
 void
@@ -858,8 +860,10 @@
XSetWindowBorder(dpy, c-win, dc.sel[ColBorder]);
setfocus(c);
}
-   else
+   else {
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+   XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+   }
selmon-sel = c;
drawbars();
 }
@@ -1520,8 +1526,12 @@
 
 void
 setfocus(Client *c) {
-   if(!c-neverfocus)
+   if(!c-neverfocus) {
XSetInputFocus(dpy, c-win, RevertToPointerRoot, CurrentTime);
+   XChangeProperty(dpy, root, netatom[NetActiveWindow],
+   XA_WINDOW, 32, PropModeReplace,
+   (unsigned char *) (c-win), 1);
+   }
sendevent(c, wmatom[WMTakeFocus]);
 }
 
@@ -1777,8 +1789,10 @@
return;
grabbuttons(c, False);
XSetWindowBorder(dpy, c-win, dc.norm[ColBorder]);
-   if(setfocus)
+   if(setfocus) {
XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
+   XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
+   }
 }
 
 void
# HG changeset patch
# Parent bbfe55c2f7562ea3e428d4c7cbd1d8da0c32f02f

diff --git a/dwm.c b/dwm.c
--- a/dwm.c
+++ b/dwm.c
@@ -60,7 +60,7 @@
 enum { ColBorder, ColFG, ColBG, ColLast };  /* color */
 enum { NetSupported, NetWMName, NetWMState,
NetWMFullscreen, NetActiveWindow, NetWMWindowType,
-   NetWMWindowTypeDialog, NetLast }; /* EWMH atoms */
+   NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */
 enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms 
*/
 enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
ClkClientWin, ClkRootWin, ClkLast }; /* clicks */
@@ -238,6 +238,7 @@
 static Bool updategeom(void);
 static void updatebarpos(Monitor *m);
 static void updatebars(void);
+static void updateclientlist(void);
 static void updatenumlockmask(void);
 static void updatesizehints(Client *c);
 static void updatestatus(void);
@@ -1157,6 +1161,8 @@
XRaiseWindow(dpy, c-win);
attach(c);
attachstack(c);
+   XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, 
PropModeAppend,
+   (unsigned char *) (c-win), 1);
XMoveResizeWindow(dpy, c-win, c-x + 2 * sw, c-y, c-w, c-h); /* 
some windows require this */
setclientstate(c, NormalState);
if (c-mon == selmon)
@@ -1607,6 +1617,7 @@
netatom[NetWMFullscreen] = XInternAtom(dpy, _NET_WM_STATE_FULLSCREEN, 
False);
netatom[NetWMWindowType] = XInternAtom(dpy, _NET_WM_WINDOW_TYPE, 
False);
netatom[NetWMWindowTypeDialog] = XInternAtom(dpy, 
_NET_WM_WINDOW_TYPE_DIALOG, False);
+   netatom[NetClientList] = XInternAtom(dpy, _NET_CLIENT_LIST, False);
/* init cursors */
cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
@@ -1629,6 +1640,7 @@
/* EWMH support per view */
XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
PropModeReplace, (unsigned char *) netatom, NetLast);
+   XDeleteProperty(dpy, root, netatom[NetClientList]);
/* select for events */
wa.cursor = cursor[CurNormal];
wa.event_mask = 
SubstructureRedirectMask|SubstructureNotifyMask|ButtonPressMask|PointerMotionMask
@@ -1802,6 +1816,7 @@
}
free(c);
focus(NULL);
+   updateclientlist();
arrange(m);
 }
 
@@ -1848,6 +1863,19 @@
m-by = -bh;
 }
 
+void
+updateclientlist() {
+   Client *c;
+   Monitor *m;
+
+   XDeleteProperty(dpy, root, netatom[NetClientList]);
+   for(m = mons; m; m = m-next)
+   

Re: [dev] xid of a current window

2012-03-25 Thread Anselm R Garbe
On 25 March 2012 15:56, Andreas Amann am...@physik.tu-berlin.de wrote:
 Attached is a patch which does that.  It works for me.

 If you want support for NetActiveWindow, you probably also want support
 for NetClientList.  The second patch implements that.

Thanks, I applied both patches. Even though I really more and more hat
this whole EWMH cruft. Since  there was basic EWMH support in dwm,
things became more unreadable...

Cheers,
Anselm



[dev] deprecated projects

2012-03-25 Thread Anselm R Garbe
Hi there,

the deprecated suckless.org projects can be found at:

  http://oldhg.suckless.org/

I will keep those repos around for a while. However they are abandoned.

If anyone sees further potential for cleaning up

  http://hg.suckless.org/

please let me know.

Cheers,
Anselm



Re: [dev] xid of a current window

2012-03-25 Thread Benjamin R. Haskell

On Sun, 25 Mar 2012, Swiatoslaw Gal wrote:


-- From Ivan Kanakarakis 25-03-2012 at 15:20 --

$ xdotool getactivewindow

XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error


You could use the focused window instead (which was what you originally 
asked about):


$ xdotool getwindowfocus
48234505

dwm doesn't (or didn't? - depending on today's patches) set 
_NET_ACTIVE_WINDOW, but there's still a focused window.


--
Best,
Ben



Re: [dev] xid of a current window

2012-03-25 Thread Swiatoslaw Gal
 You could use the focused window instead (which was what you
 originally asked about):
 
 $ xdotool getwindowfocus
 48234505

Yes, this works fine (without any today's patches).
But the very first answer: XGetInputFocus was _exactly_
what I was looking for.

Is there a reason that a _window_manager_ provides EHWHMS...
whatever support?  This can be done with an external program,
am I wrong?

s.



Re: [dev] deprecated projects

2012-03-25 Thread anonymous
On Sun, Mar 25, 2012 at 06:10:43PM +0200, Anselm R Garbe wrote:
 If anyone sees further potential for cleaning up
 
   http://hg.suckless.org/
 
 please let me know.

Merge ssid into sbase?




Re: [dev] xid of a current window

2012-03-25 Thread Andreas Amann
On Sun, Mar 25, 2012 at 07:47:36PM +0200, Swiatoslaw Gal wrote:
  You could use the focused window instead (which was what you
  originally asked about):
  
  $ xdotool getwindowfocus
  48234505
 
 Yes, this works fine (without any today's patches).
 But the very first answer: XGetInputFocus was _exactly_
 what I was looking for.
 
 Is there a reason that a _window_manager_ provides EHWHMS...
 whatever support?  This can be done with an external program,
 am I wrong?

The reason why I wrote these patches was that external programs do not work
reliably without support from the WM.  In particular xdotool
getwindowfocus is quite frustrating.  See also the xdotool manpage
itself:

getactivewindow: Output the current active window. This command is often
more reliable than getwindowfocus.

Apart from that I agree with Anselm that EWMH is a pain...

Andreas







Re: [dev] deprecated projects

2012-03-25 Thread hiro
You can come around and clean up all that shit I have lying on my desk
if you like.

Delete surf perhaps?