I managed to break RuneAudio that much it didn't want to boot anymore so I started from scratch and MPD is not getting stuck (so far ). I started using Python and got LCD screen to work and currently I'm working on scrolling both lines independently (because often Artist/Title name doesn't fit the screen since it's only 16 characters long).
ACX, the solution from link you gave me looks good but it probably won't fit my needs. Your idea was to call a Python script everytime there's a status change and pass this JSON to it to update the display. But I have a problem with it. I want to use LCD also for other things. For example, when I change volume, I want the LCD to display for example: "Volume: 55 %" for a few seconds and then return back to artist/song, the same as any other hi-fi system or car radio works. But if I have one script which will be called on each status update, this won't work. I guess he script will be called on volume update also, but how will my script know what has changed? I have to know if the volume has changed or song, or playing status.
So, is there any way to pull this JSON manually? For example, from URL (for example: "http://runeaudio.local?command=get_status") or something so I can catch it in Python when I want? Or maybe is there a better solution how can I pass this JSON as you recommened but to a running process/thread?
EDIT: now I see that you're parsing MPD status as well (I though you're pulling data from somewhere else, for example song data from ID3 tags) so I can continue to use "mpc status" and parse it by myself in Python. But how do you actually parse song artist and title (for example, for sending to last.fm)? Mpc returns it as ARTIST - TITLE, but parsing it by " - " is not very scalable. For example, if we have ABC - DEF - TITLE where "ABC - DEF" is artist name, it will parse it wrong. I thought that there's possibility to get separated artist and title data (from ID3 tags).