From 9890f6d0f3f80af10b1bd2931431d3dbb99e5622 Mon Sep 17 00:00:00 2001 From: Milan Zamazal Date: Sun, 5 Jun 2022 11:43:04 +0200 Subject: [PATCH] Add README --- README.org | 108 +++++++++++++++++++++++++++++++++++++++++++++++++ screenshot.jpg | Bin 0 -> 43100 bytes 2 files changed, 108 insertions(+) create mode 100644 README.org create mode 100644 screenshot.jpg diff --git a/README.org b/README.org new file mode 100644 index 0000000..0a8d871 --- /dev/null +++ b/README.org @@ -0,0 +1,108 @@ +#+TITLE: pipewire-0 + +pipewire-0 is an [[https://www.gnu.org/software/emacs][Emacs]] interface to [[https://pipewire.org][PipeWire]]. It provides a library +to access some PipeWire functionality and a simple user interface to +handle audio devices. It allows displaying PipeWire devices and +clients, changing volumes and muting and unmuting of PipeWire sinks +and sources and setting default sinks and sources. + +It is an experimental initial version that may be quite buggy. It +works for me but may not work in other environments. Feel free to use +it, fix it, fork it. [[*Contact][Contact me]] if you want to discuss anything. + +* Usage + +** Installation + +pipewire-0 currently requires presence of PipeWire command line tools, +namely [[https://docs.pipewire.org/page_man_pw_cli_1.html][pw-cli]] and [[https://docs.pipewire.org/page_man_pw_metadata_1.html][pw-metadata]]. + +To install pipewire-0, put the *.el files to a site-lisp directory and +add the following line to your Emacs configuration: + + #+begin_src elisp +(require ’pw-ui) + #+end_src + +Or if you use [[https://github.com/radian-software/straight.el][straight.el]], you can install pipewire-0 as follows: + + #+begin_src elisp +(straight-use-package + '(pipewire-0 :type git + :repo "https://git.zamazal.org/pdm/pipewire-0" + :local-repo "pipewire-0")) + #+end_src + +** User interface + +=M-x pipewire= enters a buffer with PipeWire objects: + +#+ATTR_HTML: :alt Emacs PipeWire buffer +[[./screenshot.jpg]] + +Use =C-h m= to display basic help. + +Most of the interactive functions can be used anywhere: + +- =pipewire-increase-volume= +- =pipewire-decrase-volume= +- =pipewire-set-volume= +- =pipewire-toggle-muted= +- =pipewire-set-default= + +They can be bound to multimedia keys: + + #+begin_src elisp +(global-set-key (kbd "") 'pipewire-toggle-muted) +(global-set-key (kbd "") 'pipewire-decrease-volume) +(global-set-key (kbd "") 'pipewire-increase-volume) + #+end_src + +** Configuration + +=M-x customize-group RET pipewire RET= + +** Library + +pipewire-0 consists of the following source files: + +- [[file:pw-lib.el][pw-lib.el]] :: PipeWire library to be used in Elisp programs. +- [[file:pw-access.el][pw-access.el]] :: PipeWire communication interface, not supposed to be + used outside =pw-lib=. +- [[file:pw-ui.el][pw-ui.el]] :: User commands and interface. + +Look into [[file:pw-lib.el][pw-lib.el]] to see what public =pw-lib-*= functions are +available there. For example, the following snippet can be used to +display current volume level of the default audio sink: + + #+begin_src elisp +(let ((object (pw-lib-default-audio-sink))) + (format "%s%s" + (pw-lib-volume object t) + (if (pw-lib-muted-p object) "(M)" ""))) + #+end_src + +* Notes + +PipeWire is currently accessed using [[https://docs.pipewire.org/page_man_pw_cli_1.html][pw-cli]] command line utility. Its +output is apparently undocumented and changes between versions so this +is not a reliable way to communicate with PipeWire. But I don’t know +about anything better currently. Nevertheless, it’s easy to replace +pw-cli with something else in [[file:pw-access.el][pw-access.el]]. + +** Why is it named pipewire-0? + +I wrote pipewire-0 because I couldn’t find any Emacs interface to +PipeWire. I would name it simply pipewire or pipewire-el but I expect +that someone will write a full-fledged PipeWire interface sooner or +later. I’d like to avoid confusion and reserve the plain name for the +future interface, while having the basic above zero, pipewire-0, +support for now. + +* Contact + +pipewire-0 is available at [[https://git.zamazal.org/pdm/pipewire-0][git.zamazal.org]]. You can file issues +there. + +If you don’t want to discuss things publicly or to bother registering +at yet another web site, you can reach me at [[mailto:pdm@zamazal.org][pdm@zamazal.org]]. diff --git a/screenshot.jpg b/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f44e185a16f7e6caff3fc5a8fb64431af752f83f GIT binary patch literal 43100 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 literal 0 HcmV?d00001