diff options
author | jao <jao@gnu.org> | 2022-01-18 22:43:24 +0000 |
---|---|---|
committer | jao <jao@gnu.org> | 2022-01-18 22:43:24 +0000 |
commit | 425bdb7d43de9224b24e1adc1687adcf19a023c8 (patch) | |
tree | e0a42edb2ae72c255b707f392f2f1f2a7c2749e4 /lib/media | |
parent | 0c4548bfa3450b55c4fb6dc4e263e66299d7e086 (diff) | |
download | elibs-425bdb7d43de9224b24e1adc1687adcf19a023c8.tar.gz elibs-425bdb7d43de9224b24e1adc1687adcf19a023c8.tar.bz2 |
jao-spt: telecommands for spotify-ui
Diffstat (limited to 'lib/media')
-rw-r--r-- | lib/media/jao-spt.el | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/media/jao-spt.el b/lib/media/jao-spt.el new file mode 100644 index 0000000..adafed6 --- /dev/null +++ b/lib/media/jao-spt.el @@ -0,0 +1,77 @@ +;;; jao-spt.el --- Access to the spotify-tui CLI -*- lexical-binding: t; -*- + +;; Copyright (C) 2021, 2022 jao + +;; Author: jao <mail@jao.io> +;; Keywords: multimedia + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Simple spotifyd controls via the spt executable. + +;;; Code: + +(require 'jao-minibuffer) +(require 'jao-notify) + +(defvar jao-spt-bin (expand-file-name "~/bin/spt")) + +(defun jao-spt--exec (&rest args) + (let ((display-buffer-alist `((".*spt commands.*" display-buffer-no-window))) + (buff (get-buffer-create "* spt commands *"))) + (apply #'start-process "spt" buff jao-spt-bin args))) + +(defvar jao-spt--status-str "") + +;;;###autoload +(defun jao-spt-play-uri (uri) + (jao-spt--exec "play" "--uri" uri)) + +;;;###autoload +(defun jao-spt-update-status () + (interactive) + (let ((st (string-trim (shell-command-to-string (format "%s pb" jao-spt-bin))))) + (setq jao-spt--status-str (when (string-prefix-p "▶" st) st)) + (jao-minibuffer-refresh) + st)) + +;;;###autoload +(defun jao-spt-toggle () + (interactive) + (jao-spt--exec "pb" "-t")) + +;;;###autoload +(defun jao-spt-next () + (interactive) + (jao-spt--exec "pb" "-n")) + +;;;###autoload +(defun jao-spt-previous () + (interactive) + (jao-spt--exec "pb" "-p")) + +;;;###autoload +(defun jao-spt-echo-current () + (interactive) + (let ((jao-notify-use-messages-p t)) + (jao-notify (jao-spt-update-status)))) + +;;;###autoload +(defun jao-spt-set-up () + (jao-minibuffer-add-variable 'jao-spt--status-str 20)) + +(provide 'jao-spt) +;;; jao-spt.el ends here |