summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2016-01-31 23:04:16 +0100
committerReiner Herrmann <reiner@reiner-h.de>2016-01-31 23:09:30 +0100
commitb05b43242e5f739931cc197b451e6bcef1fc4327 (patch)
tree73683477fc9fee63999413682e1cbd2deedede60
parent176d5d73f91326fa3d4648decbe34ecf3e28b5d2 (diff)
added asound script
-rwxr-xr-xasound.pl42
1 files changed, 42 insertions, 0 deletions
diff --git a/asound.pl b/asound.pl
new file mode 100755
index 0000000..8de41b2
--- /dev/null
+++ b/asound.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+#
+# Choose default sound card for ~/.asoundrc.
+#
+
+use strict;
+use warnings;
+
+use UI::Dialog::Console;
+
+my $cards = {};
+
+open (FILE, "<", "/proc/asound/cards") or die "Can't open file: $!\n";
+while (<FILE>) {
+ if (/^\s*(\d)+\s*\[(\w+)\s*\]:\s*.* - (.*)/) {
+ $cards->{$2} = [$1, $3];
+ }
+}
+close FILE;
+
+die "No sound cards found.\n" unless scalar keys %$cards > 0;
+
+my $dialog = UI::Dialog::Console->new(title => 'Default sound card chooser');
+my @list = map { $_, $cards->{$_}->[1] } sort { $cards->{$a}->[0] <=> $cards->{$b}->[0] } keys %$cards;
+my $card = $dialog->menu(text => 'Select the card:', list => \@list);
+$dialog->clear();
+
+unless ($dialog->state() eq 'OK') {
+ print "Nothing selected.\n";
+ exit 1;
+}
+
+print "Selected card '$cards->{$card}->[1]'.\n";
+
+open (FILE, ">", $ENV{"HOME"} . "/.asoundrc") or die "Can't open file for writing: $!\n";
+my $index = $cards->{$card}->[0];
+print FILE "# Auto-generated file
+defaults.ctl.card $index
+defaults.pcm.card $index
+defaults.timer.card $index\n";
+close FILE;
+