:Como controlar seu XMMS apartir de programas externos: :Introdução: O xmms ele vêm com algumas headers para poder codar sobre ele, entre elas, há a xmmsctrl.h. Ela contém várias funções para poder controlar o xmms numa boa, entre elas ver a musica rodando no momento, dar pause, play, ir para a próxima musica, etc. :Básico: Aí vai um escopo de como seria: [inicio xmms.c] #include #include #include int main() { return 0; } [fim xmms.c] Pronto, agora compila-se assim: gcc xmms.c -I/usr/include/glib-1.2 -I/usr/include/xmms -I/usr/lib/glib/include -lxmms -o xmms-teste Necessita de chamar a glib, porque o xmms usa-a :D :Funções básicas: Primeiro você deve declarar a sessão, que é um inteiro zerado: int s = 0; Agora as funções: [inicio protótipos] void xmms_remote_play(gint session); void xmms_remote_pause(gint session); void xmms_remote_stop(gint session); [fim protótipos] Pelo nome da função já se percebe claramente oque ela faz :P Agora um code usando ambas funções: [inicio xmms_ctrl.c] #include "xmmsctrl.h" #include #include int main() { int s = 0; int o; do{ printf("Digite a opção\n"); printf("[1] Dar play no XMMS\n"); printf("[2] Dar pause no XMMS\n"); printf("[3] Dar STOP no XMMS\n"); scanf("%d", &o); } while((o < 1) || (o > 3)); if(o == 1) xmms_remote_play(s); if(o == 2) xmms_remote_pause(s); if(o == 3) xmms_remote_stop(s); return 0; } [fim xmms_ctrl.c] :Saber se XMMS está rodando: Para saber se seus comandos REALMENTE serão efetivados, é bom sempre checar se o Xmms está rodando :), para isso existe a função xmms_remote_is_running. Aí um exemplo de prog que checa: [inicio xmms_t.c] [HEADERS] int main() { int s = 0; if(xmms_remote_is_running(s)) printf("Está rodando :D\n"); else printf("Não está rodando D:\n"); return 0; } [fim xmms_t.c] :Outras funções: Há várias outras funções, entre elas: [inicio prototipos] void xmms_remote_playlist(gint session, gchar ** list, gint num, gboolean enqueue); gint xmms_remote_get_version(gint session); void xmms_remote_playlist_add(gint session, GList * list); void xmms_remote_playlist_delete(gint session, gint pos); gboolean xmms_remote_is_paused(gint session); gint xmms_remote_get_playlist_pos(gint session); void xmms_remote_set_playlist_pos(gint session, gint pos); gint xmms_remote_get_playlist_length(gint session); void xmms_remote_playlist_clear(gint session); gint xmms_remote_get_output_time(gint session); void xmms_remote_jump_to_time(gint session, gint pos); void xmms_remote_get_volume(gint session, gint * vl, gint * vr); gint xmms_remote_get_main_volume(gint session); gint xmms_remote_get_balance(gint session); void xmms_remote_set_volume(gint session, gint vl, gint vr); void xmms_remote_set_main_volume(gint session, gint v); void xmms_remote_set_balance(gint session, gint b); gchar *xmms_remote_get_skin(gint session); void xmms_remote_set_skin(gint session, gchar * skinfile); gchar *xmms_remote_get_playlist_file(gint session, gint pos); gchar *xmms_remote_get_playlist_title(gint session, gint pos); gint xmms_remote_get_playlist_time(gint session, gint pos); void xmms_remote_get_info(gint session, gint * rate, gint * freq, gint * nch); void xmms_remote_main_win_toggle(gint session, gboolean show); void xmms_remote_pl_win_toggle(gint session, gboolean show); void xmms_remote_eq_win_toggle(gint session, gboolean show); gboolean xmms_remote_is_main_win(gint session); gboolean xmms_remote_is_pl_win(gint session); gboolean xmms_remote_is_eq_win(gint session); void xmms_remote_show_prefs_box(gint session); void xmms_remote_toggle_aot(gint session, gboolean ontop); void xmms_remote_eject(gint session); void xmms_remote_playlist_prev(gint session); void xmms_remote_playlist_next(gint session); void xmms_remote_playlist_add_url_string(gint session, gchar * string); gboolean xmms_remote_is_running(gint session); void xmms_remote_toggle_repeat(gint session); void xmms_remote_toggle_shuffle(gint session); gboolean xmms_remote_is_repeat(gint session); gboolean xmms_remote_is_shuffle(gint session); void xmms_remote_get_eq(gint session, gfloat *preamp, gfloat **bands); gfloat xmms_remote_get_eq_preamp(gint session); gfloat xmms_remote_get_eq_band(gint session, gint band); void xmms_remote_set_eq(gint session, gfloat preamp, gfloat *bands); void xmms_remote_set_eq_preamp(gint session, gfloat preamp); void xmms_remote_set_eq_band(gint session, gint band, gfloat value); void xmms_remote_quit(gint session); void xmms_remote_play_pause(gint session); void xmms_remote_playlist_ins_url_string(gint session, gchar * string, gint pos); [fim prototipos] São VÁRIAS funções, não irei explicar todas, sendo que são bem intuitivas :D. Agora irei dar um exemplo básico de controle do XMMS e pegar a atual musica rodando nele :) [inicio xmms_fim.c] [HEADERS] #ifndef TRUE #define FALSE 0 #define TRUE (!FALSE) #endif int xmms_fatal(int s); int main() { int s = 0; int o; do{ printf("Digite a opção\n"); printf("[1] Mostrar musica tocando\n"); printf("[2] Dar play no XMMS\n"); printf("[3] Dar pause no XMMS\n"); printf("[4] Dar stop no XMMS\n"); printf("[5] \"Matar\" XMMS\n"); printf("[6] Limpa playlist atual do XMMS\n"); scanf("%d", &o); } while((o < 1) || (o > 6)); xmms_fatal(s); switch(o) { case 1: printf("Tocando: %s\n", xmms_remote_get_playlist_title(s, xmms_remote_get_playlist_pos(s))); break; case 2: xmms_remote_play(s); break; case 3: xmms_remote_pause(s); break; case 4: xmms_remote_stop(s); break; case 5: xmms_remote_quit(s); break; case 6: xmms_remote_playlist_clear(s); break; } return 0; } int xmms_fatal(int s) { if(xmms_remote_is_running(s)) return TRUE; else { printf("Abra o XMMS antes...\n"); exit(1); } } [fim xmms_fim.c] Bom, usei algumas das coisas aprendidas nesse tuto, etc, espero que tenham gostado :) :Bibliografia: Header xmmsctrl.h em /usr/include/xmms/ ; nem sempre fica ai, mas geralmente é nessa árvore que está localizada. :Autor: Morte137 :Contato: morte137@gmail.com