Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Mon 23 Jan 2017, 13:03
All times are UTC - 4
 Forum index » House Training » HOWTO ( Solutions )
dwm - a tiling window manager
Moderators: Flash, Ian, JohnMurga
Post new topic   Reply to topic View previous topic :: View next topic
Page 1 of 1 [5 Posts]  
Author Message

Joined: 08 Dec 2007
Posts: 412

PostPosted: Tue 16 Dec 2008, 16:59    Post subject:  dwm - a tiling window manager
Subject description: How I got this to work

This is how I got the window manager "dwm" to work with Puppy 3.01. It is a tiling window
manager which means that you can have windows open right next to each other on your
desktop without having to align the windows right next to each other and they don't
overlap. There is probably a better definition or description somewhere else. It does take
some getting used to but I enjoy the control and space it allows me.

First the particulars:
I am using a noname laptop with a 40 gig hd, 1.5 gHz cpu, 1 gig ram, using bigbass' fatfree puppy
3.01 live cd that I have been adding and configuring to my tastes. I keep my save file on
a partition on my hd. I downloaded the tar package from this website:

Then followed these directions exactly,
cntrl-alt-bcksp out of X. Then I typed 'startx dwm' and the dwm desktop came up. Done!

(These are the directions that matter the most, I have cut and pasted them onto this thread
for clarity.)
1) cd /path/to/dwm-4.0.tar.gz
2) tar zxvf dwm-4.0.tar.gz
After that I suggest you go directly with:
3) make clean install (as root)

If you are using a "stock" version of Puppy you will need to add the devx_xxx.sfs to your
boot manager so you have the compiling ability and commands. This is how I did it. First
I asked a question and get an answer which put me on the right track. Thanks puppyluvr!!


Then I searched for the file in all the wrong ways until I finally found what I needed using
The ways that didn't work where using the wellminded puppy search and the forum seach.
For some reason they didn't work.
In the midst of looking I found a thread where someone a while ago asked basically the same
question and Barry answered. The advice was: click on menu-go to help-then go to "how
to write programs for puppy". I finally found the devx_301.sfs file here:

--------some customizations you may want. To change the way dwm acts, the tabs on top,
the colors, the keystrokes and other things, you go into the dwm-5.3.1 folder and change
the config.h file. Note that config.h and config.def.h are the same thing but when you compile
it will take orders from the config.h file. I'm still learning about the configuring so I am going
very slow and only changing very small things at a time. Here is my current config.h file.
/* See LICENSE file for copyright and license details. */

/* appearance */
static const char font[]            = "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#cccccc";
static const char normbgcolor[]     = "#cccccc";
static const char normfgcolor[]     = "#000000";
static const char selbordercolor[]  = "#0066ff";
static const char selbgcolor[]      = "#0066ff";
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 */
static Bool readin                  = True;     /* False means do not read stdin */
static Bool usegrab                 = False;    /* True means grabbing the X server
                                                   during mouse-based resizals */

/* tagging */
static const char tags[][MAXTAGLEN] = { "www1", "term2", "text3", "rox4", "rox5", "media6", "app7", "app8", "app9" };
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 Mod1Mask
#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[]  = { "mrxvt", 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 haven't changed any of my keystrokes yet. I go into the tab I want and alt-shift-enter
which opens up my mrxvt. (I like mrxvt because I like transparency although not true, and
I like the ability to have tabs. I also use urxvt) Then I type the command for the program
I want to use ie
seamonkey, opera, leafpad, audacious, rox, asunder, etc.

and it opens up in that window next to the terminal. Note you will have to add an & after
the command or the cli will be dead until you terminate the application. Basic stuff I know.

Right now I'm working on a document that will have the names of all the commands for the
programs on my system and keystrokes for programs that I want to assign to them. I will
make an alias to open this document in so I can see how to navigate thru my system until
I memorize the commands. Even still, I'll keep it up there for when I have a brain freeze.
Back to top
View user's profile Send private message 

Joined: 20 Dec 2007
Posts: 792
Location: Staffordshire

PostPosted: Tue 16 Dec 2008, 19:18    Post subject:  

I've dabbled with dwm a few times, on 3.01, and 2.14R mainly. Yes, it does take a bit of getting used to (I've also tried ratpoison which I quite like, and a few other minimal WMs). Not using it at the moment, but might have another go soon...

I set it up with dmenu (as they recommend), and also dzen http://gotmor.googlepages.com/dzen - I use it at the for a status bar, and to bring up a reminder of my shortcuts (this is with JWM on my MeanPup install).

For those interested in window managers:
http://www.gilesorr.com/wm/table.html is the place to go

Perhaps we should start an Anti-Bling thread? The screenshots would be stunning.....
Back to top
View user's profile Send private message 

Joined: 08 Dec 2007
Posts: 412

PostPosted: Tue 16 Dec 2008, 22:02    Post subject:  

I was going to use dmenu but it seemed a bit "blingish". I mean, for a minimalistic approach, how many programs does one really use on a day to day basis? If one works on it then yes I can see it. When I have something to do on my computer, I want it to be as efficient as possible. So typing the word in the cli seemed as efficient as possible, and dmenu kind of a waste of time for me. But that's not to say that I won't use it someday.

As for anti-bling, I'm surprised at the lack of interest for Puppy users. I mean talk about minimalistic! We're under 100 megs for petes sake! But therein lies the rub. Just what CAN be done with under 100 megs?

Anyway, I'm rambling. If you start the thread, I'll post. I wonder how drab things can get. Does minimal go hand in hand with anti-bling?

Back to top
View user's profile Send private message 

Joined: 20 Dec 2007
Posts: 792
Location: Staffordshire

PostPosted: Wed 17 Dec 2008, 04:10    Post subject:  

Actually I'm inclined to agree about unecessary menu systems - dmenu was useful at first, until I got used to dwm, although I had used ratpoison before that and quite happily setup keyboard short-cuts for regularly used programmes. As for status bars... well I've spent loads of time fiddling with dzen, but I could just as easily open htop in a terminal. Do I really need to stare at the CPU usage all day?!
I've never got dzen to work properly as an application launcher, but ratmen is good for knocking up a nice little list of 4 or 5 apps I use regularly - doesn't work with MeanPup for some reason which is a pain, but ok with 3.01, 2.14 and others I think.
Shortcuts are the way to go though!
Back to top
View user's profile Send private message 

Joined: 08 Dec 2007
Posts: 412

PostPosted: Wed 17 Dec 2008, 13:11    Post subject:  

I don't use conky or any of the process viewers either. They are defined as bling and unnecessry for what I do. I very much like htop, it's always one of the first things I add when setting up a new system. Great for "when" I need to see what's happening and perfect to kill those pesky programs that lock up.

Using dwm has shown me just how convenient many separate desktops can be. My current preference aside from dwm is jwm, VERY configurable. After using dwm for a while and going back to using a jwm environment I found myself going between the two windows often and wishing I had more. I guess the big difference of a tiling wm is that it basically gives you nine windows to work on, and lays the applications out so you never have to minimize one or move one over. Yes, now that I think about it, that's a much better description than my previous one.

Back to top
View user's profile Send private message 
Display posts from previous:   Sort by:   
Page 1 of 1 [5 Posts]  
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » House Training » HOWTO ( Solutions )
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.0930s ][ Queries: 12 (0.0081s) ][ GZIP on ]