/* Copyright (C) 2025 awy stmusic is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. stmusic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with stmusic. If not, see . */ #include #include int main(void) { struct mpd_connection *conn; struct mpd_status *status; struct mpd_song *song; /* Connect to MPD (default: localhost:6600) */ conn = mpd_connection_new(NULL, 0, 30000); if (mpd_connection_get_error(conn) != MPD_ERROR_SUCCESS) { fprintf(stderr, "MPD connection error: %s\n", mpd_connection_get_error_message(conn)); return 1; } /* Get MPD status */ status = mpd_run_status(conn); if (!status) { fprintf(stderr, "Failed to get status: %s\n", mpd_connection_get_error_message(conn)); mpd_connection_free(conn); return 1; } enum mpd_state st = mpd_status_get_state(status); /* Don't print anything if mpd is stopped */ if (st == MPD_STATE_STOP) { return 0; } if (st == MPD_STATE_PAUSE) { printf(" "); }; /* Get current song */ song = mpd_run_current_song(conn); if (song) { const char *artist = mpd_song_get_tag(song, MPD_TAG_ARTIST, 0); const char *title = mpd_song_get_tag(song, MPD_TAG_TITLE, 0); printf("%s - %s", artist ? artist : "unknown", title ? title : "unknown"); mpd_song_free(song); } if (mpd_status_get_repeat(status)) { printf(" "); }; if (mpd_status_get_random(status)) { printf(" "); }; enum mpd_consume_state consumest = mpd_status_get_consume_state(status); switch (consumest) { case MPD_CONSUME_ONESHOT: printf(" 󰮯 󰇊"); break; case MPD_CONSUME_ON: printf(" 󰮯"); break; case MPD_CONSUME_UNKNOWN: break; case MPD_CONSUME_OFF: break; } enum mpd_single_state singlest = mpd_status_get_single_state(status); switch (singlest) { case MPD_SINGLE_ONESHOT: printf(" 󰇊"); break; case MPD_SINGLE_ON: printf(" 󰎤"); break; case MPD_CONSUME_UNKNOWN: break; case MPD_CONSUME_OFF: break; } mpd_status_free(status); mpd_connection_free(conn); return 0; }