A Computer In My Living Room: The Software

August 27th, 2005

There is a rift between this post and the one before it. The reason? Computer hardware is a wily beast that I have yet to tame. I guess I could write a post about my adventures with Newegg’s RMA system, but I won’t, so don’t expect to read about that. Seriously.

I outlined the hardware residing in my living room in my previous post and now I will bore you with the minute details concerning the software portion.

The computer runs Windows XP Professional with all the graphical hoopla turned down to a minimum. No fancy shadows or crazy animations. Menus don’t “slide” or “fade” into view.

On top of Windows XP is Litestep. I’m using Litestep as the desktop shell for a few reasons. First, it saves RAM. I’m not loading up an intricate theme, so all Litestep needs to load is the following:

  • Jdesk (desktop environment)
  • xPopup (popup menu)
  • xLabel (graphical element)
  • LsLua (lua scripting module)
  • xTray (system tray)
  • A second reason for using Litestep is that it lets even the most base computer user (such as myself) write scripts and create widgets without having an in-depth knowledge of programming or coding. I will explain that now.

    The concept behind the interface on the couch-side monitor is that when I’m not actively using the computer, it shows an easily readable display with relevant song information such as the artist, the song title, and the album cover. I based this interaction model on whether the mouse was actively being used or not. When the mouse is idle for a specific interval, the UI takes over the screen and shows the information and when I move the mouse the UI goes away and I can manage the playlist and song database.

    The script proved to be something I couldn’t figure out, so I commissioned a friend of mine to write it for me in LsLua. Here is the code he came up with:


    MOUSE = {
    x = -1,
    y = -1
    }

    IDLE = {
    current = 0,
    limit = 15 --in seconds
    }

    function unidle( x, y )
    if x == MOUSE.x and y == MOUSE.y then
    IDLE.current = IDLE.current + 1
    if IDLE.current > 999999 then IDLE.current = 999999 end
    else
    IDLE.current = 0
    exec( '!LabelHide Playlist' )
    end
    if IDLE.current == IDLE.limit*4 then
    exec( '!LabelShow Playlist' )
    end
    MOUSE.x, MOUSE.y = x, y
    end

    It works like a charm and does exactly what it’s supposed to. Thanks for the help, tnl. I set up the script so the “time out” for mouse movement is 15 seconds. And after 15 seconds, the screen displays something along these lines (graphics c/o Scott Prindle):

    MediaPC UI

    As you can see from this screen capture, the UI displays the song title and artist centered above a progress bar. Below the progress bar is a time elapsed/remaining label and even farther below that is a medium-sized album cover.

    When the mouse is moved, this is what I see:

    MediaPC Foobar Config

    The computer runs Foobar2000 to output the tunes. Loaded components include:

  • foo_ui_columns (modded Azrael config)
  • foo_uie_volume
  • foo_uie_albumlist (config by tnl)
  • foo_uie_history
  • Using this interface, I can navigate through songs by artist or by album and queue them up as I see fit. Right now it’s just a large mess of my music which ranges from Belle and Sebastian to Motorhead to The Blood Brothers to Elliott Smith. Skipping between genres that large is often quite jarring and I need to find a better way to organize these things (thinking about adding one more level to the hiearchy of foo_uie_ablumlist to sort by genre first, then artist/album).

    So that, my friends, is that. It’s a tight ship I run and by that I mean don’t fucking touch my computer or I’ll kill you and your immediate family. Also, when I say “ship” I really mean “living room”. Just clearing all of this up for you.

    2 Responses to “A Computer In My Living Room: The Software”

    1. Johnny Says:

      Sick pad!

    2. iamserio.us » Blog Archive » A Computer In My Living Room: An Epilogue Says:

      […] Previously, I wrote a two-part entry where I documented the hardware and software that I used to make a home theatre PC capable of playing audio through my stereo system. The system worked well enough but it only lasted for about a month before I got tired of it. […]

    Leave a Reply