20070717

Integrating MythTV and Amarok

MythTV is my PVR of choice. Amarok is my media player of choice. Both are definitely linux "best of breed" products and in my humble opinion they beat the pants off of various commercial products.

And while the music player in MythTV is nice enough, Amarok is better at it, especially if you have a large collection of 10,000+ songs. I have some 25,000 and I was scrolling my ass off to find a song in mythmusic. Another bonus is that Amarok is last.fm-aware, a web service to collect music statistics and give recommendations. The dynamic playlists has an awesome "suggested songs" feature that will automatically queue songs from similar artists.

Integrating them seemed logical to me. I'm not going to go into the installation of either MythTV or Amarok here, the first has a great guide here and installing Amarok is a matter of firing up your package manager of choice (and possibly adding a third-party repository, for instance, see this guide for Fedora)

Prerequisites:
- Amarok installed and working
- LIRC installed and working
- some kind of remote and receiver (here is a list of compatible hardware, or build your own for less than $2)

Step 1: Adjusting the MythTV menu
MythTV keeps its menus in XML files within the currently active theme folder in /usr/share/mythtv/themes. This page talks extensively about the menu format.

Depending on your needs and tastes it could be as simple as changing/adding an entry like this:
<button>
<type>MUSIC</type>
<text>Amarok</text>
<action>EXEC amarok</action>
</button>



Step 2: Configuring Lirc for Amarok

LIRC is the Linux Infrared Remote Control software. It works with many remotes, I use it with the Hauppage remote I got with my PVR-350 capture card (that also controls all of MythTV). Lirc is controlled by a .lircrc file. By adding to this file we can control which programs are started, which simulated keypresses are sent and more.

First we map the "music" button on my remote to amarok:
begin
prog = irexec
button = Music
repeat = 3
config = /usr/bin/amarok
end


Now, Amarok itself doesn't have direct support for LIRC as far as I know, but it does support the KDE DCOP interface. And the various functionalities and controls it supports are listed on this page.

Armed with that knowledge, we add another entry to .lircrc to quit Amarok:
begin
prog = irexec
button = Back-Exit
config = dcop amarok MainApplication-Interface quit
end


Wow, that was easy! And in this vein you can add all manner of commands, here are some I have programmed:
dcop amarok player play
dcop amarok player seekRelative 10
dcop amarok player setRating 10
dcop amarok contextbrowser showLyrics
dcop amarok playlist repopulate


edit: I've posted my full .lircrc in this comment as a lot of people asked for it. The lircmd.conf I use is in this comment. Don't copy and paste it blindly and expect everything to work - you'll likely need to edit it a little.

Besides referring to the Amarok documentation, you can also open a commandline and type 'DCOP amarok' and it will return all the valid functions you can call. 'DCOP amarok player' will list all the player commands.

There are some things like dragging music over to a playlist that are just more convenient to use by working with a mouse. LIRC provides Lircmd which does exactly what we want: emulate a mouse using the remote. Since it provides both mouse 'click' and mouse 'toggle' emulation clicking and dragging music is a breeze. I mapped the channel up and down buttons to a 'virtual scrollwheel' so you can zoom through playlists and other multi-screen displays in a jiffy.

Now we have a nice menu entry in MythTV, a fully working remote and mouse emulation for Amarok, and in principle we are done.

(Optional) Step 3: tweaking and extra's
Some obvious adjustments include configuring Amarok to automatically resume playing on startup (configure this in Amarok settings), configuring KDE to run Amarok "borderless" and maximized+on top, adjusting the Amarok theme to match your MythTV theme.

Here is a fun little hack that uses festival (a linux text-to-speech engine) to sound out the currently playing artist and song at the press of a button:

begin
prog = irexec
button = Guide
config = prev_volume=`dcop amarok player getVolume`; dcop amarok player setVolume `expr $prev_volume / 3`; (echo 'this is '; dcop amarok player artist; echo ' playing the song '; dcop amarok player title; echo ' from thee album '; dcop amarok player album) | text2wave -F 44100 -scale 3 | aplay; dcop amarok player setVolume $prev_volume
end


As you can see we can call multiple commands and pipe and concatenate at will. I use this because I often run 'headless' (no display active) when playing music and I want to find out quickly what particular song is playing. Plus robot voices hacking up your favorite band names are funny.

