aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bard-elisp/bard-media.el69
-rw-r--r--bard-elisp/bard-videos.el20
-rw-r--r--bard-emacs-modules/bard-emacs-media.el9
3 files changed, 78 insertions, 20 deletions
diff --git a/bard-elisp/bard-media.el b/bard-elisp/bard-media.el
new file mode 100644
index 0000000..22d54c9
--- /dev/null
+++ b/bard-elisp/bard-media.el
@@ -0,0 +1,69 @@
+(require 'cl-lib)
+(require 'seq)
+(require 'emms)
+(require 'image-dired)
+(require 'dired-x)
+
+(defun bard/play-youtube-video ()
+ "Prompt for a YouTube URL and play it in mpv."
+ (interactive)
+ (let ((url (read-string "Enter YouTube URL: ")))
+ (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url))
+ (async-shell-command (format "mpv '%s'" url))
+ (message "The URL is not a valid YouTube link: %s" url))))
+
+(defun bard/save-emms-watch-later ()
+ "Save the current EMMS playlist to `bard/watch-later-file` using `bard/emms-playlist-format`."
+ (interactive)
+ (when (and bard/watch-later-file bard/emms-playlist-format)
+ (emms-playlist-save bard/emms-playlist-format bard/watch-later-file)
+ (message "Playlist saved to %s" bard/watch-later-file)))
+
+;; (defun bard/image-browser (directory)
+;; "Open nsxiv in thumbnail mode on DIRECTORY.
+;; Asks the user whether to enable recursive mode."
+;; (interactive "DSelect directory: ")
+;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" "")))
+;; (start-process "nsxiv" "nsxiv" "-t" "-o" recursive (expand-file-name directory))))
+
+;; (defun bard/image-browser (directory)
+;; "Open nsxiv in thumbnail mode on DIRECTORY.
+;; Asks the user whether to enable recursive mode."
+;; (interactive "DSelect directory: ")
+;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" "")))
+;; (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" "-o" recursive (expand-file-name directory))
+;; (pop-to-buffer "*nsxiv*")))
+
+;; (defun bard/image-browser (directory)
+;; "Open nsxiv in thumbnail mode on DIRECTORY.
+;; Asks the user whether to enable recursive mode."
+;; (interactive "DSelect directory: ")
+;; (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" ""))
+;; (stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" "")))
+;; (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" stdout recursive (expand-file-name directory))
+;; (if (string= stdout "-o")
+;; (progn (with-current-buffer "*nsxiv*"
+;; (read-only-mode nil)
+;; (erase-buffer))
+;; (pop-to-buffer "*nsxiv*")
+;; )
+;; nil)))
+
+(defun bard/image-browser (directory)
+ "Open nsxiv in thumbnail mode on DIRECTORY.
+Asks the user whether to enable recursive mode."
+ (interactive "DSelect directory: ")
+ (let ((recursive (if (y-or-n-p "Recursive searching? ") "-r" ""))
+ (stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" "")))
+ (let ((process (start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" stdout recursive (expand-file-name directory))))
+ (when (string= stdout "-o")
+ (set-process-sentinel
+ process
+ (lambda (proc event)
+ (when (string= event "finished\n")
+ (with-current-buffer "*nsxiv*"
+ (read-only-mode nil)
+ (erase-buffer)))))
+ (pop-to-buffer "*nsxiv*")))))
+
+(provide 'bard-media.el)
diff --git a/bard-elisp/bard-videos.el b/bard-elisp/bard-videos.el
deleted file mode 100644
index ae1fadc..0000000
--- a/bard-elisp/bard-videos.el
+++ /dev/null
@@ -1,20 +0,0 @@
-(require 'cl-lib)
-(require 'seq)
-(require 'emms)
-
-(defun bard/play-youtube-video ()
- "Prompt for a YouTube URL and play it in mpv."
- (interactive)
- (let ((url (read-string "Enter YouTube URL: ")))
- (if (and url (string-match-p "https?://\\(www\\.\\)?youtube\\.com\\|youtu\\.be" url))
- (async-shell-command (format "mpv '%s'" url))
- (message "The URL is not a valid YouTube link: %s" url))))
-
-(defun bard/save-emms-watch-later ()
- "Save the current EMMS playlist to `bard/watch-later-file` using `bard/emms-playlist-format`."
- (interactive)
- (when (and bard/watch-later-file bard/emms-playlist-format)
- (emms-playlist-save bard/emms-playlist-format bard/watch-later-file)
- (message "Playlist saved to %s" bard/watch-later-file)))
-
-(provide 'bard-videos.el)
diff --git a/bard-emacs-modules/bard-emacs-media.el b/bard-emacs-modules/bard-emacs-media.el
index 352e0d1..b84d2c9 100644
--- a/bard-emacs-modules/bard-emacs-media.el
+++ b/bard-emacs-modules/bard-emacs-media.el
@@ -58,4 +58,13 @@
(pdf-tools-install)
(add-to-list 'pdf-tools-enabled-modes #'pdf-view-themed-minor-mode))
+(use-package bard-media
+ :ensure nil
+ :config
+ (require 'bard-media)
+ :bind
+ (("C-c o p" . bard/play-youtube-video)
+ ("C-c o i" . bard/image-browser))
+ )
+
(provide 'bard-emacs-media)