1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
12 const CommandList music_commands
[] = {
14 { "Music Player Daemon", "sh -c \"mpc | grep -v '^volume: .* repeat: .* random: .*'\"" },
15 { "Rhythmbox", "rhythmbox --print-playing" },
16 { "XMMS / Beep", "logjam-xmms-client" },
17 { "amaroK", "dcop amarok player nowPlaying" },
22 music_current_source(void) {
25 if (!conf
.music_command
)
26 return MUSIC_SOURCE_NONE
;
28 for (i
= 0; i
< MUSIC_SOURCE_COUNT
; i
++) {
29 if (music_commands
[i
].label
&& music_commands
[i
].command
&&
30 (strcmp(music_commands
[i
].command
, conf
.music_command
) == 0))
33 return MUSIC_SOURCE_CUSTOM
;
37 music_error_quark(void) {
38 static GQuark quark
= 0;
40 quark
= g_quark_from_static_string("music-error-quark");
45 music_command_can_detect(GError
**err
) {
46 if (!conf
.music_command
|| !conf
.music_command
[0]) {
47 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_LINE_ERROR
, "%s",
48 _("No music command line is set."));
55 music_command_detect(const char *command
, GError
**err
) {
56 gchar
*std_out
, *std_err
, *p
, *cnv
;
59 if (!g_spawn_command_line_sync(command
,
60 &std_out
, &std_err
, &exit_status
, err
))
63 if (exit_status
!= 0) {
64 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_ERROR
, "%s", std_err
);
70 /* we take the first line of this output. */
71 for (p
= std_out
; *p
; p
++) {
78 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_ERROR
, "%s",
79 _("Command produced no output."));
83 /* Check if result is correct UTF-8 */
84 if (g_utf8_validate(std_out
, -1, NULL
))
86 /* Try converting from the current locale to UTF-8 */
87 cnv
= g_locale_to_utf8(std_out
, -1, NULL
, NULL
, err
);
93 music_can_detect(GError
**err
) {
94 return music_command_can_detect(err
);
98 music_detect(GError
**err
) {
99 if (conf
.music_command
)
100 return music_command_detect(conf
.music_command
, err
);