Remaining issues:
Some things I haven't yet figured out. For instance, I configured MythTV and mplayer to use the PCM volume slider in my ALSA setup. However, it seems that Amarok uses its own internal volume controls. This can lead to some confusion when you've set the sound in MythTV to a really low level and you start up Amarok, or (possibly worse) when you've set it to a really loud level and THEN start up Amarok (your neighbors will hate you more).

Edit: after a frustrating time on forums and fiddling with ALSA and mplayer and mythTV and Amarok I have a very simple solution: before I launch Amarok I run "alsactl restore" to restore sane values I saved earlier with "alsactl save". Problem solved.

Another thing I am still working on is a more advanced LIRC configuration using the "mode" command to restrict LIRC commands to certain applications only when they are running. I have the documentation, just not the time to figure it out.

Edit: This was rather easy to fix as I suspected. I added the following to my lircrc:
begin
flags = startup_mode
mode = mythtv
end

and then I encapsulated the mythtv codes with
begin mythtv
...
end mythtv

and did the same for the Amarok section (but there it became begin amarok).

The entry to launch Amarok was appended with
mode = amarok
flags = mode

and the entry to quit Amarok appended with
flags = mode
mode = mythtv


Edit: the issue with this would be that if you start Amarok from the mythfrontend menu the mode doesn't get changed. Ryan was kind enough to leave a comment with a little tool to query/set the mode. Although that doesn't work with mythfrontend, he also wrote a script to get around this issue which you can find here.

Another minor issue solved ;)

And finally, while Amarok has a visualisation module featuring G-Force (awesome) and Goom (also nice) there is no easy way to launch and stop full-screen visualisation. Not a dealbreaker as I usually run Amarok with the TV off but it would be definitely nice to have. But for this particular problem I see no easy solution.

While not a visualization, I've solved this by launching amarokFS after launching Amarok. It works and looks fine. I've also written scripts to keep two Amarok installations in sync which might be useful if your main box is separate from the mythtv box as it is for me.

21 reacties:

alieas said...

This is great! I'm going to try this out and let you know what I think! mythmusic just doesn't do it for me... I have so much music in a iTunes type folder structure.. I'm looking into auto playlist generators but this solution looks promising!

Michiel said...

glad you liked it, and if you're into auto playlist generators you'll love Amarok's dynamic playlists and suggested song features.

-=StreetJesus=- said...

Great post! Myth rules. Thank you for sharing!

old bull said...

Fabulous! Thank you very much indeed.

One question though: I have an "old time" TV, and the amarok "system" fonts are very small, making it difficult to access menu items etc.. Being a linux noob, I figured out this could be changed in the KDE fonts configuration files. But being a linux noob returning from trying slackware many years ago, I feel more confident with CLI, alas have I not installed any windowmanager other than what the ubuntu-mythtv-frontend metapackage installed for me (minimal GDM I presume).

Could you give me some hints on how to change appropriate files in CLI so that Amarok could be usable in 800x600 og 1024x768 resolution? If you point me to the correct files, I am sure I'll experiment my way to the goal.

Thanks again!

Regards,
Magnus

Michiel said...

Hi Magnus,

you will want to open Amarok, go to menu Settings > Configure Amarok, go to the 'Appearance' tab, and select custom fonts and sizes. Here you can also set a different color there for better contrast.

I also use the remote desktop functionality a lot, especially when creating custom playlists. As far as I know, RDP is present in both Gnome and KDE.

Noah said...

wow... i was thinking about doing just this with either amarokFS or kirocker for a nice full screen display.

i was wondering... is there any way to change the lirc "mode" via the command line? so that i can add a menu item to mythtv that starts up amarok and changes the lirc mode to the amarok commands in lircrc. then the back/exit button on my remote can change the mode back to the regular mythtv stuff.

or is the only way to change a mode through the remote itself? any ideas?

Anonymous said...

Hm. Great. At least that's what I thought when I first tried out your cookbook. But nowadays I am not anymore wise enough to do what you described.

Can you post your .lircrc? Pleaaaase.

redetkonfus

Michiel said...

# ~/.mythtv/lircrc
#
# MythTV native LIRC config file for
# the new grey Hauppauge remote
#
# Modified from Jarod Wilson's which came from Jeff Campbell's
# By Brad Templeton
# AcidZebra modified a lot in this file, added an Amarok section
# and fleshed out the Xine section.

# Start in MythTV mode
begin
flags = startup_mode
mode = mythtv
end

