/* xmms-now-playing.c * * This program prints out a line: * * xmms playing (Artist - Title - Bitrate) - (0:03/5:52 [|---------]) * * If given one argument, that is the xmms session number, whatever that is. * * Compile with "gcc -Wall -O2 -g `xmms-config --cflags` `xmms-config --libs` -o xmms-now-playing xmms-now-playing.c" * * This replaces the combination of xmms-now-playing.sh and xmms-tool.c. * I could not find how to get the xmms version number from the * libxmms functions, xmms_remote_get_version() does not appear to be * related to the 1.2.11 versioning. */ #include #include #include int main(int argc, char *argv[]) { gint session = 0; gint pos = 0; gint songposition = 0; gint songlength = 0; gchar * title = 0; gint rate = 0, freq = 0, nch = 0; gint p_min = 0, p_sec = 0, t_min = 0, t_sec = 0; gint perdeca = 0; gchar * slider = 0; if ( argc == 2 ) { session = (int) strtol(argv[1], NULL, 10); } if ( xmms_remote_is_running(session) == 0 ) { fprintf(stderr,"XMMS is not currently running.\n"); return 10; } else { /* printf("xmms(1.2.11) "); */ printf("xmms "); if ( xmms_remote_is_playing(session) == 0 ) { printf("stopped "); } else if ( xmms_remote_is_paused(session) == 1 ) { printf("paused "); } else { printf("playing "); } pos = xmms_remote_get_playlist_pos(session); title = xmms_remote_get_playlist_title(session, pos); xmms_remote_get_info(session, &rate, &freq, &nch); printf("(%s - %dkbps) - ", title, rate / 1000); songposition = xmms_remote_get_output_time(session); songlength = xmms_remote_get_playlist_time(session, pos); p_min = songposition / (60*1000); p_sec = (songposition / 1000) % 60; t_min = songlength / (60*1000); t_sec = (songlength / 1000) % 60; perdeca = (10 * songposition) / songlength; switch (perdeca) { case 0: slider = "|---------"; break; case 1: slider = "-|--------"; break; case 2: slider = "--|-------"; break; case 3: slider = "---|------"; break; case 4: slider = "----|-----"; break; case 5: slider = "-----|----"; break; case 6: slider = "------|---"; break; case 7: slider = "-------|--"; break; case 8: slider = "--------|-"; break; default: slider = "---------|"; break; } printf("(%d:%02d/%d:%02d [%s])\n", p_min, p_sec, t_min, t_sec, slider); return 0; } }