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 | |
| parent | 0c4548bfa3450b55c4fb6dc4e263e66299d7e086 (diff) | |
| download | elibs-425bdb7d43de9224b24e1adc1687adcf19a023c8.tar.gz elibs-425bdb7d43de9224b24e1adc1687adcf19a023c8.tar.bz2 | |
jao-spt: telecommands for spotify-ui
| -rw-r--r-- | exwm.org | 9 | ||||
| -rw-r--r-- | init.org | 2 | ||||
| -rw-r--r-- | lib/media/jao-spt.el | 77 | 
3 files changed, 88 insertions, 0 deletions
| @@ -538,6 +538,14 @@          ("M" (lambda () (concat "minibuffer" (when jao-minibuffer-enabled-p "*")))           jao-minibuffer-toggle)]]) +    (transient-define-prefix jao-transient-spt () +      [["spt control" +        ("s" "toggle" jao-spt-toggle) +        ("n" "next" jao-spt-next) +        ("p" "previous" jao-spt-previous) +        ("w" "status" jao-spt-echo-current) +        ("u" "spt ui" jao-exwm-spt)]]) +        #+end_src  * Keybindings    #+begin_src emacs-lisp @@ -566,6 +574,7 @@         ([?\s-p] . jao-prev-window)         ([?\s-r] . app-launcher-run-app)         ([?\s-s] . jao-transient-spotify) +       ([?\s-S] . jao-transient-spt)         ;; ([?\s-t] . jao-exwm-xterm)         ([?\s-t] . vterm)         ([?\s-w] . jao-transient-exwm) @@ -2941,6 +2941,8 @@        (jao-mpris-setup-aliases)        (jao-mpris-register "mopidy" :system (if jao-modeline-in-minibuffer-p -10 70)) +      (use-package jao-spt :demand t) +      #+end_src  *** mpc      #+begin_src emacs-lisp 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 | 
