From 425bdb7d43de9224b24e1adc1687adcf19a023c8 Mon Sep 17 00:00:00 2001 From: jao Date: Tue, 18 Jan 2022 22:43:24 +0000 Subject: jao-spt: telecommands for spotify-ui --- lib/media/jao-spt.el | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 lib/media/jao-spt.el (limited to 'lib') 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 +;; 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 . + +;;; 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 -- cgit v1.2.3