# go to LiveTV
begin mythtv
begin
prog = mythtv
button = TV
repeat = 3
config = F5
end

# Go to video browser
begin
prog = mythtv
button = Videos
repeat = 3
config = F2
end

# Launch Amarok
begin
prog = irexec
button = Music
repeat = 3
config = /sbin/alsactl restore; /usr/bin/amarok
mode = amarok
flags = mode
end

# Launch Photo module
begin
prog = mythtv
button = Pictures
repeat = 3
config = F
end

# Open TV guide
begin
prog = mythtv
button = Guide
repeat = 3
config = F3
end

# ?
begin
prog = mythtv
button = Radio
repeat = 3
config = F4
end

begin
prog = mythtv
button = UP
repeat = 3
config = Up
end

begin
prog = mythtv
button = DOWN
repeat = 3
config = Down
end

begin
prog = mythtv
button = LEFT
repeat = 3
config = Left
end

begin
prog = mythtv
button = RIGHT
repeat = 3
config = Right
end

# Channel Up
begin
prog = mythtv
button = Channel-UP
repeat = 3
config = Up
end

# Channel Down
begin
prog = mythtv
button = Channel-DOWN
repeat = 3
config = Down
end

# OK/Select
begin
prog = mythtv
button = Ok
config = Space
end

# Play
begin
prog = mythtv
button = Play
config = Return
end

# Stop
begin
prog = mythtv
button = Stop
config = I
end

# Escape/Exit/Back
begin
prog = mythtv
button = Back-Exit
config = Esc
end

# Power Button
begin
prog = irexec
button = Power
repeat = 4
config = /usr/bin/restartmyth
end

# Pause
begin
prog = mythtv
button = Pause
repeat = 3
config = P
end

# Mute
begin
prog = mythtv
button = Mute
repeat = 3
config = |
end

# Fast forward (30 sec default)
begin
prog = mythtv
button = Rewind
repeat = 3
config = <
end

# Rewind (10 sec default)
begin
prog = mythtv
button = Forward
repeat = 3
config = >
end

# Skip forward (10 min default)
begin
prog = mythtv
button = Next
repeat = 3
config = End
end

# Skip backward (10 min default)
begin
prog = mythtv
button = Previous
repeat = 3
config = Home
end

# Record
begin
prog = mythtv
button = Record
repeat = 3
config = R
end

# Delete
begin
prog = mythtv
button = Red
repeat = 3
config = D
end

# Decrease play speed
begin
prog = mythtv
button = Green
repeat = 3
config = J
end

# Display EPG while in live TV,
# View selected show while in EPG
begin
prog = mythtv
button = Menu
repeat = 3
config = M
end

# Scroll up
begin
prog = mythtv
button = Volume-UP
repeat = 3
config = F11
end

# Scroll down
begin
prog = mythtv
button = Volume-DOWN
repeat = 3
config = F10
end

# Bring up OSD info
begin
prog = mythtv
button = Go
repeat = 3
config = I
end

# Change display aspect ratio
begin
prog = mythtv
button = Prev-Channel
repeat = 3
config = W
end

# double speed watch
begin
prog = mythtv
button = Yellow
repeat = 3
config = J
end

# change tuners
begin
prog = mythtv
button = hash
repeat = 3
config = Y
end

# Bring up Time stretch
begin
prog = mythtv
button = Blue
repeat = 3
config = A
end

# Numbers 0-9

begin
prog = mythtv
button = 0
repeat = 3
config = 0
end

begin
prog = mythtv
button = 1
repeat = 3
config = 1
end

begin
prog = mythtv
button = 2
repeat = 3
config = 2
end

begin
prog = mythtv
button = 3
repeat = 3
config = 3
end

begin
prog = mythtv
button = 4
repeat = 3
config = 4
end

begin
prog = mythtv
button = 5
repeat = 3
config = 5
end

begin
prog = mythtv
button = 6
repeat = 3
config = 6
end

begin
prog = mythtv
button = 7
repeat = 3
config = 7
end

begin
prog = mythtv
button = 8
repeat = 3
config = 8
end

begin
prog = mythtv
button = 9
repeat = 3
config = 9
end
end mythtv

### MPlayer lirc setup

# Show OSD
begin
prog = mplayer
button = MENU
repeat = 3
config = osd
end

# Pause playback
begin
prog = mplayer
button = PAUSE
repeat = 3
config = pause
end

