So, it happened again: After weeks of faithfully serving my ears, XMMS decided to annoy me by playing a song from the playlist, but not moving to the next song after that. Last time that happened, I simply deleted the config-files and started XMMS again. This time, I want to find out if I can do something more subtle to cure the condition if it ever arises again.
and hidden files in Linux are those that start with a single dot. So, my XMMS-preferences are stored in ~/.xmms. Instead of simply deleting them and have them recreated the next time I start the application, I move them to a place where they will not be found.
stw@laptop:~> mv .xmms xmms-kaputt
will 'unhide' them from me, while it 'hides' them well enough for XMMS.
Next, I start xmms and terminate it again. So I have some brand new default preferences in '.xmms' Since I do not intend to go through each line in each file, I first make an educated guess in which file the options are stored.
stw@laptop:~> ls .xmms/ config menurc Plugins Skins xmms.m3u
So I need to compare the file named 'config'. But even that I do not intend to do myself. Let that computer do the working!
stw@laptop:~> diff .xmms/config xmms-kaputt/config 15c15 < no_playlist_advance=FALSE --- > no_playlist_advance=TRUE 19,20c19,20 < player_x=840 < player_y=39 --- > player_x=850 > player_y=33 37,38c37,38 < playlist_x=840 < playlist_y=25 --- > playlist_x=850 > playlist_y=19 [...]
While all those numbers simply indicate that I have moved the window differently, the first lines hold the intresting information: There is an option called 'no_playlist_advance'. I probably hit a key while XMMS was active that is a shortcut to this option. So the next time I have the problem, I can search the dialogs to unset it, or I go to the config-file and change it myself. No more need to erase all preferences I have set…
This recepie works with all applications that store their configuration in plain text. Under Linux, most apps do so. So if any program behaves strangely, safe the configuration before starting over. Of course, you can do many neat thing with 'diff'. See the manpage for details.