You are not logged in.
zowki wrote:Welcome all dwm users! Post a screenshot of your desktop and optionally along with your configuration files.
Heres mine:
Clean desktop
http://shaunsite.googlepages.com/thumb2.pngBusy desktop
http://shaunsite.googlepages.com/thumb1.pngI combine the work and play workspaces to prevent myself from doing both!
Running programs: vim, w3m, urxvt, conky
Font: TerminusI have question to you how do you dmenu like this please share your config
Its in .xinitrc
xsetroot -name "$(date +"%a %b %d %r")"
How's my programming? Call 1-800-DEV-NULL
Offline
SpeedVin wrote:zowki wrote:Welcome all dwm users! Post a screenshot of your desktop and optionally along with your configuration files.
Heres mine:
Clean desktop
http://shaunsite.googlepages.com/thumb2.pngBusy desktop
http://shaunsite.googlepages.com/thumb1.pngI combine the work and play workspaces to prevent myself from doing both!
Running programs: vim, w3m, urxvt, conky
Font: TerminusI have question to you how do you dmenu like this please share your config
Its in .xinitrc
xsetroot -name "$(date +"%a %b %d %r")"
Thank you for sharing it!
Shell Scripter | C/C++/Python/Java Coder | ZSH
Offline
Hello today i updated my DWM to 5.6 I see some little changes in my config.h , but no visual changes
Shell Scripter | C/C++/Python/Java Coder | ZSH
Offline
Hello today i updated my DWM to 5.6 I see some little changes in my config.h , but no visual changes
Better Xinerama support seems to be the big news in this release:
thayer williams ~ cinderwick.ca
Offline
SpeedVin wrote:Hello today i updated my DWM to 5.6 I see some little changes in my config.h , but no visual changes
Better Xinerama support seems to be the big news in this release:
Thanks I know about it and do know what will be add in next realase?
Last edited by SpeedVin (2009-08-01 10:07:23)
Shell Scripter | C/C++/Python/Java Coder | ZSH
Offline
I copied the colour scheme from zowki:
config.h
/* See LICENSE file for copyright and license details. */
/* appearance */
static const char font[] = "-*-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#333333";
static const char normbgcolor[] = "#051121";
static const char normfgcolor[] = "#FFFFFF";
static const char selbordercolor[] = "#1793D1";
static const char selbgcolor[] = "#1793D1";
static const char selfgcolor[] = "#FFFFFF";
static unsigned int borderpx = 1; /* border pixel of windows */
static unsigned int snap = 32; /* snap pixel */
static Bool showbar = True; /* False means no bar */
static Bool topbar = True; /* False means bottom bar */
/* tagging */
static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static unsigned int tagset[] = {1, 1}; /* after start, first tag is selected */
static Rule rules[] = {
/* class instance title tags mask isfloating */
{ "Gimp", NULL, NULL, 0, True },
{ "Firefox", NULL, NULL, 1 << 8, True },
};
/* layout(s) */
static float mfact = 0.55; /* factor of master area size [0.05..0.95] */
static Bool resizehints = True; /* False means respect size hints in tiled resizals */
static Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile }, /* first entry is default */
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* key definitions */
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
static const char *termcmd[] = { "urxvt", NULL };
static Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
{ MODKEY|ShiftMask, XK_q, quit, {0} },
};
/* button definitions */
/* click can be a tag number (starting at 0),
* ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
/* click event mask button function argument */
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};
I chose to not have a seperate conky bar, but rather to pipe info into the dwm status bar. Conky displays my mpd status, the number of new emails (using a pyhton script), day, date and time:
.conkyrc
out_to_x no
out_to_console yes
TEXT
$if_mpd_playing $mpd_status : $mpd_smart | $endif Mail : ${execi 300 python ~/.scripts/gmail.py} | ${time %a %b %d %I:%M%P}
.scripts/gmail.py
import os
import string
#Enter your username and password below within double quotes
# eg. username="username" and password="password"
username="****"
password="****"
com="wget -O - https://"+username+":"+password+"@mail.google.com/mail/feed/atom --no-check-certificate"
temp=os.popen(com)
msg=temp.read()
index=string.find(msg,"<fullcount>")
index2=string.find(msg,"</fullcount>")
fc=int(msg[index+11:index2])
if fc==0:
print "0 new"
else:
print str(fc)+" new"
And to conclude, my .xinitrc to make sure all these things work nicely together, set ctrl-alt-backspace to terminate X, set my wallpaper and startup mpdscribble and numlockx:
.xinitcr
#! /bin/sh
setxkbmap -option terminate:ctrl_alt_bksp
eval `cat ~/.fehbg` &
conky | while true; read line; do xsetroot -name "$line"; done &
mpdscribble &
numlockx &
exec dwm
Screenshot:
*snip*
Last edited by whordijk (2010-06-19 09:17:45)
Offline
Is there an easier way to get a seperate status bar? Editing config.h is no problem, but I'd rather leave dwm.c alone.
Thanks for any suggestions.
Offline
Is there an easier way to get a seperate status bar? Editing config.h is no problem, but I'd rather leave dwm.c alone.
Thanks for any suggestions.
A separate status bar can be achieved by writing an adequate .conkyrc and running conky. However, the problem with that is that when dwm is set at tiling mode, the windows will overlap this bar. In order to crop the area on which the windows are being tiled, adjustments in dwm.c need to be made so a space for the conky status bar can be defined. I don't know if there is another solution for this: it seems to me this is the most logical one!
Offline
Is there an easier way to get a seperate status bar? Editing config.h is no problem, but I'd rather leave dwm.c alone.
Thanks for any suggestions.
Unfortunately, the only way I found to do this was to edit dwm.c to shorten the bar. That way I could layer dzen underneath it:
Cthulhu For President!
Offline
http://img.photobucket.com/albums/v319/ … estkop.png
/* See LICENSE file for copyright and license details. */
/* appearance */
static const char font[] = "-*-terminus-medium-r-normal-*-12-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#000000";
static const char normbgcolor[] = "#1994d1";
static const char normfgcolor[] = "#ffffff";
static const char selbordercolor[] = "#000000";
static const char selbgcolor[] = "#000000";
static const char selfgcolor[] = "#ffffff";
static unsigned int borderpx = 1; /* border pixel of windows */
static unsigned int snap = 32; /* snap pixel */
static Bool showbar = True; /* False means no bar */
static Bool topbar = False; /* False means bottom bar */
/* tagging */
static const char tags[][MAXTAGLEN] = { "bash", "www", "mail", "chat", "graphics", "thunar", "geany", "misc" };
static unsigned int tagset[] = {1, 1}; /* after start, first tag is selected */
static Rule rules[] = {
/* class instance title tags mask isfloating */
{ "Gimp", NULL, NULL, 1 << 4, False },
{ "Swiftfox", NULL, NULL, 1 << 1, False },
{ "URxvt", NULL, NULL, 1, False},
{ "Pidgin", NULL, NULL, 1 << 3, False },
{ "Thunar", NULL, NULL, 1 << 5, False },
{ "Geany", NULL, NULL, 1 << 6, False },
{ "Smplayer", NULL, NULL, 1 << 7, True },
{ "Abiword", NULL, NULL, 1 << 7, False },
{ "Gnumeric", NULL, NULL, 1 << 7, False },
{ "Thunderbird", NULL, NULL, 1 << 2, True },
{ "Inkscape", NULL, NULL, 1 << 4, False },
{ "Scribus", NULL, NULL, 1 << 4, False },
{ "Brasero", NULL, NULL, 1 << 7, True },
};
/* layout(s) */
static float mfact = 0.55; /* factor of master area size [0.05..0.95] */
static Bool resizehints = True; /* False means respect size hints in tiled resizals */
static Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile }, /* first entry is default */
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* key definitions */
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
static const char *termcmd[] = { "urxvt", NULL };
static const char *swiftfoxcmd[] = { "swiftfox", NULL };
static const char *gimpcmd[] = { "gimp", NULL };
static const char *pidgincmd[] = { "pidgin", NULL };
static const char *thunarcmd[] = { "thunar", NULL};
static const char *geanycmd[] = { "geany", NULL};
static const char *smplayercmd[] = { "smplayer", NULL};
static const char *abiwordcmd[] = { "abiword", NULL};
static const char *gnumericcmd[] = { "gnumeric", NULL};
static const char *thunderbirdcmd[] = { "thunderbird3", NULL};
static const char *inkscapecmd[] = { "inkscape", NULL};
static const char *scribuscmd[] = { "scribus", NULL};
static const char *braserocmd[] = { "brasero", NULL};
static Key keys[] = {
/* modifier key function argument */
{ MODKEY|ShiftMask, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
{ MODKEY|ShiftMask, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY|ShiftMask, XK_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
{ MODKEY|ShiftMask, XK_q, quit, {0} },
{ MODKEY, XK_f, spawn, {.v = swiftfoxcmd} },
{ MODKEY, XK_g, spawn, {.v = gimpcmd} },
{ MODKEY, XK_p, spawn, {.v = pidgincmd} },
{ MODKEY|ShiftMask, XK_t, spawn, {.v = thunarcmd} },
{ MODKEY|ShiftMask, XK_g, spawn, {.v = geanycmd} },
{ MODKEY, XK_x, spawn, {.v = smplayercmd} },
{ MODKEY, XK_a, spawn, {.v = abiwordcmd} },
{ MODKEY|ShiftMask, XK_s, spawn, {.v = gnumericcmd} },
{ MODKEY, XK_m, spawn, {.v = thunderbirdcmd} },
{ MODKEY, XK_i, spawn, {.v = inkscapecmd} },
{ MODKEY, XK_s, spawn, {.v = scribuscmd} },
{ MODKEY|ShiftMask, XK_b, spawn, {.v = braserocmd} },
};
/* button definitions */
/* click can be a tag number (starting at 0),
* ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
/* click event mask button function argument */
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};
What is
static unsigned int borderpx = 1; /* border pixel of windows */
this line do exactly?
pink
Even a broken clock is right twice a day.
Diplomacy without force is like music without instruments.
Offline
This line give it 1 pixel line betwen windows you see in what window you work
Shell Scripter | C/C++/Python/Java Coder | ZSH
Offline
Anyone got a patch for cycling tags with modkey+arrows (or any other key for that matter)?
Offline
Anyone got a patch for cycling tags with modkey+arrows (or any other key for that matter)?
http://www.mail-archive.com/dwm@suckles … 05168.html
Works for me, although I haven't tried 5.6 yet.
Offline
FALK wrote:Anyone got a patch for cycling tags with modkey+arrows (or any other key for that matter)?
http://www.mail-archive.com/dwm@suckles … 05168.html
Works for me, although I haven't tried 5.6 yet.
Great, thanks. Modified it for 5.6:
diff --git a/config.def.h b/config.def.h
index cca37df..699a8bf 100644
--- a/config.def.h
+++ b/config.def.h
@@ -71,6 +71,8 @@ static Key keys[] = {
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
+ { MODKEY, XK_Left, view_prev_tag, {0} },
+ { MODKEY, XK_Right, view_next_tag, {0} },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
diff --git a/dwm.1 b/dwm.1
index 7eb231f..b166dea 100644
--- a/dwm.1
+++ b/dwm.1
@@ -130,6 +130,14 @@ tag.
.B Mod1\-0
View all windows with any tag.
.TP
+.B Mod1\-Left
+View all windows with tag previous than current. E.g.
+if tag 4 is selected, previous tag would be 3.
+.TP
+.B Mod1\-Right
+View all windows with tag next than current. E.g.
+if tag 4 is selected, next tag would be 5.
+.TP
.B Mod1\-Control\-[1..n]
Add/remove all windows with
.BR nth
diff --git a/dwm.c b/dwm.c
index 220a12f..e6efe71 100644
--- a/dwm.c
+++ b/dwm.c
@@ -229,6 +229,9 @@ static void updatestatus(void);
static void updatetitle(Client *c);
static void updatewmhints(Client *c);
static void view(const Arg *arg);
+static void view_next_tag(const Arg *);
+static void view_prev_tag(const Arg *);
+static void view_adjacent_tag(const Arg *, int);
static Client *wintoclient(Window w);
static Monitor *wintomon(Window w);
static int xerror(Display *dpy, XErrorEvent *ee);
@@ -1934,6 +1937,42 @@ zoom(const Arg *arg) {
arrange();
}
+static void
+view_adjacent_tag(const Arg *arg, int distance)
+{
+ int i, curtags;
+ int seltag = 0;
+ Arg a;
+
+ curtags = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK);
+ for (i = 0; i < LENGTH(tags); i++) {
+ if ((curtags & (1 << i)) != 0) {
+ seltag = i;
+ break;
+ }
+ }
+
+ seltag = (seltag + distance) % (int)LENGTH(tags);
+ if (seltag < 0)
+ seltag += LENGTH(tags);
+
+ a.i = (1 << seltag);
+ view(&a);
+}
+
+static void
+view_next_tag(const Arg *arg)
+{
+ view_adjacent_tag(arg, +1);
+}
+
+static void
+view_prev_tag(const Arg *arg)
+{
+ view_adjacent_tag(arg, -1);
+}
+
+
int
main(int argc, char *argv[]) {
if(argc == 2 && !strcmp("-v", argv[1]))
Offline
The code in updategeom has changed and not being a C programmer, I can't quite get how to modify the code to get a small bottom gap for a separate conky instance. I tried changing in dwm.c
m->mh = m->wh = info[i].height - BOTTOM_BAR_HEIGHT;
and in config.h
#define BOTTOM_BAR_HEIGHT 21
But these changes don't work. I'm just not finding anyone yet who has showed how they did it in dwm 5.6 since it just recently changed.
Thanks!
Scott
Last edited by firecat53 (2009-07-25 17:11:30)
Offline
Try
sh = DisplayHeight(dpy, screen) - BOTTOM_BAR_HEIGHT;
in line 1436.
Offline
Does anyone know what's wrong with my attempt at converting this patch to 5.6.1?
diff -up -N a/colorstatus.c b/colorstatus.c
--- a/colorstatus.c 1969-12-31 19:00:00.000000000 -0500
+++ b/colorstatus.c 2009-07-29 16:51:00.039936573 -0400
@@ -0,0 +1,145 @@
+int
+drawstatustext(int x, int ww) {
+ char cd[] = "[c]", id[] = "[i]";
+ char buf1[256] = {0};
+ Bool parse = True;
+ Bool cs = False, is = False;
+ int stextw = 0;
+
+ strcpy(buf1, stext);
+ while(parse) {
+ char *cp = 0, *ip = 0;
+
+ cp = strstr(buf1, cd);
+ ip = strstr(buf1, id);
+ if(cp != NULL || ip != NULL) {
+ char buf2[256] = {0}, buf3[256] = {0};
+ size_t clen2 = -1, ilen2 = -1, len2 = 0, dlen = 0, offset3 = 0, len3 = 0;
+
+ if(cp != NULL)
+ clen2 = cp - buf1;
+ if(ip != NULL)
+ ilen2 = ip - buf1;
+ if(clen2 < 0) {
+ len2 = ilen2;
+ dlen = strlen(id);
+ }
+ else if(ilen2 < 0) {
+ len2 = clen2;
+ dlen = strlen(cd);
+ }
+ else if(clen2 < ilen2) {
+ len2 = clen2;
+ dlen = strlen(cd);
+ }
+ else {
+ len2 = ilen2;
+ dlen = strlen(id);
+ }
+ strncpy(buf2, buf1, len2);
+ offset3 = len2 + dlen;
+ len3 = strlen(buf1) - offset3;
+ strncpy(buf3, buf1 + offset3, len3);
+ if(buf2 != NULL && strlen(buf2) > 0)
+ stextw = stextw + TEXTW(buf2);
+
+ memset(buf1, '\0', sizeof(buf1));
+ strcpy(buf1, buf3);
+ }
+ else {
+ stextw = stextw + TEXTW(buf1);
+ parse = False;
+ }
+ }
+ dc.x = ww - stextw;
+
+ memset(buf1, '\0', sizeof(buf1));
+ strcpy(buf1, stext);
+ parse = True;
+ while(parse) {
+ char *cp = 0, *ip = 0;
+
+ cp = strstr(buf1, cd);
+ ip = strstr(buf1, id);
+ if(cp != NULL || ip != NULL) {
+ char buf2[256] = {0}, buf3[256] = {0};
+ size_t clen2 = -1, ilen2 = -1, len2 = 0, dlen = 0, offset3 = 0, len3 = 0;
+ Bool cs3 = cs, is3 = is;
+
+ if(cp != NULL)
+ clen2 = cp - buf1;
+ if(ip != NULL)
+ ilen2 = ip - buf1;
+ if(clen2 < 0) {
+ len2 = ilen2;
+ dlen = strlen(id);
+ is3 = !is;
+ }
+ else if(ilen2 < 0) {
+ len2 = clen2;
+ dlen = strlen(cd);
+ cs3 = !cs;
+ }
+ else if(clen2 < ilen2) {
+ len2 = clen2;
+ dlen = strlen(cd);
+ cs3 = !cs;
+ }
+ else {
+ len2 = ilen2;
+ dlen = strlen(id);
+ is3 = !is;
+ }
+
+ strncpy(buf2, buf1, len2);
+ offset3 = len2 + dlen;
+ len3 = strlen(buf1) - offset3;
+ strncpy(buf3, buf1 + offset3, len3);
+ if(buf2 != NULL && strlen(buf2) > 0) {
+ dc.w = TEXTW(buf2);
+ if(cs) {
+ if(is)
+ drawtext(buf2, dc.sel, True);
+ else
+ drawtext(buf2, dc.sel, False);
+ }
+ else {
+ if(is)
+ drawtext(buf2, dc.norm, True);
+ else
+ drawtext(buf2, dc.norm, False);
+ }
+ dc.x = dc.x + dc.w;
+ }
+
+ cs = cs3;
+ is = is3;
+ memset(buf1, '\0', sizeof(buf1));
+ strcpy(buf1, buf3);
+ }
+ else {
+ dc.w = TEXTW(buf1);
+ dc.x = ww - dc.w;
+ if(dc.x < x) {
+ dc.x = x;
+ dc.w = ww - x;
+ }
+ if(cs) {
+ if(is)
+ drawtext(buf1, dc.sel, True);
+ else
+ drawtext(buf1, dc.sel, False);
+ }
+ else {
+ if(is)
+ drawtext(buf1, dc.norm, True);
+ else
+ drawtext(buf1, dc.norm, False);
+ }
+ parse = False;
+ }
+ }
+
+ return(stextw);
+}
+
diff -up -N a/dwm.c b/dwm.c
--- a/dwm.c 2009-07-29 16:19:33.599231174 -0400
+++ b/dwm.c 2009-07-29 16:54:52.965695142 -0400
@@ -269,6 +269,7 @@ static Window root;
/* configuration, allows nested code to access above variables */
#include "config.h"
+#include "colorstatus.c"
/* compile-time check if all tags fit into an unsigned int bit array. */
struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
@@ -652,6 +653,7 @@ drawbar(Monitor *m) {
unsigned int i, n = 0, occ = 0, urg = 0;
unsigned long *col;
Client *c;
+ int stextw = 0;
for(c = m->clients; c; c = c->next) {
if(ISVISIBLE(c))
@@ -679,13 +681,8 @@ drawbar(Monitor *m) {
drawtext(ntext, dc.norm, False);
x = (dc.x += dc.w);
if(m == selmon) { /* status is only drawn on selected monitor */
- dc.w = TEXTW(stext);
- dc.x = m->ww - dc.w;
- if(dc.x < x) {
- dc.x = x;
- dc.w = m->ww - x;
- }
- drawtext(stext, dc.norm, False);
+ stextw = drawstatustext(x, ww);
+ dc.x = ww - stextw;
}
else
dc.x = m->ww;
I tried passing ww as an argument to drawstatustext() because at first drawstatustext() was saying it couldn't find ww. Anyways, if I apply the above patch and try to compile, I get this:
dwm.c: In function 'drawbar':
dwm.c:684: error: 'ww' undeclared (first use in this function)
dwm.c:684: error: (Each undeclared identifier is reported only once
dwm.c:684: error: for each function it appears in.)
make: *** [dwm.o] Error 1
I find that odd because ww is used other places in drawbar(). I'm not a C programmer; I only know basic syntax. Can anyone try to find out why my converted patch isn't working?
Offline
Does anyone know what's wrong with my attempt at converting this patch to 5.6.1?
I tried passing ww as an argument to drawstatustext() because at first drawstatustext() was saying it couldn't find ww. Anyways, if I apply the above patch and try to compile, I get this:
dwm.c: In function 'drawbar': dwm.c:684: error: 'ww' undeclared (first use in this function) dwm.c:684: error: (Each undeclared identifier is reported only once dwm.c:684: error: for each function it appears in.) make: *** [dwm.o] Error 1
I find that odd because ww is used other places in drawbar(). I'm not a C programmer; I only know basic syntax. Can anyone try to find out why my converted patch isn't working?
It's now called m->ww . This change is from the multi-monitor support that was added recently - each monitor can have its own width.
Offline
ataraxia: Thanks, it works now! Now I'll need to figure out the code and find out why the color tags are leaving spaces in their place even though they are not visible...
Offline
Try
sh = DisplayHeight(dpy, screen) - BOTTOM_BAR_HEIGHT;
in line 1436.
Is there anything else that needs to be changed, besides this and give BOTTOM_BAR_HEIGHT a correct value in config.h?
I tried this but it doesn't work, using dwm 5.6.
Offline
@BabyDoc -- No, it works for me it 5.6 and 5.6.1 with just those two items. However, there's one other person who's reported it not working. I looked at his config and dwm.c, and I couldn't see that he was doing anything wrong. It will only work if your windows are in tiling or monocle mode. Floating mode allows windows to be any size, so they will cover that area if their size is too big when they are first opened.
Good luck!
Scott
Offline
Well at least I know I ain't the only one with that problem then.
The problem persists in 5.6.1 to, I guess I'll keep digging.
Offline
@BabyDoc
I'm the one having the same troubles:
http://bbs.archlinux.org/viewtopic.php? … 11#p593311
EDIT: I found a fix. check the link.
Last edited by Dethredic (2009-07-31 21:54:53)
Offline
@BabyDoc
I'm the one having the same troubles:
http://bbs.archlinux.org/viewtopic.php? … 11#p593311EDIT: I found a fix. check the link.
Thanks for the help Dethredic, fixed it for me to.
Offline