On Mon, May 9, 2011 at 4:48 AM, Jacob Meuser <jake...@sdf.lonestar.org>
wrote:
> On Mon, May 09, 2011 at 01:32:49AM +0300, Sviatoslav Chagaev wrote:
>> * sorted output looks cleaner, prettier;
>> * it's easier to find the variable you're looking for in a sorted
>> output;
>> * hierarchical variable names yet unordered? doesn't make sense;
>> * this way mixerctl's behaviour will be closer to other *ctl programs
>> which output variables in an ordered fashion (audioctl, sysctl,
>> wsconsctl).
>
> these are all matters of opinion, except for "hierarchical variable names"
> which is not technically the case here.
>

Okay, but what about making mixerctl more similar to other *ctl?

>> Before:
>
> note how the controls are grouped (mostly) by "widget".  please read
> azalia(4).

I did notice that.
Unfortunately, I can't access my amd64 machine right now. It has
like 2 to 3 times the amount of variables shown here and I think I saw
some vars there, for which I couldn't figure out by which criteria were they
ordered.
If mixerctl's intention is that the most important thing is the widget,
then the widget's name should've been placed in front.
I tried this just now, putting widget in front, then the mixer class --
it looks horrible, completely unscannable.
Maybe the mixer class is the most important thing after all, since
this is the most generic thing you can group various widgets by.

>
>> s@d630:0:/usr/src/usr.bin/mixerctl$ mixerctl
>> outputs.hp_source=dac-0:1
>> outputs.hp_dir=output
>> outputs.hp_boost=off
>> outputs.line-in_source=dac-2:3
>> outputs.line-in_dir=input
>> outputs.mic_dir=input-vr80
>> outputs.spkr_source=dac-2:3
>> outputs.spkr_dir=none
>> outputs.spkr_boost=off
>> inputs.dac-2:3_mute=off
>> inputs.dac-2:3=152,152
>> inputs.dac-0:1_mute=off
>> inputs.dac-0:1=152,152
>> inputs.sel_source=mic
>> outputs.sel=126,126
>> inputs.sel2_source=line-in
>> outputs.sel2=126,126
>> inputs.sel3_source=sel
>> inputs.sel3_sel=119,119
>> inputs.sel4_source=sel2
>> inputs.sel4_sel2=119,119
>> record.adc-0:1_source=sel3
>> record.adc-0:1_mute=off
>> record.adc-2:3_source=sel4
>> record.adc-2:3_mute=off
>> inputs.beep=85
>
> and at the end are the "pseudo" controls.  the ones most people are
> most interested in.  so even if the rest of the controls scroll by
> when you do a simple "mixerctl", you see these controls.
>

Just by looking at these variables, I cannot distinguish which ones are
"pseudo" and which aren't. This is an implementation detail, I think
the user of an interface shouldn't have to care about implementation
details.
I cannot provide any evidence that most people are or are not
interested in those "pseudo" vars, but I thought most of the time
people are interested in something like "play an mp3 file", "watch a
video", simple stuff like that. In this case one would probably be most
interested in outputs, volume controls... It's possible to adjust
sorting and output these vars last, by modifying the cmp function.
And I can argue that it is still easier to find what you're looking for
when the output is sorted, especially considering that the output of
mixerctl can vary widely between different computers.

>> outputs.hp_sense=plugged
>> outputs.line-in_sense=unplugged
>> outputs.spkr_muters=hp,line-in
>> outputs.master=153,153
>> outputs.master.mute=off
>> outputs.master.slaves=dac-2:3,dac-0:1
>> record.volume=0,0
>> record.volume.mute=off
>> record.volume.slaves=adc-0:1,adc-2:3
>>
>> After:
>> s@d630:0:/usr/src/usr.bin/mixerctl$ ./mixerctl
>> inputs.beep=85
>> inputs.dac-0:1=152,152
>> inputs.dac-0:1_mute=off
>> inputs.dac-2:3=152,152
>> inputs.dac-2:3_mute=off
>> inputs.sel2_source=line-in
>> inputs.sel3_sel=119,119
>> inputs.sel3_source=sel
>> inputs.sel4_sel2=119,119
>> inputs.sel4_source=sel2
>> inputs.sel_source=mic
>> outputs.hp_boost=off
>> outputs.hp_dir=output
>> outputs.hp_sense=plugged
>> outputs.hp_source=dac-0:1
>> outputs.line-in_dir=input
>> outputs.line-in_sense=unplugged
>> outputs.line-in_source=dac-2:3
>> outputs.master=153,153
>> outputs.master.mute=off
>> outputs.master.slaves=dac-2:3,dac-0:1
>> outputs.mic_dir=input-vr80
>> outputs.sel=126,126
>> outputs.sel2=126,126
>> outputs.spkr_boost=off
>> outputs.spkr_dir=none
>> outputs.spkr_muters=hp,line-in
>> outputs.spkr_source=dac-2:3
>> record.adc-0:1_mute=off
>> record.adc-0:1_source=sel3
>> record.adc-2:3_mute=off
>> record.adc-2:3_source=sel4
>> record.volume=0,0
>> record.volume.mute=off
>> record.volume.slaves=adc-0:1,adc-2:3
>
> I do not find this more useful.  prettier, perhaps, but not more useful.
> in particular, this (further) breaks the widget-wise grouping on some
> devices.  please read azalia(4), "inputs" and "outputs" is really just
> a hint, and making it more precise is much more difficult than adding
> sorting to mixerctl ...
>

Well it doesn't add any new functionality or anything, sure. I'm just
trying to improve my user experience.
For me, this would be useful because I wouldn't have to append "| sort"
to mixerctl every time I use it, and because I wouldn't have to
remember that it works slightly differently than other *ctl programs.
It would also be more aesthetically pleasing, making my computer just
that little bit friendlier, easier to use.
Besides, there's "correctness" mentioned in project goals, the reason
it looks prettier is because it is more correct, I think.

Reply via email to