# Escape/Exit/Back
begin
prog = mplayer
button = Back-Exit
config = quit
repeat = 3
end

# volume up
begin
prog = mplayer
button = Volume-UP
repeat = 3
config = volume 1
end

# volume down
begin
prog = mplayer
button = Volume-DOWN
repeat = 3
config = volume -1
end

# speed = 1
begin
prog = mplayer
button = PLAY
repeat = 3
config = speed_set 1.0
end

# Skip 60 secs
begin
prog = mplayer
button = Ok
repeat = 3
config = seek +60
end

# Stop playback and exit
begin
prog = mplayer
button = STOP
repeat = 3
config = quit
end

# Mute
begin
prog = mplayer
button = MUTE
repeat = 3
config = mute
end

# Quit
begin
prog = mplayer
button = BACK/EXIT
repeat = 3
config = quit
end

# Frame Step
begin
prog = mplayer
button = Red
repeat = 3
config = frame_step
end

# panscan +1
begin
prog = mplayer
button = Next
repeat = 3
config = panscan +0.1
end

# panscan -1
begin
prog = mplayer
button = Previous
repeat = 3
config = panscan -0.1
end


# rewind 10 secs
begin
prog = mplayer
button = Rewind
repeat = 3
config = speed_mult 0.5
end

# forward 10 secs
begin
prog = mplayer
button = Forward
repeat = 3
config = speed_mult 2
end

# Skip forward (1 min default)
begin
prog = mplayer
button = RIGHT
repeat = 3
config = seek +30
end

# Skip backward (1 min default)
begin
prog = mplayer
button = LEFT
repeat = 3
config = seek -30
end

# Skip forward (10 min default)
begin
prog = mplayer
button = UP
repeat = 3
config = seek +600
end

# Skip backward (10 min default)
begin
prog = mplayer
button = DOWN
repeat = 3
config = seek -600
end


### Xine lirc setup
begin
prog = xine
button = Play
repeat = 0
config = Play
end

begin
prog = xine
button = Play
repeat = 0
config = SpeedReset
end

begin
prog = xine
button = Play
repeat = 0
config = ZoomReset
end

begin
prog = xine
button = Stop
repeat = 0
config = Quit
end

begin
prog = xine
button = Back-Exit
repeat = 0
config = Quit
end

begin
prog = xine
button = Pause
repeat = 0
config = Pause
end

begin
prog = xine
button = UP
repeat = 0
config = EventUp
end

begin
prog = xine
button = DOWN
repeat = 0
config = EventDown
end

begin
prog = xine
button = UP
repeat = 2
config = SeekRelative-60
end

begin
prog = xine
button = DOWN
repeat = 2
config = SeekRelative+60
end

begin
prog = xine
button = LEFT
repeat = 0
config = EventLeft
end

begin
prog = xine
button = RIGHT
repeat = 0
config = EventRight
end

begin
prog = xine
button = LEFT
repeat = 2
config = SeekRelative-7
end

begin
prog = xine
button = RIGHT
repeat = 2
config = SeekRelative+7
end

begin
prog = xine
button = OK
repeat = 3
config = EventSelect
end

begin
prog = xine
button = OK
repeat = 1
config = SeekRelative+30
end


begin
prog = xine
button = Menu
repeat = 0
config = OSDStreamInfos
end

begin
prog = xine
button = Menu
repeat = 0
config = RootMenu
end

begin
prog = xine
button = Forward
repeat = 0
config = SpeedFaster
end

begin
prog = xine
button = Rewind
repeat = 0
config = SpeedSlower
end

begin
prog = xine
button = Volume-UP
repeat = 1
config = Volume+
end

begin
prog = xine
button = Volume-DOWN
repeat = 1
config = Volume-
end

begin
prog = xine
button = Mute
repeat = 0
config = Mute
end

begin
prog = xine
button = Next
repeat = 0
config = EventNext
end

begin
prog = xine
button = Next
repeat = 1
config = ZoomIn
end

begin
prog = xine
button = Previous
repeat = 0
config = EventPrior
end

begin
prog = xine
button = Previous
repeat = 1
config = ZoomOut
end

begin
prog = xine
button = Guide
repeat = 0
config = OSDStreamInfos
end

begin
prog = xine
button = red
repeat = 0
config = AudioChannelPrior
end

begin
prog = xine
button = green
repeat = 0
config = AudioChannelNext
end


begin
prog = xine
button = yellow
repeat = 0
config = SpuPrior
end

