Minimalistic volume mixer.

Overview

Mixxc

Crates.io License: MIT

Mixxc is a minimalistic and customizable volume mixer, created to seamlessly complement desktop widgets.   Currently, it supports only pulseaudio and pipewire (through the pulseaudio interface) by utilizing libpulseaudio to receive audio events.

Preview

Usage

Usage: mixxc [-w <width>] [-h <height>] [-s <spacing>] [-a <anchor...>] [-m <margin...>] [-u <userstyle>] [-v]

Minimalistic volume mixer.

Options:
  -w, --width       window height
  -h, --height      window width
  -s, --spacing     spacing between clients
  -a, --anchor      screen anchor point: (t)op, (b)ottom, (l)eft, (r)ight
  -m, --margin      margin distance for each anchor point
  -u, --userstyle   path to the userstyle
  -v, --version     print version
  --help            display usage information

Anchoring

It is often desirable to be able to position widgets relatively to a screen side.
Two flags will help with this: -a --anchor and -m --margin.
Each margin value provided will match every anchor point respectively.  

mixxc --anchor left --anchor bottom --margin 20 --margin 30

Customization

Mixxc is built with GTK4 and uses CSS to define its appearance.
You will find the style sheet in your config directory after the first launch.

${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.css

If you have enabled the Sass feature, it will also look for *.scss and *.sass files.

${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.sass
${XDG_CONFIG_HOME:-$HOME/.config}/mixxc/style.scss

Environment

Mixxc is developed and tested with:

  • Wayland
  • Hyprland
  • PipeWire

If your setup is different and you experience issues, feel free to file a bug report.

Startup Time

If startup seems a bit slow, try this:

GSK_RENDERER=cairo GTK_USE_PORTAL=0 mixxc

Dependencies

Features

Some features can be enabled at compile time.

  • Sass - Allows you to use SCSS instead of CSS.
  • Wayland - Uses wlr-layer-shell to imitate window positioning.
  • X11 - Sets WM hints and properties, and repositions the window.

Installation

Can be installed from crates.io with cargo:

cargo install mixxc --locked --features Sass,Wayland...

Building

To build this little thing, you'll need some Rust.

git clone --depth 1 https://github.com/Elvyria/mixxc
cd mixxc
cargo build --locked --release --features Sass,Wayland...
You might also like...
Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

Diamond is a minimalistic, powerful, and modern Javascript runtime that uses Deno_Core.

Diamond Diamond is a minimalistic, powerful, and modern Javascript runtime that uses Deno_Core. Installation Diamond is currently in beta(not even Alp

A minimalistic encryption protocol for rust async streams/packets, based on noise protocol and snow.

Snowstorm A minimalistic encryption protocol for rust async streams / packets, based on noise protocol and snow. Quickstart Snowstorm allows you to se

Talk with your machine in this minimalistic Rust crate!

Speak Speak is a simple, easy to use Natural Language Processor (NLP) written in Rust. Why use Speak? Speak uses a custom engine, and to setup you jus

A minimalistic implementation of Refal.

Refal A minimalistic implementation of Refal. It is based on the following (in Russian) papers by Sergei Romanenko: С.А.Романенко. Машинно-независимый

Minimalistic solana minter program if you don't want to use Metaplex

Minimalistic solana minter program The objective of this repository is to be only a minimalistic template for NFTs projects on Solana, so you can buil

A simple, single threaded and minimalistic port checker

A simple, single threaded and minimalistic port checker

mico (minimalistic config file format) encoder and decoder

mico This library implements a parser and emitter for mico (minimalistic config file format). Format example: Name: mico Description: minimalistic con

A fast and minimalistic image viewer forked from the now discontinued emulsion.

Alloy Image viewer based on (now-discontinued) Emulsion. Alloy targets Windows, Mac, and Linux (with more targets to come!). A note for Linux users: W

A minimalistic cross-platform malware scanner with non-blocking realtime filesystem monitoring using YARA rules.
A minimalistic cross-platform malware scanner with non-blocking realtime filesystem monitoring using YARA rules.

Sauron is a minimalistic, YARA based malware scanner with realtime filesystem monitoring written in Rust. Features Realtime scan of created and modifi

Minimalistic EVM-compatible chain indexer.

EVM Indexer Minimalistic EVM-compatible blockchain indexer written in rust. This repository contains a program to index helpful information from any E

Minimalistic EVM-compatible chain indexer.

EVM Indexer Minimalistic EVM-compatible blockchain indexer written in rust. This repository contains a program to index helpful information from any E

Minimalistic implementation of entity kinds for Bevy ECS.

Bevy 💖 Kindly This crate is a minimalistic implementation of Kinded Entities for Bevy game engine. In summary, it allows the user to define, construc

Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.
Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.

Ember Ember is a simple and fun 2D rendering library for Rust, allowing you to quickly create graphics and interactive applications with ease. It uses

Minimalistic state machine for Bevy Game Engine.

🎚️ Moonshine Behavior Minimalistic state machine for Bevy game engine. Overview This crates is designed to provide a simple, stack-based, lightweight

ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-text search.
ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-text search.

ReefDB ReefDB is a minimalistic, in-memory and on-disk database management system written in Rust, implementing basic SQL query capabilities and full-

Calc: A fully-featured minimalistic configurable calculator written in Rust
Calc: A fully-featured minimalistic configurable calculator written in Rust

Calc Calc: A fully-featured minimalistic configurable rust calculator Install You can install the latest version from source git clone https://github.

A Minimalistic Rust library to extract all potential function selectors from EVM bytecode without source code.

EVM Hound A Minimalistic Rust library to extract all potential function selectors from EVM bytecode without source code. Installation $ cargo add evm_

A minimalistic blog/portfolio starter written in Rust. No database, bloat or JS.

rlog Rlog is a minimalistic blog/portfolio starter project intended to be used for a personal blog. The project is built using only Rust, HTML and CSS

Comments
  • How to build it with gtk4-layer-shell feature?

    How to build it with gtk4-layer-shell feature?

    Hi, thanks for the interesting project!

    I have issue building it on my Arch, here is what I tried:

    git clone --depth 1 <repo>
    cd mixxc
    
    cargo build --release --features=Sass,Wayland
    

    output:

       Compiling gdk4-sys v0.7.2
       Compiling gsk4-sys v0.7.3
       Compiling gtk4-sys v0.7.3
       Compiling gtk4-layer-shell-sys v0.1.2
    The following warnings were emitted during compilation:
    
    warning: `PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "gtk4-layer-shell-0" "gtk4-layer-shell-0 >= 1"` did not exit successfully: exit status: 1
    
    error: failed to run custom build command for `gtk4-layer-shell-sys v0.1.2`
    
    Caused by:
      process didn't exit successfully: `/tmp/cargo-installBvtVwJ/release/build/gtk4-layer-shell-sys-3911a91337e99d03/build-script-build` (exit status: 1)
      --- stdout
      cargo:rerun-if-env-changed=GTK4_LAYER_SHELL_0_NO_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
      cargo:warning=`PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "gtk4-layer-shell-0" "gtk4-layer-shell-0 >= 1"` did not exit successfully: exit status: 1
      error: could not find system library 'gtk4-layer-shell-0' required by the 'gtk4-layer-shell-sys' crate
    
      --- stderr
      Package gtk4-layer-shell-0 was not found in the pkg-config search path.
      Perhaps you should add the directory containing `gtk4-layer-shell-0.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'gtk4-layer-shell-0', required by 'virtual:world', not found
      Package 'gtk4-layer-shell-0', required by 'virtual:world', not found
    
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `mixxc v0.1.5`, intermediate artifacts can be found at `/tmp/cargo-installBvtVwJ`.
    To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
    
    opened by murlakatamenka 2
Owner
Unclassified Creator
null
Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

null 1.9k Dec 22, 2022
A modern Volume Mixer for PulseAudio.

Myxer A modern Volume Mixer for PulseAudio, built with you in mind. Myxer is a lightweight, powerful Volume Mixer built with modern UI design for a se

Auri Collings 192 Dec 30, 2022
A real-time mixer

Pagana Pagana is a real-time mixer. This project is still in early stages of development and is not ready for any kind of production use or testing. D

null 1 Nov 26, 2021
A mixer for jack-audio using rust and druid UI

A simple mixer to allow me to use my midi controller (Novation LaunchControl XL) on linux and also to explore the new druid ui. Features volume faders

Richard Dodd (dodj) 25 Jul 6, 2022
A trading bot written in Rust based on the orderbook delta volume.

The strategy based on the concept of mean reversion. We look for large deviations in the volume delta of BTC-PERP on FTX at a depth of 1. These deviations could be caused by over-enthusiastic and over-leveraged market participants.

Dinesh Pinto 45 Dec 28, 2022
Persist game settings like music volume or graphic settings in a nice toml file in the right location.

Bevy Settings The goal of this project is to store settings in a resource throughout game launches. Currently this crate supports Linux, Mac and Windo

Tobias Kriebisch 9 Feb 25, 2023
😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust

Zemeroth is a turn-based hexagonal tactical game written in Rust. Support: patreon.com/ozkriff News: @ozkriff on twitter | ozkriff.games | facebook |

Andrey Lesnikóv 1.3k Jan 5, 2023
minimalistic command launcher in rust

rrun Note: Apart from the occasional fix, this project is not actively developed anymore. rrun works fine and should run/compile for the time being on

null 105 Nov 18, 2022
A cross platform minimalistic text user interface

titik Titik is a crossplatform TUI widget library with the goal of being able to interact intuitively on these widgets. It uses crossterm as the under

Jovansonlee Cesar 113 Dec 31, 2022
Minimalistic governance & ledger toolkit for cold wallets

Minimalistic ledger and governance toolkit for cold wallets.

DFINITY 66 Dec 20, 2022