blob: 8de41b23680b4aa9eae7b4c80d637dd845c3878c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;
|