diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2016-01-31 23:04:16 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2016-01-31 23:09:30 +0100 |
| commit | b05b43242e5f739931cc197b451e6bcef1fc4327 (patch) | |
| tree | 73683477fc9fee63999413682e1cbd2deedede60 | |
| parent | 176d5d73f91326fa3d4648decbe34ecf3e28b5d2 (diff) | |
added asound script
| -rwxr-xr-x | asound.pl | 42 |
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; + |
