Posts Tagged ‘debian’

Debian Lenny on a Thinkpad X61 without Gnome

Sunday, June 8th, 2008

OMG. Epic drama. I love my new Thinkpad X61. I’m spending an inordinate amount of time configuring it to my tastes. The screen is small and it’s got a small battery, so I set out to find a nice desktop environment that’s light, functional, customizable, CPU efficient and doesn’t get in my way. I settled on DWM.

I’m coming from OS X and Quicksilver. I never liked the OS X window manager so DWM is a real treat. But Quicksilver is pretty awesome and hard to reproduce. I found dmenu. It works in exactly the same way as I use Quicksilver. It doesn’t require any extra configuration. I binded it to the same key combo as Quicksilver, Ctrl + Space. This requires reconfiguring DWM. I also made some other changes to the config file.

DWM is configured by modifying a C header file and recompiling. Here’s mine:

/* See LICENSE file for copyright and license details. */

/* appearance */
#define BORDERPX 2
#define FONT "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*"
#define NORMBORDERCOLOR "#cccccc"
#define NORMBGCOLOR "#cccccc"
#define NORMFGCOLOR "#000000"
#define SELBORDERCOLOR "#AA3333"
#define SELBGCOLOR "#0066ff"
#define SELFGCOLOR "#ffffff"

/* tagging */
const char tags[][MAXTAGLEN] = { "com", "cal", "kvm", "aux" };

Rule rules[] = {
/* class instance title tags ref isfloating */
{ NULL, NULL, "Pidgin", tags[0], True },
{ "Gimp", NULL, NULL, NULL, True },
};

/* geometries, s{x,y,w,h} and bh are already initualized here */
/* func name bx by bw wx wy ww wh mx my mw mh tx ty tw th mox moy mow moh */
#define MFACT 0.55 /* master width factor [0.1 .. 0.9] */
DEFGEOM(single, 0, 0, sw, 0, bh, sw, sh-bh, wx, wy, mfact*sw, wh, mx+mw, wy, ww-mw, wh, wx, wy, ww, wh)

Geom geoms[] = {
/* symbol function */
{ "[]", single }, /* first entry is default */
};

/* layout(s) */
#define RESIZEHINTS True /* False - respect size hints in tiled resizals */
#define SNAP 16 /* snap pixel */

