#!/usr/bin/perl # gcdcd is GUI for cdcd command-line CD-player, version 20080104 -> 20080228, raimo # cdcd is required, install it: sudo apt-get install cdcd # INSTALL gcdcd: # wget -O ~/gcdcd.txt http://uhvo.org/sec/gcdcd.txt # sudo cp ~/gcdcd /usr/local/bin/gcdcd # sudo chmod 755 /usr/local/bin/gcdcd # START: # gcdcd ################################################################################## use strict; use Gtk2 "-init"; my $name = $0; $name =~ s/^.*\///; my $vers = 20080228; my $cdcd = "/usr/bin/cdcd"; my $gvc = "gnome-volume-control"; # x-terminal-emulator -e alsamixer my $lic = "http://creativecommons.org/licenses/publicdomain/"; &check_cdcd; my $win = Gtk2::Window -> new("toplevel"); $win -> set_position("center"); $win -> set_border_width(3); $win -> set_resizable(0); $win -> set_keep_above(1); $win -> set_title("gcdcd"); $win -> signal_connect ("delete_event", sub {Gtk2 -> main_quit}); my $vbox = Gtk2::VBox -> new; my $hbox1 = Gtk2::HBox -> new; my $hbox2 = Gtk2::HBox -> new; my $hbox3 = Gtk2::HBox -> new; my $rbut = Gtk2::Button -> new("Play"); $rbut -> signal_connect("clicked", sub{&run("play")}); my $pbut = Gtk2::ToggleButton -> new("Pause"); $pbut -> signal_connect("toggled", sub{&set_pause}); my $sbut = Gtk2::Button -> new("Stop"); $sbut -> signal_connect("clicked", sub{&run("stop")}); my $bbut = Gtk2::Button -> new("Prev"); $bbut -> signal_connect("clicked", sub{&run("prev")}); my $nbut = Gtk2::Button -> new("Next"); $nbut -> signal_connect("clicked", sub{&run("next")}); my $ebut = Gtk2::Button -> new(" Eject "); $ebut -> signal_connect("clicked", sub{&run("eject")}); my $alsa = Gtk2::Button -> new("Volume"); $alsa -> signal_connect("clicked", sub{`$gvc`}); my $mute = Gtk2::ToggleButton -> new(" Mute "); $mute -> signal_connect("toggled", sub{&set_mute}); $hbox1 -> pack_start($rbut, 0, 0, 0); $hbox1 -> pack_start($pbut, 0, 0, 0); $hbox1 -> pack_end($sbut, 0, 0, 0); $hbox2 -> pack_start($bbut, 0, 0, 0); $hbox2 -> pack_start($nbut, 0, 0, 0); $hbox2 -> pack_start($ebut, 0, 0, 0); $hbox3 -> pack_start($alsa, 0, 0, 0); $hbox3 -> pack_end($mute, 0, 0, 0); $vbox -> pack_start($hbox1, 0, 0, 0); $vbox -> pack_start($hbox2, 0, 0, 0); $vbox -> pack_start($hbox3, 0, 0, 0); $win -> add($vbox); $win -> show_all; Gtk2 -> main; exit 0; ##CHECK_CDCD sub check_cdcd{ return &dialog("warning", "ok", "cdcd not found!\nPlease, install it first:\nsudo apt-get install cdcd") if !-x $cdcd; } ##MESSAGE DIALOG sub dialog{ my ($mode, $button, $msg) = @_; my $dialog = Gtk2::MessageDialog -> new($win, [qw/modal destroy-with-parent/], $mode, $button, $msg); my $response = $dialog -> run; $dialog -> destroy; exit 2; } ## RUN sub run{ my $task = shift; `cdcd $task` } ## SET PAUSE sub set_pause{ &run("pause") if $pbut -> get_active == 1; &run("resume") if $pbut -> get_active == 0; } ## SET MUTE sub set_mute{ `cdcd setvol 10` if $mute -> get_active == 1; `cdcd setvol 255` if $mute -> get_active == 0; } #