#!/usr/bin/env python import curses, commands from time import sleep from sys import exit stdscr = curses.initscr() curses.noecho() curses.cbreak() stdscr.keypad(1) curses.curs_set(0) def ak_basic(doit, return_status=0): dcop = 'dcop --user synan amarok player ' + doit ret_val = commands.getoutput(dcop).split(' ') if ret_val[0] in ('ERROR:','call','object'): return 0 elif return_status == 1: return ret_val else: return 1 def statuswin(message): global y, x win = curses.newwin(3, len(message)+4, y/2, x/2-len(message)+4/2) win.clear() win.border() win.addstr(1, 2, message) win.refresh() sleep(1) win.erase() y, x = stdscr.getmaxyx() ver = ak_basic('version', 1) if ver == 0: err = 1 statuswin('Amarok not running?') curses.curs_set(1); curses.nocbreak(); stdscr.keypad(0); curses.echo() curses.endwin() exit() else: version = 'Amarok ' + ver[0] statuswin(version) while(1): y, x = stdscr.getmaxyx() stdscr.clear() stdscr.border() stdscr.addstr(0, x/2-3, "amaroNC",curses.A_BOLD); stdscr.refresh() c = stdscr.getch() if c == ord('q'): err=0; break elif c == ord('n'): ret = ak_basic('next') if ret == 0: err = 1 break statuswin('Next track') elif c == ord('p'): ret = ak_basic('prev') if ret == 0: err = 1 break statuswin('Previous track') else: continue curses.curs_set(1); curses.nocbreak(); stdscr.keypad(0); curses.echo() curses.endwin() if err == 1: print "Amarok not running" else: print "Exiting.."