tvl-depot/configs/shared/.emacs.d/wpc/pulse-audio.el
William Carroll 77d46eb5e1 Debug failed initialization of keybindings
Some more pains of weening off of Dropbox is that my Emacs initialization is
sensitive to dependencies and missing require statements. I'm still debugging
everything.

Some modules called `exwm-input-set-key` before the `window-manager` module
loaded, which itself requires EXWM. This broke initialization. To get around
this I could've called `(require 'exwm)` in each of those modules. I chose to
define a `keybindings.el` module to whitelist some of my EXWM keybindings. I'm
not sure if this is the best way forward, but it is *some* way forward.
2020-01-18 22:47:11 +00:00

66 lines
2.2 KiB
EmacsLisp

;;; pulse-audio.el --- Control audio with Elisp -*- lexical-binding: t -*-
;; Author: William Carroll <wpcarro@gmail.com>
;;; Commentary:
;; Because everything in my configuration is turning into Elisp these days.
;;; Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Dependencies
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'prelude)
(require 'string)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Constants
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defconst pulse-audio/step-size 5
"The size by which to increase or decrease the volume.")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Library
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun pulse-audio/message (x)
"Output X to *Messages*."
(message (string/format "[pulse-audio.el] %s" x)))
(defun pulse-audio/toggle-mute ()
"Mute the default sink."
(interactive)
(prelude/start-process
:name "pulse-audio/toggle-mute"
:command "pactl set-sink-mute @DEFAULT_SINK@ toggle")
(pulse-audio/message "Mute toggled."))
(defun pulse-audio/toggle-microphone ()
"Mute the default sink."
(interactive)
(prelude/start-process
:name "pulse-audio/toggle-microphone"
:command "pactl set-source-mute @DEFAULT_SOURCE@ toggle")
(pulse-audio/message "Microphone toggled."))
(defun pulse-audio/decrease-volume ()
"Low the volume output of the default sink."
(interactive)
(prelude/start-process
:name "pulse-audio/decrease-volume"
:command (string/format "pactl set-sink-volume @DEFAULT_SINK@ -%s%%"
pulse-audio/step-size))
(pulse-audio/message "Volume decreased."))
(defun pulse-audio/increase-volume ()
"Raise the volume output of the default sink."
(interactive)
(prelude/start-process
:name "pulse-audio/increase-volume"
:command (string/format "pactl set-sink-volume @DEFAULT_SINK@ +%s%%"
pulse-audio/step-size))
(pulse-audio/message "Volume increased."))
(provide 'pulse-audio)
;;; pulse-audio.el ends here