begin
prog = xine
button = blue
repeat = 0
config = SpuNext
end

begin
prog = xine
button = star
repeat = 0
config = APProcessEnable
end

begin
prog = xine
button = Prev-Channel
repeat = 0
config = ToggleAspectRatio
end

begin
prog = xine
button = Pictures
repeat = 0
config = Snapshot
end

begin
button = 1
prog = xine
repeat = 0
config = Number1
end
begin
button = 2
prog = xine
repeat = 0
config = Number2
end
begin
button = 3
prog = xine
repeat = 0
config = Number3
end
begin
button = 4
prog = xine
repeat = 0
config = Number4
end
begin
button = 5
prog = xine
repeat = 0
config = Number5
end
begin
button = 6
prog = xine
repeat = 0
config = Number6
end
begin
button = 7
prog = xine
repeat = 0
config = Number7
end
begin
button = 8
prog = xine
repeat = 0
config = Number8
end
begin
button = 9
prog = xine
repeat = 0
config = Number9
end
begin
button = 0
prog = xine
repeat = 0
config = Number0
end

# configuration of amarok. special mode because of overlapping configs
begin amarok
begin
prog = irexec
button = PLAY
config = dcop amarok player play
end

begin
prog = irexec
button = PAUSE
config = dcop amarok player playPause
end

begin
prog = irexec
button = STOP
config = dcop amarok player stop
end

begin
prog = irexec
button = Volume-Down
config = dcop amarok player volumeDown
repeat = 2
end

begin
prog = irexec
button = Volume-UP
config = dcop amarok player volumeUp
repeat = 2
end

begin
prog = irexec
button = Forward
config = dcop amarok player seekRelative 10
repeat = 3
end

begin
prog = irexec
button = Rewind
config = dcop amarok player seekRelative -10
repeat = 3
end

begin
prog = irexec
button = Next
config = dcop amarok player next
end

begin
prog = irexec
button = Previous
config = dcop amarok player prev
end

begin
prog = irexec
button = Back-Exit
config = dcop amarok MainApplication-Interface quit
flags = mode
mode = mythtv
end

begin
prog = irexec
button = Mute
config = dcop amarok player mute
end

begin
prog = irexec
button = 1
config = dcop amarok player setRating 2
end

begin
prog = irexec
button = 2
config = dcop amarok player setRating 4
end

begin
prog = irexec
button = 3
config = dcop amarok player setRating 6
end

begin
prog = irexec
button = 4
config = dcop amarok player setRating 8
end

begin
prog = irexec
button = 5
config = dcop amarok player setRating 10
end

begin
prog = irexec
button = green
config = dcop amarok contextbrowser showLyrics
end

begin
prog = irexec
button = yellow
config = dcop amarok contextbrowser showWiki
end

begin
prog = irexec
button = red
config = dcop amarok contextbrowser showCurrentTrack
end

begin
prog = irexec
button = blue
config = dcop amarok playlist repopulate
end

begin
prog = irexec
button = Guide
config = dcop kmix Mixer0 setMasterVolume 60; prev_volume=`dcop amarok player getVolume`; dcop amarok player setVolume `expr $prev_volume / 3`; (echo 'this is '; dcop amarok player artist; echo ' playing the song '; dcop amarok player title; echo ' from thee '; dcop amarok player year; echo ' album '; dcop amarok player album) | text2wave -F 44100 -scale 3 | aplay; dcop amarok player setVolume $prev_volume; dcop kmix Mixer0 setMasterVolume 100
end

end amarok

\\

Michiel said...

Damn that's a big ugly .rc. I should really clean that up sometime.

Anonymous said...

Hi

another NOOB question here, at the start of the article you state "Adjusting the MythTV menu" and give an example of the code that should be amended. could you please tell me which file needs to be modified?

Thanks a mill!

Jay

Michiel said...

Hi Jay,

as stated in the post it should be under /usr/share/mythtv/ , or if you did an install from scratch, /usr/local/share/mythtv

IMPORTANT: read the howto here:
http://www.mythtv.org/wiki/index.php/Menu_theme_development_guide
before you start fiddling with those files, and make backups!

Also, if you use my lirc remote setup, it won't change into Amarok mode when you start Amarok from the Mythmenu - you need to start it from the remote itself.

kjetilk said...

This is really great stuff! Thanks a lot!

