You will see from my last post that I installed the i3 window manager, as opposed to a full blown desktop environment.
I had grown tired of the Gnome desktop a long time ago, and had briefly flirted with KDE. Now don't get me wrong, KDE is easily the snazziest DE out there, with loads of apps built in to it, but its very resource hungry. I was also using the XFCE desktop for a good while as well, but I suppose I wanted the challenge of somethng new.
I grew tired of using the mouse. I became aware of how it, and the whole WIMP paradigm (thats Windows, Icons, Menu, Pointers) can sap your concentration.
Using a window manager in conjunction with solid keybindings, can increase your productivity considerably.

The i3 Window Manager came out in 2009, roughly one year after Void Linux.
It is a tiling window manager that is highly configurable.
When you first install i3 it, isn't much to look at. However, the user guide is very good, and it has a fairly strong community that has groups on reddit, stackexchange etc. It can be found here:

https://i3wm.org/docs/userguide.html

All the configuration is done in its config file. In fact all of its keybindings are specified here, that is, on my machine at least (ymmv):

~/.config/i3/config

The user is invited to modify this file as much as s/he likes. However, it is not recommended to change the predefined keybindings as it can seriously mess it up.
Because its memory footprint is so low, the user does not feel guilty when s/he sets it up so that her favourite apps are running by default. For example I have a web browser, irc chat, music and bittorrent app, all running by default. They all run in their own specied workspaces, and there for a simple keystroke will bring me straight to them.

The first thing that I did to this file was to set workspace variables, so that I could reference them anywhare I liked in the config file:
i.e
set $workspace1 "whatever"
set $workspace2 "somethingelse"

This defines workspace as specified labels which can then be referenced by $workspace1 or $workspace2 etc.
The next thing I did was to get certain programs to launch into these workspaces. I3 uses a programs WM class name as a handle. You can get this by running a tool called xprop. This then changes the cursor to a crosshair. You then click on the running program to produce output some of which looks like this:

_NET_WM_OPAQUE_REGION(CARDINAL) =
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 41943205, 41943206
_NET_WM_USER_TIME(CARDINAL) = 24761957
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x28000a4
WM_CLIENT_LEADER(WINDOW): window id # 0x2800001
_NET_WM_PID(CARDINAL) = 21713
WM_LOCALE_NAME(STRING) = "en_IE.UTF-8"
WM_CLIENT_MACHINE(STRING) = "knut"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified minimum size: 300 by 96
        program specified base size: 300 by 96
        window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "Navigator", "Firefox"
WM_ICON_NAME(STRING) = "Blogger: @eamoc #eamostechdiary - Edit post - Mozilla Firefox"
_NET_WM_ICON_NAME(UTF8_STRING) = "Blogger: @eamoc #eamostechdiary - Edit post - Mozilla Firefox"
WM_NAME(STRING) = "Blogger: @eamoc #eamostechdiary - Edit post - Mozilla Firefox"
_NET_WM_NAME(UTF8_STRING) = "Blogger: @eamoc #eamostechdiary - Edit post - Mozilla Firefox"

The line highlighted in bold gives us the info we need to launch firefox in a specified window. Eg:

assign [class="Firefox"] $workspace8
This command is then followed up with an execute command:
exec firefox

Other apps I wanted to launch with i3 included console applications. This presents a bit of a problem.

To match on a terminal-based program such as irssi, e.g., in order to send it to a specific workspace, some way is needed to distinguish that instance of my terminal emulator, in this case urxvt. As a window manager, i3 only sees an X11 client – it neither knows (nor cares) about what that client does; in particular, i3 has no way of knowing that it's a terminal emulator capable of running some command within it.
The most common and reliable way to distinguish a specific emulator instance is by setting its WM_CLASS.
Let's assume you're using urxvt (also known as rxvt-unicode.) For urxvt, you can use the -name  flag like this:
exec urxvt -name irssi_instance -e irssi
 
Now you can match on this window in your i3 config like this:
 
assign [instance="irssi_instance"] $workspace8

I use terminal apps for music (cmus) and rtorrent as my bittorrent client. These all launch in their own workspaces.