{"id":17113403,"url":"https://github.com/kenjitakahashi/pacmixer","last_synced_at":"2025-04-09T21:52:00.003Z","repository":{"id":4639989,"uuid":"5784850","full_name":"KenjiTakahashi/pacmixer","owner":"KenjiTakahashi","description":"an alsamixer alike for PulseAudio.","archived":false,"fork":false,"pushed_at":"2023-03-30T16:04:49.000Z","size":704,"stargazers_count":118,"open_issues_count":9,"forks_count":7,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-09T21:51:56.000Z","etag":null,"topics":["curses","mixer","ncurses","pulseaudio","tui"],"latest_commit_sha":null,"homepage":"","language":"Objective-C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KenjiTakahashi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"KenjiTakahashi"}},"created_at":"2012-09-12T19:36:18.000Z","updated_at":"2025-01-29T23:58:31.000Z","dependencies_parsed_at":"2022-08-31T18:31:18.052Z","dependency_job_id":"ec85532d-4ad4-49e2-b43e-e99e751f2fdf","html_url":"https://github.com/KenjiTakahashi/pacmixer","commit_stats":{"total_commits":269,"total_committers":4,"mean_commits":67.25,"dds":"0.014869888475836479","last_synced_commit":"700c2fee5907e4dda435377f4ed1bd1227b0ccf9"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KenjiTakahashi%2Fpacmixer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KenjiTakahashi%2Fpacmixer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KenjiTakahashi%2Fpacmixer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KenjiTakahashi%2Fpacmixer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KenjiTakahashi","download_url":"https://codeload.github.com/KenjiTakahashi/pacmixer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248119402,"owners_count":21050754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["curses","mixer","ncurses","pulseaudio","tui"],"created_at":"2024-10-14T17:07:38.971Z","updated_at":"2025-04-09T21:51:59.981Z","avatar_url":"https://github.com/KenjiTakahashi.png","language":"Objective-C++","funding_links":["https://github.com/sponsors/KenjiTakahashi"],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/KenjiTakahashi/pacmixer/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/KenjiTakahashi/pacmixer/actions/workflows/tests.yml)\n\n**pacmixer** is an [alsamixer][alsamixer] alike for PulseAudio.\n\nI started this, because I've found no full-blown, terminal based mixers available for PA. All there are are either [CLI][CLI] or some kinds of GNOME/KDE applets. That's not what I wanted, so in the end I decided to go for it myself.\n\nIt was also a good starting point to finally learn myself some ObjC :).\n\nBack in the old days, there were a good mixer for ALSA (alsamixer), so I thought about taking some of their ideas, mix it with mine, and see what happens.\n\n**Updating past 0.5:** Configuration mechanism has been reworked to be more flexible and integrate better with GNU/Linux environment. It means that:\n\n* Pacmixer configuration is no longer available through settings tab (it is reserved for PA options).\n* Settings are now configured using [configuration file](https://github.com/KenjiTakahashi/pacmixer#configuration).\n* Settings configured with version \u003c= 0.5 will be reset to defaults after update.\n* Settings storage follows XDG =\u003e No more creepy \"GNUStep\" directory.\n\n## screenshot\n![screenshot](http://img.kenji.sx/pacmixer2.png)\n\n## requirements\n* libpulse\n* ncurses\n* gnustep-base\n* gcc-objc (for compilation)\n* ninja (for compilation)\n\n## installation\n```sh\n# ./mk install\n```\n\n## usage\n**Note:** There is also an introductory video available [here](http://www.youtube.com/watch?v=s3qk_Fn1Yeo), thanks to [**@gotbletu**](https://github.com/gotbletu).\n\n**Note:** `man pacmixer` is your friend now as well.\n\n**pacmixer** comes with built-in help, but here's the shortcuts reference, just in case.\n\n```\nh (or Left): Moves to the previous control.\nl (or Right): Moves to the next control.\nk (or Up): Increases the volume standardly.\nK (or Shift+Up): Increases the volume fastly.\nj (or Down): Decreases the volume standardly.\nJ (or Shift+Down): Decreases the volume fastly.\nm: Mutes the volume.\nd: Sets as default.\ni: Enters inside mode.\ns: Enters settings mode.\nq (or Esc): Exits settings/inside mode or exit the application.\nF1-F5 (or 1-5): Switches to All/Playback/Recording/Outputs/Inputs view, respectively.\nF12 (or 0): Switches to Settings view.\n```\n\n#### settings view\nUsed to change card wise settings (e.g. profiles).\n\n```\nh (or Left): Moves to the previous group of settings.\nl (or Right): Moves to the next group of settings.\nk (or Up): Moves to the previous setting within group.\nj (or Down): Moves to the next setting within group.\nspace: (Un)checks highlighted setting.\nq (or Esc): Exits the application.\n```\n\n#### inside mode\nUsed to adjust specific channel's volume.\n\nAll shortcuts (besides `q`) work the same, except that they affect single channel instead of the whole sink/source.\n\n#### settings mode\nUsed to change controls settings (e.g. ports).\n\nShortcuts work like in outside mode, except that:\n\n* `space` is used to check setting.\n* `h` and `l` iterate only over controls which actually have settings.\n\n## configuration\nPacmixer uses [toml](https://github.com/toml-lang/toml) based configuration file stored in either `$XDG_CONFIG_HOME/pacmixer/settings.toml` or `$HOME/.config/pacmixer/settings.toml`.\n\nWhen run for the first time, it will create a new file with all configuration options set to their defaults. You can use this file as a basis and/or checkout the reference below.\n\n**[Display]**\n\n`StartScreen` (string) - Sets which screen should be visible when starting pacmixer. Available values are \"All\", \"Playback\", \"Recording\", \"Outputs\", \"Inputs\" and \"Settings\".\n\n**[Control]**\n\n`UpSpeed` (integer) - Sets the speed of the standard volume up command.\n\n`FastUpSpeed` (integer) - Sets the speed of the fast volume up command.\n\n`DownSpeed` (integer) - Sets the speed of the standard volume down command.\n\n`FastDownSpeed` (integer) - Sets the speed of the standard volume down command.\n\n**[Filter]**\n\n`Monitors` (boolean) - Filters out Monitor controls.\n\n`Internals` (boolean) - Filters out PA internal controls.\n\n`Options` (boolean) - Filters out Options part of the controls.\n\n**[Log]**\n\n`Dir` (string) - Directory where log file(s) will be stored. Leave empty string to disable logging.\n\n## something's broken?\n\nPlease include the log file (`$HOME/.local/share/pacmixer/pacmixer.log` by default) with your bug report.\n\nIf it crashes hard (i.e. SEGFAULTS), it might also be useful to compile in debug mode and run through `gdb` to retrieve stacktrace.\n\n```sh\n$ ./mk debug\n$ gdb ./pacmixer\ngdb$ run\ngdb$ bt\n```\n\nThat will make it easier to identify the problem.\n\n## tests\n\nType\n```sh\n$ ./mk tests\n$ ./pacmixer_run_tests\n```\n\n**Note:** It is a [Catch][catch] executable, all [options] apply.\n\n[alsamixer]: http://en.wikipedia.org/wiki/Alsamixer\n[CLI]: http://en.wikipedia.org/wiki/Command-line_interface\n[catch]: https://github.com/philsquared/Catch\n[options]: https://github.com/philsquared/Catch/blob/master/docs/command-line.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenjitakahashi%2Fpacmixer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkenjitakahashi%2Fpacmixer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenjitakahashi%2Fpacmixer/lists"}