Code Monkey home page Code Monkey logo

wmamixer's Introduction

wmamixer

Wmamixer is a fork of wmsmixer and is an ALSA mixer dockapp for Window Maker.

The code for the ALSA part was taken and adapted from amixer and alsamixer programs from alsa-utils package.

wmamixer overview

Build

To build the dockapp, just perform following command in the project topmost directory:

$ make

Next, copy binary wmamixer in convenient place.

Usage

To see usage information for the dockapp, pass --help option from terminal emulator, like:

user@linux ~ $ wmamixer --help

which will output several lines of information and options:

  • -h or --help will display options and exit,

  • -v or --version will display version and exit,

  • -w will use withdrawn state, which will make wmamixer behave like a Window Maker dockapp,

  • -s will make some part of the window transparent,

  • -a will make window a bit smaller. Instead of standard 64x64 pixels, it will be 56x56 pixels, additionally with transparent background. This mode is useful for placing it in AfterStep Wharf,

  • -l with a color as an argument will change led color (default bright greenish),

  • -b with a color as an argument will change background for the led color (default dark greenish). Colors can be specified using X11 color names, or by hexadecimal number in #RGB format, like:

    user@linux ~ $ wmamixer -l red -b '#ffff00'  # red led on yellow background
    user@linux ~ $ wmamixer -b darkslateblue  # Dark Slate Blue background
    
  • -d selects desired ALSA device. By default, first device, which is called default is selected. That device is taken by pulseaudio nowadays, so you'll see only two controls: one for master volume and the other for capture volume. To be able to change all supported by soundcard controls, you need to pass right PCM device to this option. First, you need to know which device need to be passed as an argument to -d option. To list ALSA devices you might use aplay program from alsa-utils package:

    user@linux ~ $ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: PCH [HDA Intel PCH], device 0: 92HD91BXX Analog [92HD91BXX Analog]
      Subdevices: 0/1
      Subdevice #0: subdevice #0
    

    So in above example there are two sound devices, which one is HDMI and the other PCH. To select PCH device, it is enough to invoke wmamixer like:

    user@linux ~ $ wmamixer -d hw:1
    

    where hw:1 means the second card (you can see it within the line card 1: PCH [HDA Intel PCH], device 0: 92HD91BXX Analog [92HD91BXX Analog] on aplay -l output in the example above),

  • -position with appropriate argument (usually +0+0 for top-left corner) will try to convince window manager to place application in certain position,

  • -display with correct X11 display will try to use specified display instead of current one (usually :0).

User interface is straightforward.

wmamixer gui elements

  1. Volume level indicator of currently selected mixer.
  2. Icon for currently selected mixer. If clicked, will show abbreviated mixer name for a short time on volume level indicator.
  3. Cycles through available mixers.
  4. Volume bar. Clicking on the volume bar between the left and right channels will set same volume level for both of them. Mouse scroll will adjust volume for both channels at the same time.
  5. If clicked on left or right bar, volume will be adjusted for selected mixer left or right channel accordingly. Note, that not all mixers have ability to adjust volume for each channels separately. Mouse scroll will adjust volume for both channels as in point 4.

Bugs

If spotted any bug, please report it using bug tracker on bitbucket or github.

Changes

Changes with comparison with wmsmixer:

  • ALSA instead of OSS. This is the real thing, using alsa-lib, not just emulation of OSS.
  • Removed config file support, since it doesn't apply anymore

Limitations

1. Currently, wmamixer does not support switches and enum type of controls. Only volume is supported. Enum and switch based ALSA controls are simply ignored.

2. There are controls with really small limit range, for example here is control Beep (pc speaker in other words) which is represented by amixer like this:

Simple mixer control 'Beep',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback 0 - 3
Mono: Playback 1 [33%] [-12.00dB] [on]

Under "Limits" section, there is a Playback capability with range 0 - 3. Using scrollwheel on such low ranges is somehow awkward. For that controls it's better to use clicking instead of scrolling.

wmamixer's People

Contributors

gryf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wmamixer's Issues

Suggestion to highlight capabilities and improve the README.rst

Firstly thank you for creating an ALSA version of wmsmixer which with its necesssary inconvenience of having to be invoked with padsp, can now be removed.

I would suggest that you mention the all important "-d alsa_device" command line flag in the README.rst file, since it is not obvious that wmamixer can be used for not just what is usually the default "pulse" soundcard but any other ALSA soundcard device on the system.

This is a most important and useful feature which should be emphasized, and I only discovered this by digging into the source code which many users may not bother to do.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.