On my Mythbuntu box, I modified /usr/share/mythtv/library.xml instead of the theme itself. So far, I have felt no need to do anything with the ALSA levels, but my sound system is slightly broken... Also, I created a ~/Desktop/Autostart/irexec script with ircexec --daemon to start irexec when logging in. So now, all that works great! :-)

I would have preferred if there were dcop functions to navigate the playlists too, but there seems that 's hard to do, so indeed, the mouse emulation seems like the only option.

I was wondering if you could post your lircmd.conf?

Michiel said...

Sure:

#
# lircmd config file
#

PROTOCOL IntelliMouse
#PROTOCOL MouseSystems

# ACCELERATOR start max multiplier

ACCELERATOR 2 50 6

ACTIVATE * Go

MOVE_N * 2
MOVE_NE * 3
MOVE_E * 6
MOVE_SE * 9
MOVE_S * 8
MOVE_SW * 7
MOVE_W * 4
MOVE_NW * 1
MOVE_N * UP
MOVE_E * RIGHT
MOVE_S * DOWN
MOVE_W * LEFT
MOVE_IN * Channel-UP
MOVE_OUT * Channel-DOWN

BUTTON1_CLICK * 5
BUTTON1_TOGGLE * star
BUTTON3_CLICK * hash

BUTTON1_CLICK * OK
BUTTON1_TOGGLE * Prev-Channel
BUTTON3_CLICK * Radio

# BUTTONx_CLICK, BUTTONx_UP, BUTTONx_DOWN are also possible

kjetilk said...

My amarok LIRC control works pretty well thanks to you! Now, I bumped into the problem is that LIRC still controls Myth underneath Amarok when Amarok is running. I saw you solved that problem by switching modes, but I haven't got a "music" button on my remote, so I start Amarok from the Myth menu. Therefore, I have no way to switch modes there... Do you have any proposals on how to change the mode in this case?

Michiel said...

Hi Kjetil,

don't you have any "spare" buttons you can assign as a mode button? # or * come to mind? I had the same problem as you - if you start Amarok from within MythTV it doesn't switch modes. Which is why I mapped a music button :)

There really should be a way to tell LIRC to switch modes programatically (via DCOP or something) but I don't know of any.

Ryan said...

I just wrote a quick little utility that can query and set the mode from a script. It should compile on any linux distribution that has the liblircclient-dev(or equivlent) package installed.

http://pastebin.com/f1e9f527d

Michiel said...

Ryan - that is awesome, thanks! I'm going to try it right this weekend!

Ryan said...

Although the lirc_mode utility worked great for me in irexec, irxevent, and amarok, I was never able to get mythfrontend working correctly. Perhaps it is specific to the mythbuntu/ubuntu distribution. Anyway, I wrote a script that kills mythfrontend when amarok starts, watches when amarok quits, and then changes the mode back and restarts mythfrontend.

my launch_amarok script:
http://pastebin.com/fe91fa62

the script I use for starting/stopping mtyhfrontend(mythpower):
http://pastebin.com/f7330463a

Michiel said...

Ah, I have the same issue. I'm on Fedora. It looks like mythtv doesn't want to play nice. I had the same issue with lcdproc: once mythfrontend is running it doesn't let anyone else get a turn.

So I've adopted your script, it works a treat. Thanks again.

Ryan said...

I discovered the mode problem with mythtv sharing it's mode.

MythTV Frontend, by default, uses it's own lircrc file under $HOME/.mythtv. The lircrcd, which keeps track of the mode, is launched by the lirc client library, and creates a socket in the same directory the client finds a config file. So to get myttv to play nice, you either need to delete the lircrc file under $HOME/.mythtv/ so it uses $MOHE/.lircrc, or you need to tell lircrcd where to create it's socket(I haven't researched that, might not be possible).

Just thought you'd like to know. I managed to make it where amarok and mythtv can co-exist, and set up button combinations to allow me to switch between them. I imagine the lcdproc issue won't be so easy to fix, but perhaps this information might be useful to people who google your blog.

Michiel said...

I managed to make them co-exist too, but I bought this sleek and ridiculous expensive Logitech dinovo edge keyboard :)
http://acidzebra.blogspot.com/2008/08/hardware-review-logitech-dinovo-edge.html

I found that while TV remotes are nice, they are limited and especially with Amarok it is nice to have a full keyboard and mouse combo. As an added bonus web browsing on the living room TV has become a viable proposition too.

Post a Comment