{ "info": { "author": "George Filipkin", "author_email": "botebotebot@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Environment :: Console :: Curses", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Multimedia :: Sound/Audio :: Mixers", "Topic :: Utilities" ], "description": "# pulsemixer\nCLI and curses mixer for PulseAudio\n\n#### Requirements\n- `Python` >= 3.3\n- `PulseAudio` >= 1.0\n\n## Installation\n\nPulsemixer is a self-sufficient single-file python app that doesn't require any extra libraries. You can simply download [pulsemixer](https://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/master/pulsemixer) manually, do `chmod +x ./pulsemixer` and put it anywhere you want.\n\nBelow are some more convenient ways to install pulsemixer:\n\n##### curl\n\n```sh\ncurl https://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/master/pulsemixer > pulsemixer && chmod +x ./pulsemixer\n```\n\n##### pip\n\n```\npip install pulsemixer\n```\n\n## Interactive mode\nInteractive mode is used if no arguments are given (except `--color` and `--server`)\n\n![Image of 1](https://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/img/1.png)\n![Image of 2](https://raw.githubusercontent.com/GeorgeFilipkin/pulsemixer/img/2.png)\n\nInteractive controls:\n```\n j k \u2191 \u2193 Navigation\n h l \u2190 \u2192 Change volume\n H L Shift\u2190 Shift\u2192 Change volume by 10\n 1 2 3 .. 8 9 0 Set volume to 10%-100%\n m Mute/Unmute\n Space Lock/Unlock channels\n Enter Context menu\n F1 F2 F3 Change modes\n Tab Shift Tab Next/Previous mode\n Mouse click Select device or mode\n Mouse wheel Volume change\n Esc q Quit\n```\n\nVia context menu it is possible to `set-default-sink`, `set-default-source`, `move-sink-input`, `move-source-output`, `suspend-sink`, `suspend-source`, `set-sink-port`, `set-source-port`, `kill-client`, `kill-sink-input`, `kill-source-output`, `set-card-profile`. See `man pactl` for details on these features.\n\n## CLI\n```\nUsage of pulsemixer:\n -h, --help show this help message and exit\n -v, --version print version\n -l, --list list everything\n --list-sources list sources\n --list-sinks list sinks\n --id ID specify ID, default sink is used if no ID specified\n --get-volume get volume for ID\n --set-volume n set volume for ID\n --set-volume-all n:n set volume for ID, for every channel\n --change-volume +-n change volume for ID\n --max-volume n set volume to n if volume is higher than n\n --get-mute get mute for ID\n --mute mute ID\n --unmute unmute ID\n --toggle-mute toggle mute for ID\n --server choose the server to connect to\n --color n 0 no color, 1 color currently selected, 2 full-color\n --no-mouse disable mouse support\n --create-config generate configuration file\n```\n\n#### CLI examples\nPulsemixer follows PulseAudio's terminology:\n* Sink - an output device.\n* Source - an input device.\n* Sink input - a stream that is connected to an output device, i.e. an input for a sink.\n* Source output - a stream that is connected to an input device, i.e. an output of a source.\n\n```sh\n$ pulsemixer --list\nSink: ID: sink-1, Name: Built-in Stereo, Mute: 0, Channels: 2, Volumes: ['60%', '60%'], Default\nSink: ID: sink-3, Name: HDMI Audio (HDMI 2), Mute: 0, Channels: 2, Volumes: ['50%', '50%']\nSink input: ID: sink-input-663, Name: Firefox, Mute: 0, Channels: 2, Volumes: ['60%', '60%']\nSink input: ID: sink-input-686, Name: mocp, Mute: 0, Channels: 2, Volumes: ['60%', '60%']\nSource: ID: source-1, Name: HDMI Audio (HDMI 2), Mute: 0, Channels: 2, Volumes: ['100%', '100%']\nSource: ID: source-2, Name: Built-in Stereo, Mute: 0, Channels: 2, Volumes: ['40%', '40%'], Default\nSource output: ID: source-output-7, Name: arecord, Mute: 0, Channels: 1, Volumes: ['40%]\n```\n\nPrint volume of the default sink, decrease by 5, print new volume:\n```sh\n$ pulsemixer --get-volume --change-volume -5 --get-volume\n60 60\n55 55\n```\n\nToggle mute of `source-1`, print mute status:\n```sh\n$ pulsemixer --id source-1 --toggle-mute --get-mute\n1\n```\n\nSet volume of `sink-input-663` to 50, then set volume of `sink-3` to 10 (left channel) and 30 (right channel):\n```sh\n$ pulsemixer --id sink-input-663 --set-volume 50 --id sink-3 --set-volume-all 10:30\n```\n\nIncrease volume of `sink-input-686` by 10 but don't get past 100:\n```sh\n$ pulsemixer --id sink-input-686 --change-volume +10 --max-volume 100\n```\n\n## Configuration\nOptional. \nThe config file will not be created automatically. Do `pulsemixer --create-config` or copy-paste it from here.\n\n```ini\n;; Goes into ~/.config/pulsemixer.cfg, $XDG_CONFIG_HOME respected\n;; Everything that starts with \"#\" or \";\" is a comment\n;; For the option to take effect simply uncomment it\n\n[general]\nstep = 1\nstep-big = 10\n; server = \n\n[keys]\n;; To bind \"special keys\" such as arrows see \"Key constant\" table in\n;; https://docs.python.org/3/library/curses.html#constants\n; up = k, KEY_UP, KEY_PPAGE\n; down = j, KEY_DOWN, KEY_NPAGE\n; left = h, KEY_LEFT\n; right = l, KEY_RIGHT\n; left-big = H, KEY_SLEFT\n; right-big = L, KEY_SRIGHT\n; top = g, KEY_HOME\n; bottom = G, KEY_END\n; mode1 = KEY_F1\n; mode2 = KEY_F2\n; mode3 = KEY_F3\n; next-mode = KEY_TAB\n; prev-mode = KEY_BTAB\n; mute = m\n; lock = ' ' ; 'space', quotes are stripped\n; quit = q, KEY_ESC\n\n[ui]\n; hide-unavailable-profiles = no\n; hide-unavailable-ports = no\n; color = 2 ; same as --color, 0 no color, 1 color currently selected, 2 full-color\n; mouse = yes\n\n[style]\n;; Pulsemixer will use these characters to draw interface\n;; Single characters only\n; bar-top-left = \u250c\n; bar-left-mono = \u2576\n; bar-top-right = \u2510\n; bar-right-mono = \u2574\n; bar-bottom-left = \u2514\n; bar-bottom-right = \u2518\n; bar-on = \u25ae\n; bar-off = -\n; arrow = ' '\n; arrow-focused = \u2500\n; arrow-locked = \u2500\n; default-stream = *\n; info-locked = L\n; info-unlocked = U\n; info-muted = M ; \ud83d\udd07\n; info-unmuted = M ; \ud83d\udd09\n\n[renames]\n;; Changes stream names in interactive mode, regular expression are supported\n;; https://docs.python.org/3/library/re.html#regular-expression-syntax\n; 'default name example' = 'new name'\n; '(?i)built-in .* audio' = 'Audio Controller'\n; 'AudioIPC Server' = 'Firefox'\n```\n\nThe old environment variable `PULSEMIXER_BAR_STYLE` is still supported. \nTo change the volume bar's appearance in (e.g.) zsh without creating the config file:\n```bash\nexport PULSEMIXER_BAR_STYLE=\"\u256d\u2576\u256e\u2574\u2570\u256f\u25c6\u00b7 \u2500\u2500\"\n```\n\n## See also\n\n[python-pulse-control](https://github.com/mk-fg/python-pulse-control) - Python high-level interface and ctypes-based bindings for PulseAudio.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/GeorgeFilipkin/pulsemixer", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pulsemixer", "package_url": "https://pypi.org/project/pulsemixer/", "platform": "", "project_url": "https://pypi.org/project/pulsemixer/", "project_urls": { "Homepage": "https://github.com/GeorgeFilipkin/pulsemixer" }, "release_url": "https://pypi.org/project/pulsemixer/1.5.0/", "requires_dist": null, "requires_python": "", "summary": "pulsemixer - CLI and curses mixer for PulseAudio", "version": "1.5.0" }, "last_serial": 5348749, "releases": { "1.4.0": [ { "comment_text": "", "digests": { "md5": "69f572047caf43df3a08a98cdf3fd686", "sha256": "ca5e4972432440b904bc93355c13c89e586f352b0f65a785d4a1db6914036335" }, "downloads": -1, "filename": "pulsemixer-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "69f572047caf43df3a08a98cdf3fd686", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17284, "upload_time": "2018-10-14T10:10:00", "url": "https://files.pythonhosted.org/packages/cc/94/6e0cf1f15a278718613d3ae155f2225c7afbbfc64c6f49206e295e656140/pulsemixer-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23072bad752d0ca3a2413725b1b21d8b", "sha256": "8c5d2269ff2c50c1cad9b9d74ffcf1e9680a8e89ebbc7fb44ea9928e4393a8b0" }, "downloads": -1, "filename": "pulsemixer-1.4.0.tar.gz", "has_sig": false, "md5_digest": "23072bad752d0ca3a2413725b1b21d8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16065, "upload_time": "2018-10-14T10:10:01", "url": "https://files.pythonhosted.org/packages/41/91/76165d68a1fdcd3a3cdf15e0907b7d2d24188eb03aa80b0d2d62b19c15af/pulsemixer-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "64bed2d9eb0268b09f69935606d31f01", "sha256": "df838032cd93b621835fc78df1162c23ed471b7d9c6cba9ebabd62f87f671c94" }, "downloads": -1, "filename": "pulsemixer-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64bed2d9eb0268b09f69935606d31f01", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21920, "upload_time": "2019-06-02T13:15:00", "url": "https://files.pythonhosted.org/packages/d8/f4/0e664e0a7cf52c603684678a63d5cdca2387a61b7e460156c724e71168a6/pulsemixer-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1fd495d5401d84c1d03632ed11c71c3", "sha256": "0ecd51eaa34c05e1e81fb9f3daf45891b61cb0528b6045a7e936a16851df9f5b" }, "downloads": -1, "filename": "pulsemixer-1.5.0.tar.gz", "has_sig": false, "md5_digest": "c1fd495d5401d84c1d03632ed11c71c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20164, "upload_time": "2019-06-02T13:15:02", "url": "https://files.pythonhosted.org/packages/1b/ab/48ed640a19f532cb411403e7df7239969429a7a5a17e6cac78534a0ec1be/pulsemixer-1.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "64bed2d9eb0268b09f69935606d31f01", "sha256": "df838032cd93b621835fc78df1162c23ed471b7d9c6cba9ebabd62f87f671c94" }, "downloads": -1, "filename": "pulsemixer-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64bed2d9eb0268b09f69935606d31f01", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21920, "upload_time": "2019-06-02T13:15:00", "url": "https://files.pythonhosted.org/packages/d8/f4/0e664e0a7cf52c603684678a63d5cdca2387a61b7e460156c724e71168a6/pulsemixer-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1fd495d5401d84c1d03632ed11c71c3", "sha256": "0ecd51eaa34c05e1e81fb9f3daf45891b61cb0528b6045a7e936a16851df9f5b" }, "downloads": -1, "filename": "pulsemixer-1.5.0.tar.gz", "has_sig": false, "md5_digest": "c1fd495d5401d84c1d03632ed11c71c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20164, "upload_time": "2019-06-02T13:15:02", "url": "https://files.pythonhosted.org/packages/1b/ab/48ed640a19f532cb411403e7df7239969429a7a5a17e6cac78534a0ec1be/pulsemixer-1.5.0.tar.gz" } ] }