Tuesday, 26 June 2007

Fvwm2rc 0.0

I've been working some more on my fvwm2rc file today.
As I have already mentionned what I consider my ideal desktop is:
1)one which is more or less completely keyboard-driven and where the key combinations are as efficient as possible.
2)a minimalistic one - all I need at the smallest cost possible and nothing more.
My current Fvwm consists of one desktop spread over 4 pages. To navigate efficiently across these 4 pages I have defined a few intuitive keyboard combinations. You can either use the MS Windows meta key along with the arrows or the h,j,k,l keys (vim style), or you can use the keypad to access any page in one key press (the keypad is a sort of map of the entire desktop instead of used for movement). I also have shortcuts for the 3 X applications I need the most: mrxvt (316K), firefox (9.5M) and thunderbird (12M). Most of the other appps use curses so run in mrxvt. As you can see thunderbird and firefox are quite large and require many libraries. I am planning on eventually superseding thunderbird with fetchmail+mutt. However because of the state of the Web and the current trend of Web 2.0, firefox will be harder to replace. I do however plan to experiment with simpler browser which I will configure and recompile for fun (lynx and links seem most accessible) but I don't see myself completely breaking away from firefox.
Back to my Fvwm...
At the top left corner lies an FvwmButtons panel with a pager and a digital xclock. The panel can be toggled to the foreground by the WindowsKey+Escape combination. This simple panel will eventually grow into a status panel where I will have my own choice of performance monitors, email notifiers and maybe other useful things.
Something one might consider peculiar with my setup is that I have partially done away with iconification. As a matter of fact, I never find the need for iconifying anything as I never run that many apps concurrently so have plenty of space with 4 pages (mrxvt and firefox and tabbed apps which each take up one page and thunderbird takes another, giving me one full page for anything else).
Anyway without further delay here's my current fvwm2rc file (this is not meant to be used as is but merely for reference and maybe to suscitate some feedback). Btw if any of you are also in the process of configuring you Fvwm may I suggest you take a look at FvwmConsole which allows you to configure Fvwm interactively instead restarting the window manager each time. Also here are 2 good examples of fvwm2rc files: http://linuxmafia.com/~n6tadam/fvwm/ and http://dev.gentoo.org/~taviso/fvwm2rc.html
Ok I've spent enough time on configuring my Fvwm for now. Tomorrow I'll commit my day to working on mrxvt.

Monday, 25 June 2007

User applications

Overall
Minimalist and efficient. Ideally only run software which I can tweak for my own usage. Understand as much as possible. Be a control and performance freak.
The window manager: fvwm2
Small memory footprint. Keyboard driven. At most 2 applications per page at a time.
The terminal emulator: mrxvt
I am currently studying and modifying the code for my own use. I really like the tab support. Still not as complete as xterm (no UTF8 support for example). My mrxvt has been trimmed from all the visual stuff I deem unnecessary. I removed the -g flag from the final build and it is presently at 316K. I'm using the XFT functions for drawing fonts which don't support UTF-8 as of yet. I am hence currently looking at XFT functions which can either handle UTF-8 straight or maybe I'll do the conversion to another encoding first like UTF-16. More on this in next post...
The editor: vim
I am very impressed with vim but not that proficient yet. Smaller and faster than emacs. Very extensible for programming (ctag support).

The web browser: firefox or links?
This might be the most dependencies-hungry application I'll require. links is small and I have some hope of understanding and customising the source. firefox is huge and the code base seems huge. I don't think I'll be able to do with links only.

The email client: mutt?
I already use an ssh tunnel to get my mail from my POP server with thunderbird. Using fetchmail with mutt offer much better performance.

C code browsing tools
Exuberant ctags. Cscope. Cflow.

My ideal Linux - what I need and nothing more

I don't like using things I don't understand.
This was probably my rationale for studying Computer Science in the first place.
I should probably add: I don't like using things I don't understand or don't need.
I am not going to go into the psycho-analysis of why I and others think that way. All I am going to say is that this is both a good thing and bad thing. It is a bad thing because I get easily side-tracked (story of the man on the island that doesn't know what to do first). It is a good thing because it keeps me learning and creating. It also forces me to keep things simple.
Of course I still need to remain pragmatic as I don't have the brain or the time to figure everything out. This is why I start off with a system that does everything I need and more i.e. the Linux kernel with the required drivers, X11 and a few apps, then I customise by keeping or improving on the features I like and all features I do not require. Being somewhat of a spartan, this involves removing all the gloss and keeping a minimalistic, functional and efficient system.
My ultimate objective is to have a system completely tailored for my hardware and everyday usage - a Linux I can understand.

  • Minimalist and efficient setup.
  • Ideally only run software which I need and can tweak for my own usage by editing the source.
  • Understand as much as possible in the process.
  • Be a control and performance freak.
  • Early days - Linux for fun

    I've been a Linux user since I started my computer science degree in 2003. However because all of my programming assignments in the first 2 years involved Java programming (apparently our university is dubbed "The School of Java studies" by a rival uni) there wasn't really any initiative for me to always use Linux at home. My opinion is that if all your programming involves an IDE such as Eclipse then there's no real gain in using Linux. So you see in the first years there wasn't much incentive to using Linux at home. The few of us that used Linux did so out of personal interest. Ok perhaps I am being a bit unfair, the lab machines at university did run Unix Solarix and Linux Red Hat so there might have been some motivation to also use Linux at home. But anyway there was no real need for it.
    So anyway, in the first 2 years of my course I used Linux on and off. I used it for some basic C, C++ and Perl programming. And when I say basic I mean "Hello World" basic. At that time I was highly motivated to learn as much about programming and computer science in general as possible. Anyway I managed to master enough C++ to land an internship in my second year at Citrix working on the Symbian platform (needless to say I am very grateful for this priceless opportunity). However my internship didn't push me to use Linux either as all the development was done on the Windows platform (though the Symbian toolchain uses lots of GNU software, the SDK libraries are Windows DLLs grrr). Yet it is during that period that I really got started with Linux which not suprisingly, also coincided with my debut on the Internet. I should have maybe mentioned this before but probably my biggest obstacle to using Linux more was that I had no Internet connection from home! My original distro was Fedora which I got from the back of one of those Linux books. This meant that downloading a new Linux distro was troublesome (I basically had to ask a friend) and even when I had a new one it had to work out of the box because I couldn't download anything nor could I get any online help.... Of course my old Fedora installation couldn't support my new Atheros wireless card. I was hoping for a new distro that could work out of the box, hence giving me a platform for learning more.
    So anyway while at Citrix I was working with other non-win32 Citrix Presentation server client teams so I was also somewhat exposed to the Linux guys. One of them in particular had loads of cds with Linux distros. He recommended me SuSE 9.3 which came on no less that 5 cds. I installed it and was pleasantly suprise to see that it recognised my wireless card out of the box. The KDE desktop also looked much better than anything I had seen before. So I guess this is really when my true exposure to Linux began. SuSE 9.3 with an Internet connection. That summer I had fun exploring and configuring Linux. I remember having lots of fun with Linux that summer, exploring other programming languages like Ada95 and Ruby, spending/wasting lots of time on IRC and just learning in general.
    In my 3rd year of university I used Linux some more because we had some C courseworks in my OS course. However our group project, once again involved only Java so ended up booting into Windows mostly for practical reasons. After all we used Eclipse with built-in CVS and Ant so there wasn't any point in using Linux really (especially with KDE which was maybe just a tad faster than Windows to load up).
    The summer of my 3rd year I decided I wouldn't look for a job but have fun and do my own thing. That's probably when I started really concentrating on my ideal Linux setup.