sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

dwm-defaulttransparency-r1521.diff (3238B)


      1 diff -r 53d98940cb04 config.def.h
      2 --- a/config.def.h	Fri Jun 04 11:41:16 2010 +0100
      3 +++ b/config.def.h	Sun Jun 06 22:48:32 2010 +0200
      4 @@ -12,14 +12,16 @@
      5  static const unsigned int snap      = 32;       /* snap pixel */
      6  static const Bool showbar           = True;     /* False means no bar */
      7  static const Bool topbar            = True;     /* False means bottom bar */
      8 +static const double defaultopacity  = 0.75;
      9 @@ -52,6 +54,9 @@
     10  	/* modifier                     key        function        argument */
     11  	{ MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
     12  	{ MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
     13 +	{ MODKEY|ShiftMask,		XK_s,	   spawn,	   SHCMD("transset-df -a --dec .1") },
     14 +	{ MODKEY|ShiftMask,		XK_d,	   spawn,	   SHCMD("transset-df -a --inc .1") },
     15 +	{ MODKEY|ShiftMask,		XK_f,	   spawn,	   SHCMD("transset-df -a .75") },
     16  	{ MODKEY,                       XK_b,      togglebar,      {0} },
     17  	{ MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
     18  	{ MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
     19 diff -r 53d98940cb04 dwm.c
     20 --- a/dwm.c	Fri Jun 04 11:41:16 2010 +0100
     21 +++ b/dwm.c	Sun Jun 06 22:48:32 2010 +0200
     22 @@ -58,7 +58,7 @@
     23  enum { CurNormal, CurResize, CurMove, CurLast };        /* cursor */
     24  enum { ColBorder, ColFG, ColBG, ColLast };              /* color */
     25  enum { NetSupported, NetWMName, NetWMState,
     26 -       NetWMFullscreen, NetLast };                      /* EWMH atoms */
     27 +       NetWMFullscreen, NetLast, NetWMWindowsOpacity }; /* EWMH atoms */
     28  enum { WMProtocols, WMDelete, WMState, WMLast };        /* default atoms */
     29  enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
     30         ClkClientWin, ClkRootWin, ClkLast };             /* clicks */
     31 @@ -179,6 +179,7 @@
     32  static void drawtext(const char *text, unsigned long col[ColLast], Bool invert);
     33  static void enternotify(XEvent *e);
     34  static void expose(XEvent *e);
     35 +static void opacity(Client *c, double opacity);
     36  static void focus(Client *c);
     37  static void focusin(XEvent *e);
     38  static void focusmon(const Arg *arg);
     39 @@ -816,6 +817,18 @@
     40  }
     41  
     42  void
     43 +opacity(Client *c, double opacity)
     44 +{
     45 +	if(opacity >= 0 && opacity <= 1) {
     46 +		unsigned long real_opacity[] = { opacity * 0xffffffff };
     47 +		XChangeProperty(dpy, c->win, netatom[NetWMWindowsOpacity], XA_CARDINAL,
     48 +				32, PropModeReplace, (unsigned char *)real_opacity,
     49 +				1);
     50 +	} else
     51 +		XDeleteProperty(dpy, c->win, netatom[NetWMWindowsOpacity]);
     52 +}
     53 +
     54 +void
     55  focus(Client *c) {
     56  	if(!c || !ISVISIBLE(c))
     57  		for(c = selmon->stack; c && !ISVISIBLE(c); c = c->snext);
     58 @@ -1104,6 +1117,7 @@
     59  	*c = cz;
     60  	c->win = w;
     61  	updatetitle(c);
     62 +	opacity(c, defaultopacity);
     63  	if(XGetTransientForHint(dpy, w, &trans))
     64  		t = wintoclient(trans);
     65  	if(t) {
     66 @@ -1539,6 +1553,7 @@
     67  	netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
     68  	netatom[NetWMState] = XInternAtom(dpy, "_NET_WM_STATE", False);
     69  	netatom[NetWMFullscreen] = XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False);
     70 +	netatom[NetWMWindowsOpacity] = XInternAtom(dpy, "_NET_WM_WINDOW_OPACITY", False);
     71  	/* init cursors */
     72  	cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
     73  	cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);