Layout layouts[] = {
/* symbol function isfloating */
{ "[]=", tilev, False }, /* first entry is default */
{ "[]|", tileh, False },
{ "><>“, floating, True },
{ “[M]”, monocle, True },
};

/* key definitions */
#define MODKEY Mod1Mask
Key keys[] = {
/* modifier key function argument */
{ ControlMask, XK_space, spawn,
“exec dmenu_run -fn ‘”FONT”‘ -nb ‘”NORMBGCOLOR”‘ -nf ‘”NORMFGCOLOR”‘ -sb ‘”SELBGCOLOR”‘ -sf ‘”SELFGCOLOR”‘” },
{ MODKEY|ShiftMask, XK_Return, spawn, “exec uxterm” },
{ MODKEY, XK_j, focusnext, NULL },
{ MODKEY, XK_k, focusprev, NULL },
{ MODKEY, XK_r, reapply, NULL },
{ MODKEY, XK_h, setmfact, “-0.05″ },
{ MODKEY, XK_l, setmfact, “+0.05″ },
{ MODKEY, XK_Return, zoom, NULL },
{ MODKEY, XK_Tab, viewprevtag, NULL },
{ MODKEY|ShiftMask, XK_c, killclient, NULL },
{ MODKEY, XK_space, setlayout, NULL },
{ MODKEY|ShiftMask, XK_space, togglefloating, NULL },
{ MODKEY|ControlMask, XK_space, setgeom, NULL },
{ MODKEY, XK_0, view, NULL },
{ MODKEY, XK_1, view, tags[0] },
{ MODKEY, XK_2, view, tags[1] },
{ MODKEY, XK_3, view, tags[2] },
{ MODKEY, XK_4, view, tags[3] },
{ MODKEY, XK_5, view, tags[4] },
{ MODKEY, XK_6, view, tags[5] },
{ MODKEY, XK_7, view, tags[6] },
{ MODKEY, XK_8, view, tags[7] },
{ MODKEY, XK_9, view, tags[8] },
{ MODKEY|ControlMask, XK_1, toggleview, tags[0] },
{ MODKEY|ControlMask, XK_2, toggleview, tags[1] },
{ MODKEY|ControlMask, XK_3, toggleview, tags[2] },
{ MODKEY|ControlMask, XK_4, toggleview, tags[3] },
{ MODKEY|ControlMask, XK_5, toggleview, tags[4] },
{ MODKEY|ControlMask, XK_6, toggleview, tags[5] },
{ MODKEY|ControlMask, XK_7, toggleview, tags[6] },
{ MODKEY|ControlMask, XK_8, toggleview, tags[7] },
{ MODKEY|ControlMask, XK_9, toggleview, tags[8] },
{ MODKEY|ShiftMask, XK_0, tag, NULL },
{ MODKEY|ShiftMask, XK_1, tag, tags[0] },
{ MODKEY|ShiftMask, XK_2, tag, tags[1] },
{ MODKEY|ShiftMask, XK_3, tag, tags[2] },
{ MODKEY|ShiftMask, XK_4, tag, tags[3] },
{ MODKEY|ShiftMask, XK_5, tag, tags[4] },
{ MODKEY|ShiftMask, XK_6, tag, tags[5] },
{ MODKEY|ShiftMask, XK_7, tag, tags[6] },
{ MODKEY|ShiftMask, XK_8, tag, tags[7] },
{ MODKEY|ShiftMask, XK_9, tag, tags[8] },
{ MODKEY|ControlMask|ShiftMask, XK_1, toggletag, tags[0] },
{ MODKEY|ControlMask|ShiftMask, XK_2, toggletag, tags[1] },
{ MODKEY|ControlMask|ShiftMask, XK_3, toggletag, tags[2] },
{ MODKEY|ControlMask|ShiftMask, XK_4, toggletag, tags[3] },
{ MODKEY|ControlMask|ShiftMask, XK_5, toggletag, tags[4] },
{ MODKEY|ControlMask|ShiftMask, XK_6, toggletag, tags[5] },
{ MODKEY|ControlMask|ShiftMask, XK_7, toggletag, tags[6] },
{ MODKEY|ControlMask|ShiftMask, XK_8, toggletag, tags[7] },
{ MODKEY|ControlMask|ShiftMask, XK_9, toggletag, tags[8] },
{ MODKEY|ShiftMask, XK_q, quit, NULL },
};

Next up…fun with menus!

Virtualbox: first steps

Wednesday, May 21st, 2008

Sun’s recent aquisition, which is a GUI wrapper around the qemu/kvm virtualization archetecture is called Virtual Box. I’m installing a Debian guest on an OS X host. Overall the installation went smoothly, fast, simple, networking auto configured. But when I try and connect to the server from the host or any other hosts on the LAN, I cannot. This is due to qemu’s odd networking model which requires the user to manually configure bridging on the host. Unfortunately, they have not published any docs to do this on OS X…so I’m going hacking.

Debian testing (lenny) and Ruby On Rails

Wednesday, April 30th, 2008

I began a project with rails 2.0 on a Debian testing box. The goal at this point is to see how few packages I have to install to get a running Rails/PostgreSQL web application configured with some default scaffolding.

Good news is ruby on rails is available via APT. Good news, or so I thought, is that ruby-postgres is also available via APT. Unfortunately, there appears to be some kind of discrepency between this, as rails fails to load the database driver with a kind error:

MissingSourceFile in AssetsController#index
no such file to load -- postgres

Dare I install the gem and break my almost perfect run? I shall :(

FreeBSD userland. Teh Suck?

Friday, April 25th, 2008

Working with FreeBSD made me realize how dependent I am on Debian. I’m sure there are copious ways to get all the nice GNU/Linux userland stuff running through ports but part of me like to stick to the simplest way, which is to install Debian and not worry about it.

I feel like I’m in some kind of old/new skool purgatory. All the old skool hackers are into BSD and scoff at Linux, yet now I’m acting like an old curmudgeon whilst yearning for the new.