after ratpoison, i decided to look for something more minimalistc.
Google answered dwm http://www.suckless.org/dwm/
This littile thing (final executable < 30KB !! ) works really great. It has 9 workspaces. Is highly Customizable. Maybe the only obstacle is that it has to be configured from source. But that’s is really easy, if u know any programming in C.
here i post the config.h (It’s still the first draft, will modify it further later)
/* 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 = False; /* False means no bar */
static Bool topbar = True; /* False means bottom bar */
static Bool readin = False; /* False means do not read stdin */
/* tagging */
static const char tags[][MAXTAGLEN] = { “1″, “2″, “3″, “4″, “5″, “6″, “7″, “8″, “9″}; /* upto 9 supported */
static unsigned int tagset[] = {1, 1}; /* after start, 1 is selected,
only any two of above can be selected at a time */
static Rule rules[] = {
/* class instance title tags mask isfloating */
{ “Gimp”, NULL, NULL, 0, True },
{ “Firefox”, NULL, NULL, 0, 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 */ /* first entry is the default */
{ “><>”, NULL }, /* no layout function means floating behavior */
{ “[M]“, monocle }, /* maximized */
{ “[]=”, tile }, /* tiled */
};
/* key definitions */
/* some key names
shift Shift_L (0×32), Shift_R (0x3e)
lock Caps_Lock (0×42)
control Control_L (0×25), Control_R (0x6d)
mod1 Alt_L (0×40), Alt_L (0x7d), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x7f), Hyper_L (0×80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
*/
#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[] = { “xterm”, NULL };
static const char *runbox[] = { “runbox”, NULL };
static const char *lockscreen[] = { “lockscreen”, NULL };
static const char *vol_up[] = { “vol_up”, NULL };
static const char *vol_down[] = { “vol_down”, NULL };
static Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_space, spawn, {.v = dmenucmd } }, /* a menu */
{ MODKEY, XK_Return, spawn, {.v = termcmd } }, /* terminal */
{ Mod1Mask, XK_F2, spawn, {.v = runbox } }, /* ALT+F2 */
/* { MODKEY, XK_b, togglebar, {0} }, */
{ Mod1Mask, XK_Tab, focusstack, {.i = +1 } }, /* Alt+Tab */
{ Mod1Mask|ShiftMask, XK_Tab, focusstack, {.i = -1 } }, /* ALt+Shift+Tab */
/* { MODKEY, XK_h, setmfact, {.f = -0.05} },*/
/* { MODKEY, XK_??, setmfact, {.f = +0.05} },*/
/* { MODKEY, XK_??, zoom, {0} }, */
/* { ControlMask|Mod1Mask, XK_Right, view, {0} }, */
{ MODKEY, XK_k, killclient, {0} },
/* { MODKEY, XK_??, setlayout, {.v = &layouts[2]} },*/
{ MODKEY, XK_f, setlayout, {.v = &layouts[0]} }, /* floating window */
/* { MODKEY, XK_m, setlayout, {.v = &layouts[1]} },*/
/* { MODKEY, XK_??, setlayout, {0} }, */
/* { MODKEY|ShiftMask, XK_??, togglefloating, {0} }, */
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, /* show all windows */
TAGKEYS( XK_1, 0) /* show windows in tag 1 */
TAGKEYS( XK_2, 1) /* and so on … */
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} },
{ ControlMask|Mod1Mask, XK_l, spawn, {.v = lockscreen } },
{ ControlMask|Mod1Mask, XK_0, spawn, {.v = vol_up } },
{ ControlMask|Mod1Mask, XK_9, spawn, {.v = vol_down } },
};
/* 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[1]} },*/
/* { ClkWinTitle, 0, Button2, zoom, {0} },*/
/* { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },*/
{ ClkClientWin, MODKEY, Button1, movemouse, {0} }, /* moves the floating window */
/* { ClkClientWin, MODKEY, Button2, togglefloating, {0} } */
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} }, /* resize window */
/* { ClkTagBar, 0, Button1, view, {0} },*/
/* { ClkTagBar, 0, Button3, toggleview, {0} },*/
/* { ClkTagBar, MODKEY, Button1, tag, {0} },*/
/* { ClkTagBar, MODKEY, Button3, toggletag, {0} },*/
};