718 lines
27 KiB
Scdoc
718 lines
27 KiB
Scdoc
waybar-cava(5) "waybar-cava" "User Manual"
|
||
|
||
# NAME
|
||
|
||
waybar - cava module
|
||
|
||
# DESCRIPTION
|
||
|
||
The *cava* module integrates the *karlstav/cava* audio visualizer into Waybar.
|
||
It supports two frontends: a text-based *raw* frontend and a GPU-based *GLSL*
|
||
frontend. The active frontend is selected by the *method* option in the
|
||
*[output]* section of the cava configuration file.
|
||
|
||
# FILES
|
||
|
||
$XDG_CONFIG_HOME/waybar/config ++
|
||
Per user configuration file
|
||
|
||
# ADDITIONAL FILES
|
||
|
||
libcava lives in:
|
||
|
||
. /usr/lib/libcava.so or /usr/lib64/libcava.so
|
||
. /usr/lib/pkgconfig/cava.pc or /usr/lib64/pkgconfig/cava.pc
|
||
. /usr/include/cava
|
||
|
||
# CONFIGURATION
|
||
|
||
[- *Option*
|
||
:[ *Type*
|
||
:[ *Default*
|
||
:[ *Description*
|
||
|[ *cava_config*
|
||
:[ string
|
||
:[
|
||
:[ Path to the cava configuration file. When provided, cava settings are read from it first.
|
||
|[ *framerate*
|
||
:[ integer
|
||
:[ 30
|
||
:[ Target frames per second. Replaces the generic *interval* option.
|
||
|[ *autosens*
|
||
:[ integer
|
||
:[ 1
|
||
:[ Automatically decrease sensitivity when the bars peak.
|
||
|[ *sensitivity*
|
||
:[ integer
|
||
:[ 100
|
||
:[ Manual sensitivity in %. If *autosens* is enabled, this is only the initial value. 200 means double height. Accepts only non-negative values.
|
||
|[ *bars*
|
||
:[ integer
|
||
:[ 12
|
||
:[ The number of bars.
|
||
|[ *lower_cutoff_freq*
|
||
:[ long integer
|
||
:[ 50
|
||
:[ Lower cutoff frequency for the visualizer bandwidth.
|
||
|[ *higher_cutoff_freq*
|
||
:[ long integer
|
||
:[ 10000
|
||
:[ Higher cutoff frequency for the visualizer bandwidth.
|
||
|[ *sleep_timer*
|
||
:[ integer
|
||
:[ 5
|
||
:[ Seconds of silence before cava enters sleep mode.
|
||
|[ *hide_on_silence*
|
||
:[ bool
|
||
:[ false
|
||
:[ Hide the widget when silence lasts longer than *sleep_timer*.
|
||
|[ *format_silent*
|
||
:[ string
|
||
:[
|
||
:[ Text shown when the module is silent and *hide_on_silence* is false. **Raw frontend only.**
|
||
|[ *format-icons*
|
||
:[ array
|
||
:[
|
||
:[ Array of characters used to render bar levels in the raw frontend. The number of items determines the dynamic range.
|
||
|[ *method* \[input\]
|
||
:[ string
|
||
:[ pulse
|
||
:[ Audio capture backend. Supported values: pipewire, pulse, alsa, fifo, sndio, shmem.
|
||
|[ *source*
|
||
:[ string
|
||
:[ auto
|
||
:[ Audio source identifier. See the cava documentation for details.
|
||
|[ *sample_rate*
|
||
:[ long integer
|
||
:[ 44100
|
||
:[ See the cava documentation.
|
||
|[ *sample_bits*
|
||
:[ integer
|
||
:[ 16
|
||
:[ See the cava documentation.
|
||
|[ *stereo*
|
||
:[ bool
|
||
:[ true
|
||
:[ Enable stereo visualization.
|
||
|[ *reverse*
|
||
:[ bool
|
||
:[ false
|
||
:[ Reverse the bar order (highest frequencies on the left).
|
||
|[ *bar_delimiter*
|
||
:[ integer
|
||
:[ 0
|
||
:[ Delimiter placed between bars in the raw output. Use a decimal ASCII value (e.g. 59 = ";"). 0 means no delimiter.
|
||
|[ *data_format*
|
||
:[ string
|
||
:[ ascii
|
||
:[ Raw data format. Can be 'binary' or 'ascii'. **Raw frontend only.**
|
||
|[ *raw_target*
|
||
:[ string
|
||
:[
|
||
:[ Raw output target. A fifo will be created if target does not exist. **Raw frontend only.**
|
||
|[ *monstercat*
|
||
:[ bool
|
||
:[ false
|
||
:[ Enable Monstercat smoothing.
|
||
|[ *waves*
|
||
:[ bool
|
||
:[ false
|
||
:[ Enable the waves effect alongside Monstercat smoothing.
|
||
|[ *noise_reduction*
|
||
:[ double
|
||
:[ 0.77
|
||
:[ Smoothing factor between 0.0 and 1.0. Higher values produce slower, smoother animation; lower values are more reactive but noisy.
|
||
|[ *input_delay*
|
||
:[ integer
|
||
:[ 4
|
||
:[ Delay in seconds before starting audio capture. Increase this if Waybar starts before the audio server (e.g. PipeWire).
|
||
|[ *bar_width*
|
||
:[ integer
|
||
:[
|
||
:[ Bar width in pixels. **Used by the GLSL frontend.**
|
||
|[ *bar_spacing*
|
||
:[ integer
|
||
:[
|
||
:[ Space between bars in pixels. **Used by the GLSL frontend.**
|
||
|[ *bar_height*
|
||
:[ integer
|
||
:[
|
||
:[ Ignored by Waybar. Used only by cava's "noritake" output format.
|
||
|[ *menu*
|
||
:[ string
|
||
:[
|
||
:[ Action that opens the menu.
|
||
|[ *menu-file*
|
||
:[ string
|
||
:[
|
||
:[ Location of the menu descriptor file. There must be a GtkMenu element with id *menu*.
|
||
|[ *menu-actions*
|
||
:[ array
|
||
:[
|
||
:[ Actions corresponding to the buttons of the menu.
|
||
|[ *method* \[output\]
|
||
:[ string
|
||
:[ raw
|
||
:[ Cava output method. Set to *raw* for the text frontend or *sdl_glsl* for the GPU frontend. **This is set inside the *[output]* section of the cava configuration file, not in Waybar's JSON.**
|
||
|[ *sdl_width*
|
||
:[ integer
|
||
:[
|
||
:[ GLSL frontend width in pixels. **GLSL only.**
|
||
|[ *sdl_height*
|
||
:[ integer
|
||
:[
|
||
:[ GLSL frontend height in pixels. **GLSL only.**
|
||
|[ *min-length*
|
||
:[ integer
|
||
:[
|
||
:[ Requested width of the GLSL widget in pixels. If not set, falls back to *max-length*, then *sdl_width*. **GLSL only.**
|
||
|[ *max-length*
|
||
:[ integer
|
||
:[
|
||
:[ Fallback width of the GLSL widget if *min-length* is not set. **GLSL only.**
|
||
|[ *vertex_shader*
|
||
:[ string
|
||
:[
|
||
:[ Path to the vertex shader. **GLSL only; set in the *[output]* section of the cava configuration file.**
|
||
|[ *fragment_shader*
|
||
:[ string
|
||
:[
|
||
:[ Path to the fragment shader. **GLSL only; set in the *[output]* section of the cava configuration file.**
|
||
|[ *continuous_rendering*
|
||
:[ integer
|
||
:[ 0
|
||
:[ Continue rendering when silent. Set to 1 for smooth animation. **GLSL only; set in the *[output]* section of the cava configuration file.**
|
||
|[ *background*
|
||
:[ string
|
||
:[
|
||
:[ Background color as a '#RRGGBB' hex string (must be quoted). **GLSL only; set in the *[color]* section of the cava configuration file.**
|
||
|[ *foreground*
|
||
:[ string
|
||
:[
|
||
:[ Foreground color as a '#RRGGBB' hex string (must be quoted). **GLSL only; set in the *[color]* section of the cava configuration file.**
|
||
|[ *gradient*
|
||
:[ integer
|
||
:[ 0
|
||
:[ Enable gradient mode (0 = off, 1 = on). **GLSL only.** Can also be set in the *[color]* section of the cava configuration file.
|
||
|[ *gradient_count*
|
||
:[ integer
|
||
:[ 0
|
||
:[ Number of gradient colors (up to 8). **GLSL only.** Can also be set in the *[color]* section of the cava configuration file.
|
||
|[ *gradient_color_N*
|
||
:[ string
|
||
:[
|
||
:[ Gradient color N (1–8) as a '#RRGGBB' hex string (must be quoted). **GLSL only; set in the *[color]* section of the cava configuration file.**
|
||
|
||
Configuration can be provided in three ways:
|
||
|
||
- **Cava config only**: set *cava_config* to a cava configuration file and omit all other options.
|
||
- **Waybar JSON only**: leave out *cava_config* and set every option in Waybar's module configuration.
|
||
- **Mixed**: provide a *cava_config* and also set specific options in Waybar's JSON. Waybar reads the file first, then overrides any values present in the JSON.
|
||
|
||
# ACTIONS
|
||
|
||
[- *String*
|
||
:[ *Action*
|
||
|[ *mode*
|
||
:[ Toggle pause/resume for the audio capture and output threads.
|
||
|
||
# DEPENDENCIES
|
||
|
||
- iniparser
|
||
- fftw3
|
||
- epoxy (GLSL frontend only)
|
||
|
||
# SOLVING ISSUES
|
||
|
||
. At startup Waybar fails with *"error while loading shared libraries: libcava.so: cannot open shared object file: No such file or directory"*.
|
||
This happens when libcava has not been registered in the system library cache. Run *sudo ldconfig* to refresh the cache.
|
||
This can also occur when Waybar is installed under */usr/local* but libcava is elsewhere. To fix it:
|
||
1. Remove the local libcava installation: *sudo rm -rfv /usr/local/include/cava /usr/local/lib64/pkgconfig/cava.pc /usr/local/lib64/libcava.so*
|
||
2. Reconfigure Waybar to use the system prefix: *meson configure build -Dprefix="/usr"*
|
||
3. Rebuild Waybar: *ninja -C build*
|
||
4. Install Waybar: *sudo meson install -C build*
|
||
|
||
. Waybar starts but the cava module does not react to audio.
|
||
1. First, verify that standalone cava works correctly.
|
||
2. If it does, comment out all Waybar cava options, uncomment *cava_config*, and point it to the working cava configuration file.
|
||
3. The *input_delay* may be too large or too small. Try setting it to 4 seconds, restart Waybar, and check again after that delay. This is usually sufficient, even on slower machines.
|
||
4. You may have accidentally toggled pause mode via an action.
|
||
|
||
# REPORTING ISSUES
|
||
|
||
This module is a consumer of the cava API. For bugs in the cava engine itself, please report them to [cava upstream](https://github.com/karlstav/cava) first.
|
||
|
||
Upstream cava does not provide a shared library. The Waybar cava module uses [libcava](https://github.com/LukashonakV/cava), a fork maintained by the module author, to provide one. If the issue is specific to the shared library packaging, report it to libcava.
|
||
|
||
When requesting a new upstream cava release to be packaged in libcava, open an issue at libcava with the title `[Bump] x.x.x`, where `x.x.x` is the desired cava version.
|
||
|
||
# EXAMPLES
|
||
|
||
## Raw frontend
|
||
|
||
```
|
||
"cava": {
|
||
//"cava_config": "$XDG_CONFIG_HOME/cava/cava.conf",
|
||
"framerate": 30,
|
||
"autosens": 1,
|
||
//"sensitivity": 100,
|
||
"bars": 14,
|
||
"lower_cutoff_freq": 50,
|
||
"higher_cutoff_freq": 10000,
|
||
"method": "pulse",
|
||
"source": "auto",
|
||
"stereo": true,
|
||
"reverse": false,
|
||
"monstercat": false,
|
||
"waves": false,
|
||
"noise_reduction": 0.77,
|
||
"input_delay": 2,
|
||
"format-icons" : ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" ],
|
||
"actions": {
|
||
"on-click-right": "mode"
|
||
}
|
||
},
|
||
```
|
||
|
||
waybar_raw.conf
|
||
```
|
||
## Configuration file for CAVA.
|
||
# Remove the ; to change parameters.
|
||
|
||
|
||
[general]
|
||
|
||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
|
||
|
||
# Accepts only non-negative values.
|
||
|
||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
||
# new as of 0.6.0 autosens of low values (dynamic range)
|
||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
|
||
|
||
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
|
||
# 200 means double height. Accepts only non-negative values.
|
||
|
||
# The number of bars (0-512). 0 sets it to auto (fill up console).
|
||
# Bars' width and space between bars in number of characters.
|
||
bars = 12
|
||
# bar_height is only used for output in "noritake" format
|
||
|
||
# For SDL width and space between bars is in pixels, defaults are:
|
||
|
||
# sdl_glsl have these default values, they are only used to calculate max number of bars.
|
||
|
||
|
||
# Lower and higher cutoff frequencies for lowest and highest bars
|
||
# the bandwidth of the visualizer.
|
||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
||
|
||
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
|
||
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
|
||
sleep_timer = 5
|
||
|
||
|
||
[input]
|
||
|
||
# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem'
|
||
# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with.
|
||
# On Mac it defaults to 'portaudio' or 'fifo'
|
||
# On windows this is automatic and no input settings are needed.
|
||
#
|
||
# All input methods uses the same config variable 'source'
|
||
# to define where it should get the audio.
|
||
#
|
||
# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
||
#
|
||
# For pipewire 'source' will be the object name or object.serial of the device to capture from.
|
||
# Both input and output devices are supported.
|
||
#
|
||
# For alsa 'source' will be the capture device.
|
||
# For fifo 'source' will be the path to fifo-file.
|
||
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
|
||
#
|
||
# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'.
|
||
# README.md contains further information on how to setup CAVA for sndio.
|
||
#
|
||
# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device.
|
||
# README.md contains further information on how to setup CAVA for OSS on FreeBSD.
|
||
#
|
||
# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'.
|
||
# README.md contains further information on how to setup CAVA for JACK.
|
||
#
|
||
|
||
|
||
# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods:
|
||
# sample_rate: fifo, pipewire, sndio, oss
|
||
# sample_bits: fifo, pipewire, sndio, oss
|
||
# channels: sndio, oss, jack
|
||
# autoconnect: jack
|
||
# Other methods ignore these settings.
|
||
#
|
||
# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported
|
||
# by the chosen audio device, the device will use other supported values instead.
|
||
# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it
|
||
# will use 44100, 16 and 1.
|
||
#
|
||
|
||
|
||
[output]
|
||
|
||
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
|
||
# or 'sdl_glsl'.
|
||
# 'noncurses' (default) uses a buffer and cursor movements to only print
|
||
# changes from frame to frame in the terminal. Uses less resources and is less
|
||
# prone to tearing (vsync issues) than 'ncurses'.
|
||
#
|
||
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
|
||
# stream of the bar heights that can be used to send to other applications.
|
||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
||
#
|
||
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
|
||
# in graphic mode. It only support the 3000 series graphical VFDs for now.
|
||
#
|
||
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
|
||
# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or
|
||
# use one of the predefined ones.
|
||
method = raw
|
||
|
||
# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or
|
||
# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl
|
||
# and ncruses output. 'horizontal' (bars go up and down from center) is only supported
|
||
# on noncurses output.
|
||
# Note: many fonts have weird or missing glyphs for characters used in orientations
|
||
# other than 'bottom', which can make output not look right.
|
||
|
||
# Visual channels. Can be 'stereo' or 'mono'.
|
||
# 'stereo' mirrors both channels with low frequencies in center.
|
||
# 'mono' outputs left to right lowest to highest frequencies.
|
||
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
|
||
# set 'reverse' to 1 to display frequencies the other way around.
|
||
|
||
# Raw output target. A fifo will be created if target does not exist.
|
||
raw_target = /dev/stdout
|
||
|
||
# Raw data format. Can be 'binary' or 'ascii'.
|
||
data_format = ascii
|
||
|
||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
||
|
||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
||
|
||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
||
bar_delimiter = 0
|
||
|
||
# sdl window size and position. -1,-1 is centered.
|
||
|
||
# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none'
|
||
# 'frequency' displays the lower cut off frequency of the bar above.
|
||
# Only supported on ncurses and noncurses output.
|
||
|
||
# enable synchronized sync. 1 = on, 0 = off
|
||
# removes flickering in alacritty terminal emulator.
|
||
# defaults to off since the behaviour in other terminal emulators is unknown
|
||
|
||
# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders
|
||
|
||
; for glsl output mode, keep rendering even if no audio
|
||
|
||
# disable console blank (screen saver) in tty
|
||
# (Not supported on FreeBSD)
|
||
|
||
# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off
|
||
|
||
# show waveform instead of frequency spectrum, 1 = on, 0 = off
|
||
|
||
[color]
|
||
|
||
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
|
||
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
|
||
# a terminal that can change color definitions such as Gnome-terminal or rxvt.
|
||
# default is to keep current terminal color
|
||
|
||
# SDL and sdl_glsl only support hex code colors, these are the default:
|
||
|
||
# Gradient mode, only hex defined colors are supported,
|
||
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
|
||
# You can define as many as 8 different colors. They range from bottom to top of screen
|
||
|
||
[smoothing]
|
||
|
||
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
|
||
|
||
# Noise reduction, int 0 - 100. default 77
|
||
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
|
||
# 100 will be very slow and smooth, 0 will be fast and noisy.
|
||
|
||
|
||
[eq]
|
||
|
||
# This one is tricky. You can have as much keys as you want.
|
||
# Remember to uncomment more than one key! More keys = more precision.
|
||
# Look at readme.md on github for further explanations and examples.
|
||
```
|
||
|
||
## GLSL frontend
|
||
|
||
The GLSL frontend requires:
|
||
|
||
. The *epoxy* library.
|
||
. Vertex and fragment shaders from the cava project. Download them and place under _$XDG_CONFIG_HOME/cava/shaders_, then reference them in the cava configuration:
|
||
1. [cava shaders](https://github.com/karlstav/cava/tree/master/output/shaders)
|
||
2. [libcava shaders](https://github.com/LukashonakV/cava/tree/master/output/shaders)
|
||
. A separate cava configuration file is highly recommended.
|
||
|
||
Key cava configuration options for GLSL:
|
||
|
||
. *bars* — higher values produce more detailed visualization.
|
||
. *method* in *[output]* must be set to *sdl_glsl*.
|
||
. *sdl_width* and *sdl_height* control the module size.
|
||
. *vertex_shader* and *fragment_shader* point to the shader files under _$HOME/.config/cava/shaders_.
|
||
. *continuous_rendering* — set to 1 for smooth animation.
|
||
. *background*, *foreground*, and *gradient_color_N* must use hex codes inside single quotes.
|
||
|
||
Example:
|
||
|
||
waybar config
|
||
```
|
||
"cava": {
|
||
"cava_config": "$XDG_CONFIG_HOME/cava/waybar_cava.conf",
|
||
"input_delay": 2,
|
||
"actions": {
|
||
"on-click-right": "mode"
|
||
}
|
||
},
|
||
```
|
||
|
||
waybar_cava.conf
|
||
```
|
||
## Configuration file for CAVA.
|
||
# Remove the ; to change parameters.
|
||
|
||
|
||
[general]
|
||
|
||
# Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0
|
||
|
||
# Accepts only non-negative values.
|
||
|
||
# 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off
|
||
# new as of 0.6.0 autosens of low values (dynamic range)
|
||
# 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0
|
||
|
||
# Manual sensitivity in %. If autosens is enabled, this will only be the initial value.
|
||
# 200 means double height. Accepts only non-negative values.
|
||
|
||
# The number of bars (0-512). 0 sets it to auto (fill up console).
|
||
# Bars' width and space between bars in number of characters.
|
||
bars = 50
|
||
|
||
# bar_height is only used for output in "noritake" format
|
||
|
||
# For SDL width and space between bars is in pixels, defaults are:
|
||
|
||
# sdl_glsl have these default values, they are only used to calculate max number of bars.
|
||
|
||
# Lower and higher cutoff frequencies for lowest and highest bars
|
||
# the bandwidth of the visualizer.
|
||
# Note: there is a minimum total bandwidth of 43Mhz x number of bars.
|
||
# Cava will automatically increase the higher cutoff if a too low band is specified.
|
||
|
||
# Seconds with no input before cava goes to sleep mode. Cava will not perform FFT or drawing and
|
||
# only check for input once per second. Cava will wake up once input is detected. 0 = disable.
|
||
sleep_timer = 5
|
||
|
||
|
||
[input]
|
||
|
||
# Audio capturing method. Possible methods are: 'fifo', 'portaudio', 'pipewire', 'alsa', 'pulse', 'sndio', 'oss', 'jack' or 'shmem'
|
||
# Defaults to 'oss', 'pipewire', 'sndio', 'jack', 'pulse', 'alsa', 'portaudio' or 'fifo', in that order, dependent on what support cava was built with.
|
||
# On Mac it defaults to 'portaudio' or 'fifo'
|
||
# On windows this is automatic and no input settings are needed.
|
||
#
|
||
# All input methods uses the same config variable 'source'
|
||
# to define where it should get the audio.
|
||
#
|
||
# For pulseaudio and pipewire 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink
|
||
# (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them).
|
||
#
|
||
# For pipewire 'source' will be the object name or object.serial of the device to capture from.
|
||
# Both input and output devices are supported.
|
||
#
|
||
# For alsa 'source' will be the capture device.
|
||
# For fifo 'source' will be the path to fifo-file.
|
||
# For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address
|
||
#
|
||
# For sndio 'source' will be a raw recording audio descriptor or a monitoring sub-device, e.g. 'rsnd/2' or 'snd/1'. Default: 'default'.
|
||
# README.md contains further information on how to setup CAVA for sndio.
|
||
#
|
||
# For oss 'source' will be the path to a audio device, e.g. '/dev/dsp2'. Default: '/dev/dsp', i.e. the default audio device.
|
||
# README.md contains further information on how to setup CAVA for OSS on FreeBSD.
|
||
#
|
||
# For jack 'source' will be the name of the JACK server to connect to, e.g. 'foobar'. Default: 'default'.
|
||
# README.md contains further information on how to setup CAVA for JACK.
|
||
#
|
||
|
||
|
||
# The options 'sample_rate', 'sample_bits', 'channels' and 'autoconnect' can be configured for some input methods:
|
||
# sample_rate: fifo, pipewire, sndio, oss
|
||
# sample_bits: fifo, pipewire, sndio, oss
|
||
# channels: sndio, oss, jack
|
||
# autoconnect: jack
|
||
# Other methods ignore these settings.
|
||
#
|
||
# For 'sndio' and 'oss' they are only preferred values, i.e. if the values are not supported
|
||
# by the chosen audio device, the device will use other supported values instead.
|
||
# Example: 48000, 32 and 2, but the device only supports 44100, 16 and 1, then it
|
||
# will use 44100, 16 and 1.
|
||
#
|
||
|
||
|
||
[output]
|
||
|
||
# Output method. Can be 'ncurses', 'noncurses', 'raw', 'noritake', 'sdl'
|
||
# or 'sdl_glsl'.
|
||
# 'noncurses' (default) uses a buffer and cursor movements to only print
|
||
# changes from frame to frame in the terminal. Uses less resources and is less
|
||
# prone to tearing (vsync issues) than 'ncurses'.
|
||
#
|
||
# 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data
|
||
# stream of the bar heights that can be used to send to other applications.
|
||
# 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above.
|
||
#
|
||
# 'noritake' outputs a bitmap in the format expected by a Noritake VFD display
|
||
# in graphic mode. It only support the 3000 series graphical VFDs for now.
|
||
#
|
||
# 'sdl' uses the Simple DirectMedia Layer to render in a graphical context.
|
||
# 'sdl_glsl' uses SDL to create an OpenGL context. Write your own shaders or
|
||
# use one of the predefined ones.
|
||
method = sdl_glsl
|
||
|
||
# Orientation of the visualization. Can be 'bottom', 'top', 'left', 'right' or
|
||
# 'horizontal'. Default is 'bottom'. 'left and 'right' are only supported on sdl
|
||
# and ncruses output. 'horizontal' (bars go up and down from center) is only supported
|
||
# on noncurses output.
|
||
# Note: many fonts have weird or missing glyphs for characters used in orientations
|
||
# other than 'bottom', which can make output not look right.
|
||
|
||
# Visual channels. Can be 'stereo' or 'mono'.
|
||
# 'stereo' mirrors both channels with low frequencies in center.
|
||
# 'mono' outputs left to right lowest to highest frequencies.
|
||
# 'mono_option' set mono to either take input from 'left', 'right' or 'average'.
|
||
# set 'reverse' to 1 to display frequencies the other way around.
|
||
|
||
# Raw output target. A fifo will be created if target does not exist.
|
||
|
||
# Raw data format. Can be 'binary' or 'ascii'.
|
||
|
||
# Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530).
|
||
|
||
# Ascii max value. In 'ascii' mode range will run from 0 to value specified here
|
||
|
||
# Ascii delimiters. In ascii format each bar and frame is separated by a delimiters.
|
||
# Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)).
|
||
bar_delimiter = 0
|
||
|
||
# sdl window size and position. -1,-1 is centered.
|
||
sdl_width = 150
|
||
sdl_height = 39
|
||
|
||
# set label on bars on the x-axis. Can be 'frequency' or 'none'. Default: 'none'
|
||
# 'frequency' displays the lower cut off frequency of the bar above.
|
||
# Only supported on ncurses and noncurses output.
|
||
|
||
# enable synchronized sync. 1 = on, 0 = off
|
||
# removes flickering in alacritty terminal emulator.
|
||
# defaults to off since the behaviour in other terminal emulators is unknown
|
||
|
||
# Shaders for sdl_glsl, located in $HOME/.config/cava/shaders
|
||
vertex_shader = pass_through.vert
|
||
fragment_shader = bar_spectrum.frag
|
||
|
||
; for glsl output mode, keep rendering even if no audio
|
||
continuous_rendering = 1
|
||
|
||
# disable console blank (screen saver) in tty
|
||
# (Not supported on FreeBSD)
|
||
|
||
# show a flat bar at the bottom of the screen when idle, 1 = on, 0 = off
|
||
|
||
# show waveform instead of frequency spectrum, 1 = on, 0 = off
|
||
|
||
[color]
|
||
|
||
|
||
# Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow.
|
||
# Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires
|
||
# a terminal that can change color definitions such as Gnome-terminal or rxvt.
|
||
# default is to keep current terminal color
|
||
|
||
# SDL and sdl_glsl only support hex code colors, these are the default:
|
||
background = '#282C34'
|
||
|
||
# Gradient mode, only hex defined colors are supported,
|
||
# background must also be defined in hex or remain commented out. 1 = on, 0 = off.
|
||
# You can define as many as 8 different colors. They range from bottom to top of screen
|
||
gradient = 1
|
||
gradient_count = 2
|
||
gradient_color_1 = '#282C34'
|
||
gradient_color_2 = '#45475A'
|
||
|
||
; gradient_color_1 = '#59cc33'
|
||
; gradient_color_2 = '#80cc33'
|
||
gradient_color_3 = '#a6cc33'
|
||
gradient_color_4 = '#cccc33'
|
||
gradient_color_5 = '#cca633'
|
||
gradient_color_6 = '#cc8033'
|
||
gradient_color_7 = '#cc5933'
|
||
gradient_color_8 = '#cc3333'
|
||
|
||
[smoothing]
|
||
|
||
# Percentage value for integral smoothing. Takes values from 0 - 100.
|
||
# Higher values means smoother, but less precise. 0 to disable.
|
||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
||
|
||
# Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable.
|
||
|
||
# Set gravity percentage for "drop off". Higher values means bars will drop faster.
|
||
# Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off".
|
||
# DEPRECATED as of 0.8.0, use noise_reduction instead
|
||
|
||
|
||
# In bar height, bars that would have been lower that this will not be drawn.
|
||
# DEPRECATED as of 0.8.0
|
||
|
||
# Noise reduction, int 0 - 100. default 77
|
||
# the raw visualization is very noisy, this factor adjusts the integral and gravity filters to keep the signal smooth
|
||
# 100 will be very slow and smooth, 0 will be fast but noisy.
|
||
|
||
[eq]
|
||
|
||
# This one is tricky. You can have as much keys as you want.
|
||
# Remember to uncomment more than one key! More keys = more precision.
|
||
# Look at readme.md on github for further explanations and examples.
|
||
```
|
||
|
||
More GLSL examples are available on the [cava GLSL wiki page](https://github.com/Alexays/Waybar/wiki/Module:-Cava:-GLSL).
|
||
|
||
# STYLE
|
||
|
||
- *#cava* Raw frontend widget
|
||
- *#cava.silent* Applied after no sound has been detected for *sleep_timer* seconds
|
||
- *#cava.updated* Applied when a new frame is shown
|
||
- *#cavaGLSL* GLSL frontend widget (used instead of *#cava* when the cava *method* is *sdl_glsl*)
|
||
- *#cavaGLSL.silent* Applied after no sound has been detected for *sleep_timer* seconds
|
||
- *#cavaGLSL.updated* Applied when a new frame is shown
|
||
|
||
# FRONTENDS
|
||
|
||
## RAW
|
||
The raw frontend maps each bar's amplitude to a character from *format-icons*. The final widget text is the concatenation of all characters, optionally separated by *bar_delimiter*. See the EXAMPLES section above for a complete configuration.
|
||
|
||
## GLSL
|
||
The GLSL frontend renders the visualization with OpenGL ES using user-provided shaders. It is selected by setting *method = sdl_glsl* in the cava configuration. See the EXAMPLES section above for a complete configuration.
|