From 0742419fd612e4d68eb8b6b381496f253c516258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20La=C3=ADn?= Date: Sun, 31 Aug 2025 18:02:50 +0200 Subject: [PATCH] feat(audio-mixer): wiremix added This audio-mixer works as a TUI instead of Pavucontrol which is a GUI --- .config/wiremix/.github/README.md | 3 + .config/wiremix/.github/title.png | Bin 0 -> 31232 bytes .config/wiremix/wiremix.toml | 479 ++++++++++++++++++++++++++++++ 3 files changed, 482 insertions(+) create mode 100644 .config/wiremix/.github/README.md create mode 100644 .config/wiremix/.github/title.png create mode 100644 .config/wiremix/wiremix.toml diff --git a/.config/wiremix/.github/README.md b/.config/wiremix/.github/README.md new file mode 100644 index 00000000..affa9d51 --- /dev/null +++ b/.config/wiremix/.github/README.md @@ -0,0 +1,3 @@ +
+ +
diff --git a/.config/wiremix/.github/title.png b/.config/wiremix/.github/title.png new file mode 100644 index 0000000000000000000000000000000000000000..93f574ac5027dc127e8c810abbd072e20350cc55 GIT binary patch literal 31232 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 bgse7#R!Kcg!v>t}3?nD4ELA394F3NBmb9ZA literal 0 HcmV?d00001 diff --git a/.config/wiremix/wiremix.toml b/.config/wiremix/wiremix.toml new file mode 100644 index 00000000..332d22e0 --- /dev/null +++ b/.config/wiremix/wiremix.toml @@ -0,0 +1,479 @@ +# This file documents wiremix's configuration file. It is also itself a wiremix +# configuration file in which wiremix's default configuration is specified. +# +# It is recommended to start with an empty configuration file and to use this +# file only as a reference. Anything specified in the configuration file will +# be merged with wiremix's defaults. + + +# Main Options + +# PipeWire remote to connect to +#remote = "pipewire-0" + +# Limit rendering frames per second (unlimited if unset) +#fps = 60.0 # + +# Enable mouse support +mouse = true + +# Peak meter mode +# "off" - not meters +# "mono" - all mono meters +# "auto" - left/right meters for stereo streams, otherwise mono +peaks = "auto" + +# Character set to use (see Character Sets section) +char_set = "default" + +# Theme to use (see Themes section) +theme = "default" + +# Initial tab +tab = "playback" + +# Maximum percentage for volume sliders +max_volume_percent = 150.0 + +# Whether to prevent increasing volume past max_volume +enforce_max_volume = false + + +# Keybindings +# +# A keybinding consists of a key, modifiers, and a UI action to be performed. +# +# Keybindings you define in your configuration will be merged with the default +# keybindings (listed below for reference). You can effectively delete a +# default keybinding by setting its action to "Nothing". +# +# A keybinding key can be one of: +# 1. A character: { Char = "x" } # for the 'x' key +# 2. An F-key: { F = 1 } # for F1 +# 3. A media key: { Media = "MediaKeyCode" } +# where MediaKeyCode is one of: +# Play Pause PlayPause Reverse Stop FastForward Rewind TrackNext +# TrackPrevious Record LowerVolume RaiseVolume MuteVolume +# 4. A special key: "SpecialKey" +# where SpecialKey is one of: +# Backspace Enter Left Right Up Down Home End PageUp PageDown Tab BackTab +# Delete Insert Null Esc CapsLock ScrollLock NumLock PrintScreen Pause +# Menu KeypadBegin +# +# A keybinding modifier can be one or more of SHIFT CONTROL ALT SUPER HYPER +# META NONE combined with |. It defaults to NONE if omitted. +# +# For example: +# +# keybindings = [ +# # Demonstrate modifiers +# { key = "End", modifier = "CTRL | ALT", action = "Exit" }, +# ] +# +# Each of the available keybinding actions are documented below. +keybindings = [ + # Exit the program + { key = { Char = "q" }, action = "Exit" }, + # Toggle mute for the selected item + { key = { Char = "m" }, action = "ToggleMute" }, + # Make the selected item in Input/Output Devices the default endpoint + { key = { Char = "d" }, action = "SetDefault" }, + # Increase the volume of the selected item by 1% + { key = { Char = "l" }, action = { SetRelativeVolume = 0.01 } }, + { key = "Right", action = { SetRelativeVolume = 0.01 } }, + # Decrease the volume of the selected item by 1% + { key = { Char = "h" }, action = { SetRelativeVolume = -0.01 } }, + { key = "Left", action = { SetRelativeVolume = -0.01 } }, + # Open a dropdown for the selected item or chose an item in the dropdown + { key = { Char = "c" }, action = "ActivateDropdown" }, + { key = "Enter", action = "ActivateDropdown" }, + # Close an open dropdown + { key = "Esc", action = "CloseDropdown" }, + # Select the next item + { key = { Char = "j" }, action = "MoveDown" }, + { key = "Down", action = "MoveDown" }, + # Select the previous item + { key = { Char = "k" }, action = "MoveUp" }, + { key = "Up", action = "MoveUp" }, + # Select the next tab + { key = { Char = "L" }, action = "TabRight" }, + { key = "Tab", action = "TabRight" }, + # Select the previous tab + { key = { Char = "H" }, action = "TabLeft" }, + { key = "BackTab", modifiers = "SHIFT", action = "TabLeft" }, + # Set the volume of the selected item in 10% increments from 0% to 100% + { key = { Char = "`" }, action = { SetAbsoluteVolume = 0.00 } }, + { key = { Char = "1" }, action = { SetAbsoluteVolume = 0.10 } }, + { key = { Char = "2" }, action = { SetAbsoluteVolume = 0.20 } }, + { key = { Char = "3" }, action = { SetAbsoluteVolume = 0.30 } }, + { key = { Char = "4" }, action = { SetAbsoluteVolume = 0.40 } }, + { key = { Char = "5" }, action = { SetAbsoluteVolume = 0.50 } }, + { key = { Char = "6" }, action = { SetAbsoluteVolume = 0.60 } }, + { key = { Char = "7" }, action = { SetAbsoluteVolume = 0.70 } }, + { key = { Char = "8" }, action = { SetAbsoluteVolume = 0.80 } }, + { key = { Char = "9" }, action = { SetAbsoluteVolume = 0.90 } }, + { key = { Char = "0" }, action = { SetAbsoluteVolume = 1.00 } }, + # Open the help menu + { key = { Char = "?" }, action = "Help" }, + # There are two actions which don't have default bindings: + # 1. "Nothing": Do nothing - can effectively delete a default keybinding + # 2. { SelectTab = N }: Open the Nth tab +] + + +# Names +# +# You can customize how streams, endpoints, and devices are named in the user +# interface using a template system to generate names based on PipeWire +# properties. +# +# Name templates are composed of property tags enclosed in { } and literal +# text. For example: +# +# "Application {client:application.name} playing {node:media.name}" +# +# wiremix will replace the property tags with the properties from the PipeWire +# object being displayed. +# +# The first part of a tag specifies the object type - device, node, or client, +# and the second part specifies the property. +# +# You can use pw-dump(1) to inspect the available properties. +# +# Literal curly braces can be escaped by doubling them: {{ become { and }} +# becomes }. +# +# Streams can have linked clients, so node and client properties are valid for +# stream. Similarly, endpoint can use either node or device properties. Only +# device properties are valid for device. +# + +# Each option in names is an array - if a tempalte can't be resolved because it +# uses a property which doesn't exit on a given object, wiremix tries the next +# template in the sequence. If none of them can be resolved, it falls back on +# node.name for nodes or device.name for devices. +# +# The overall order of precedence for name resolution is: +# 1. Matching override templates, if any (see the Name Overrides section) +# 2. Configured templates for the object type +# 3. Fall back to the object's name property +[names] +# Streams in the Playback/Recording tabs +stream = ["{node:node.name}: {node:media.name}"] +# Endpoints in the Input/Output Devices tabs +endpoint = ["{device:device.nick}", "{node:node.description}"] +# Devices in the Configuration tab +device = ["{device:device.nick}", "{device:device.description}"] + + +# Name Overrides +# +# Name overrides define alternate templates that will be used for objects +# matching a given criterion. +# +# An override is matched by type, which contains a list of one or more of +# stream, endpoint, or device (see the Name section for more details), and a +# property value. Any node or device property that can be used in the names +# section can be used to match an override. +# +# There are no default overrides, but here is an example. This causes all +# streams whose node.name is "spotify" to use just "{node:node.name}" as its +# name. +# +# [[names.overrides]] +# # Which object types this override applies to +# types = [ "stream" ] +# # The property to match +# property = "node:node.name" +# # The value to match +# value = "spotify" +# # Templates to use when the property value matches +# templates = [ "{node:node.name}" ] +# +# You can have multiple name overrides, each in its own [[names.overrides]] +# section. + + +# Themes +# +# Themes determine the styling of user interface elements. +# +# Theme styles are based on ratatui's Style struct. +# https://docs.rs/ratatui/latest/ratatui/style/struct.Style.html +# +# Each style can have an fg color, a bg color, and modifiers. Any property not +# specified will inherit from the default style for your terminal. +# +# fg and bg can be an RGB hex value in the form "#RRGGBB" or named ANSI colors: +# Black Red Green Yellow Blue Magenta Cyan Gray DarkGray LightRed LightGreen +# LightYellow LightBlue LightMagenta LightCyan White +# +# add_modifier can be one or more of BOLD DIM ITALIC UNDERLINED SLOW_BLINK +# RAPID_BLINK REVERSED HIDDEN CROSSED_OUT combined with |. +# +# For example: +# +# # Red foreground on a black background with bold, underlined text +# { fg = "#FF0000", bg = "Black", add_modifier = "BOLD | UNDERLINE" } +# +# An empty style with no properties ({ }) corresponds to the default style. +# +# You can modify built-in themes. Anything you don't specify will remain +# unchanged. For example: +# +# # Modify the "default" theme to make the selection indicator blink. +# [themes.default] +# selector = { fg = "LightCyan", add_modifier = "SLOW_BLINK" } +# +# And you can create a new theme that inherits unspecified styles from a +# built-in theme. For example: +# +# # Create a new theme called "my_custom_theme" based on "nocolor" +# [themes.my_custom_theme] +# inherit = "nocolor" +# tab_selected = { fg = "LightCyan", add_modifier = "SLOW_BLINK" } +# +# The "inherit" option is optional. If not present, the new theme will inherit +# from the "default" theme. +# +# The following is the default theme with each themeable property described. +[themes.default] +# The symbol marking the default device on the Input/Output Devices tabs +default_device = {} +# The symbol marking the default endpoint on the Playback/Recording tabs +default_stream = {} +# The selection indicator in a tab +selector = { fg = "#b7bdf8" } +# The name of a tab in the tab menu +tab = {} +# The name of the selected tab in the tab menu +tab_selected = { fg = "#8aadf4" } +# The symbols surrounding the selected tab in the tab menu +tab_marker = { fg = "#8aadf4" } +# The symbol at the top/bottom of a tab indicating that there are more items +list_more = { fg = "DarkGray" } +# The name of a PipeWire node +node_title = {} +# The name of the selected target for a node +node_target = {} +# The volume percentage label +volume = {} +# Volume bar +volume_empty = { fg = "DarkGray" } +volume_filled = { fg = "#8aadf4" } +# Peak meter. Inactive = unlit, active = lit, overload = greater than 0.0 dB +meter_inactive = { fg = "DarkGray" } +meter_active = { fg = "#a6da95" } +meter_overload = { fg = "#ed8796" } +# The "live" indicator in the center of the meter +meter_center_inactive = { fg = "DarkGray" } +meter_center_active = { fg = "#a6da95" } +# The name of a device in the Configuration tab +config_device = {} +# The name of the selected profile in the Configuration tab +config_profile = {} +# Dropdown marker next to the profiles in the Conifguration tab +dropdown_icon = {} +# Border around dropdowns +dropdown_border = {} +# The name of an item in a dropdown +dropdown_item = {} +# The name of the currently-selected item in a dropdown +dropdown_selected = { fg = "#8aadf4", add_modifier = "REVERSED" } +# The symbol at the top/bottom of a dropdown indicating that there are more items +dropdown_more = { fg = "DarkGray" } +# Border around help menu +help_border = {} +# The name of an item in a the help menu +help_item = {} +# The symbol at the top/bottom of the help menu indicating that there are more items +help_more = { fg = "DarkGray" } + + +# Character Sets +# +# Character sets define the symbols used in the user interface. +# +# You can modify built-in characters sets. Anything you don't specify will +# remain unchanged. For example: +# +# # Modify the "default" character set to use parentheses around the selected +# # tab name +# [char_sets.default] +# tab_marker_left = "(" +# tab_marker_right = ")" +# +# And you can create a new character set that inherits unspecified symbols from +# a built-in character set. For example: +# +# # Create a new character set called "my_custom_char_set" based on "compat" +# [char_sets.my_custom_char_set] +# inherit = "compat" # Inherit from "compat" (omit to inherit from "default") +# tab_marker_left = "(" +# tab_marker_right = ")" +# +# The following is the default character set which the options described. +[char_sets.default] +# Marks the default device on the Input/Output Devices tabs +default_device = "◇" +# Marks the default endpoint on the Playback/Recording tabs +default_stream = "◇" +# The selection indicator in a tab +selector_top = "░" +selector_middle = "▒" +selector_bottom = "░" +# Surround the selected tab in the tab menu +tab_marker_left = "[" +tab_marker_right = "]" +# Displayed at the top/bottom of a tab when there are more items +list_more = "•••" +# Volume bar +volume_empty = "╌" +volume_filled = "━" +# Peak meter. Inactive = unlit, active = lit, overload = greater than 0.0 dB +# Mono meters use only the right side characters +meter_left_inactive = "▮" +meter_left_active = "▮" +meter_left_overload = "▮" +meter_right_inactive = "▮" +meter_right_active = "▮" +meter_right_overload = "▮" +# The "live" indicator in the center of the meter +# Mono meters use only the right side +meter_center_left_inactive = "▮" +meter_center_left_active = "▮" +meter_center_right_inactive = "▮" +meter_center_right_active = "▮" +# Dropdown marker next to the profiles in the Configuration tab +dropdown_icon = "▼" +# Indicates the selected item in a dropdown +dropdown_selector = ">" +# Displayed at the top/bottom of a dropdown when there are more items +dropdown_more = "•••" +# Border around dropdowns +# One of "Plain", "Rounded", "Double", "Thick", "QuadrantInside", "QuadrantOutside" +dropdown_border = "Rounded" +# Displayed at the top/bottom of the help menu when there are more items +help_more = "•••" +# Border around help menu +# One of "Plain", "Rounded", "Double", "Thick", "QuadrantInside", "QuadrantOutside" +help_border = "Rounded" + + +# Appendix A +# +# The other built-in themes and character sets are defined for reference here. + +[themes.nocolor] +default_device = {} +default_stream = {} +selector = { add_modifier = "BOLD" } +tab = {} +tab_selected = { add_modifier = "BOLD" } +tab_marker = { add_modifier = "BOLD" } +list_more = {} +node_title = {} +node_target = {} +volume = {} +volume_empty = { add_modifier = "DIM" } +volume_filled = { add_modifier = "BOLD" } +meter_inactive = { add_modifier = "DIM" } +meter_active = { add_modifier = "BOLD" } +meter_overload = { add_modifier = "BOLD" } +meter_center_inactive = { add_modifier = "DIM" } +meter_center_active = { add_modifier = "BOLD" } +config_device = {} +config_profile = {} +dropdown_icon = {} +dropdown_border = {} +dropdown_item = {} +dropdown_selected = { add_modifier = "BOLD | REVERSED" } +dropdown_more = {} +help_border = {} +help_item = {} +help_more = {} + +[themes.plain] +default_device = {} +default_stream = {} +selector = {} +tab = {} +tab_selected = {} +tab_marker = {} +list_more = {} +node_title = {} +node_target = {} +volume = {} +volume_empty = {} +volume_filled = {} +meter_inactive = {} +meter_active = {} +meter_overload = {} +meter_center_inactive = {} +meter_center_active = {} +config_device = {} +config_profile = {} +dropdown_icon = {} +dropdown_border = {} +dropdown_item = {} +dropdown_selected = {} +dropdown_more = {} +help_border = {} +help_item = {} +help_more = {} + +[char_sets.compat] +default_device = "◊" +default_stream = "◊" +selector_top = "░" +selector_middle = "▒" +selector_bottom = "░" +tab_marker_left = "[" +tab_marker_right = "]" +list_more = "•••" +volume_empty = "─" +volume_filled = "━" +meter_left_inactive = "┃" +meter_left_active = "┃" +meter_left_overload = "┃" +meter_right_inactive = "┃" +meter_right_active = "┃" +meter_right_overload = "┃" +meter_center_left_inactive = "█" +meter_center_left_active = "█" +meter_center_right_inactive = "█" +meter_center_right_active = "█" +dropdown_icon = "▼" +dropdown_selector = ">" +dropdown_more = "•••" +dropdown_border = "Plain" +help_more = "•••" +help_border = "Plain" + +[char_sets.extracompat] +default_device = "*" +default_stream = "*" +selector_top = "-" +selector_middle = "=" +selector_bottom = "-" +tab_marker_left = "[" +tab_marker_right = "]" +list_more = "~~~" +volume_empty = "-" +volume_filled = "=" +meter_left_inactive = "=" +meter_left_active = "#" +meter_left_overload = "!" +meter_right_inactive = "=" +meter_right_active = "#" +meter_right_overload = "!" +meter_center_left_inactive = "[" +meter_center_left_active = "[" +meter_center_right_inactive = "]" +meter_center_right_active = "]" +dropdown_icon = "\\" +dropdown_selector = ">" +dropdown_more = "~~~" +dropdown_border = "Plain" +help_more = "~~~" +help_border = "Plain"