tweaks to toggle changes and empv

This commit is contained in:
Chris Cochrun 2025-03-25 10:10:10 -05:00
parent 51e283e587
commit 476b820019
2 changed files with 187 additions and 154 deletions

View file

@ -581,6 +581,9 @@ Here let's try to add ligatures to our font system since the VictorMono Nerd Fon
There are two major packages we need to get the functionality I desire. Evil and general. There are two major packages we need to get the functionality I desire. Evil and general.
*** Evil *** Evil
:PROPERTIES:
:ID: 20250304T164537.064599
:END:
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package evil (use-package evil
@ -614,6 +617,12 @@ This evil-collection package includes a lot of other evil based things.
:after evil :after evil
:init (evil-escape-mode +1) :init (evil-escape-mode +1)
:config :config
(defun chris/toggle-evil-escape-sequence ()
(interactive)
(if (string= evil-escape-key-sequence "ae")
(setq evil-escape-key-sequence "fd")
(setq evil-escape-key-sequence "ae")))
(setq evil-escape-key-sequence (kbd "ae") (setq evil-escape-key-sequence (kbd "ae")
evil-escape-delay 0.3)) evil-escape-delay 0.3))
#+end_src #+end_src
@ -5049,25 +5058,34 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
(message args) (message args)
(empv-play-or-enqueue video)) (empv-play-or-enqueue video))
(defun chris/empv-yt-dlp () (defun chris/empv-yt-dlp (&optional file)
"Download the current video and and play it" "Download the current video and and play it"
(interactive) (interactive)
(let* ((item (empv-youtube-results--current-item)) (setq lexical-binding t)
(video-id (alist-get 'videoId item)) (let* ((item (when (not file) (empv-youtube-results--current-item)))
(playlist-id (alist-get 'playlistId item)) (video-id (when (not file) (alist-get 'videoId item)))
(title (alist-get 'title item)) (playlist-id (when (not file) (alist-get 'playlistId item)))
(url (format (title (if file (shell-command
(format "yt-dlp --get-title %s" file))
(alist-get 'title item)))
(url (if file file
(format
"https://youtube.com/%s=%s" "https://youtube.com/%s=%s"
(if video-id "watch?v" "playlist?list") (if video-id "watch?v" "playlist?list")
(or video-id playlist-id)))) (or video-id playlist-id)))))
(async-shell-command (concat (message url)
"yt-dlp" " -o '/home/chris/vids/%(title)s.%(ext)s'" (async-start-process
" \"" url "\"")) "yt-dlp" "yt-dlp"
(lambda ()
(let ((file (format "/home/chris/vids/%s.%s" title "webm"))) (let ((file (format "/home/chris/vids/%s.%s" title "webm")))
(empv-play file)) (empv-play-or-enqueue file))
(message url))) (message "here be the url %s" url))
"-o" "'/home/chris/vids/%(title)s.%(ext)s'" url)))
(defun chris/empv-yt-dlp-jellyfin () (get-process "yt-dlp")
(chris/empv-yt-dlp "https://inv.cochrun.xyz/watch?v=qRE6kf30u4g")
(defun chris/empv-yt-dlp-jellyfin ()
"Grabs the current video at point and downloads it to my jellyfin server" "Grabs the current video at point and downloads it to my jellyfin server"
(interactive) (interactive)
(let* ((server "jelly.cochrun.xyz") (let* ((server "jelly.cochrun.xyz")
@ -5088,7 +5106,7 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
" '" url "'" "\"")) " '" url "'" "\""))
(message (format "%s is downloading to the %s folder on jellyfin" url location)))) (message (format "%s is downloading to the %s folder on jellyfin" url location))))
(defun chris/empv-org-play-link (&optional link) (defun chris/empv-org-play-link (&optional link)
"Play link in empv from either supplied link or link at point in org-mode" "Play link in empv from either supplied link or link at point in org-mode"
(interactive) (interactive)
(let ((link (if link (let ((link (if link
@ -5096,19 +5114,19 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
(org-babel-read-link)))) (org-babel-read-link))))
(empv-play link))) (empv-play link)))
(defun chris/dired-empv-play-or-enqueue () (defun chris/dired-empv-play-or-enqueue ()
"Play file at point in dired" "Play file at point in dired"
(interactive) (interactive)
(let* ((file (dired-get-filename))) (let* ((file (dired-get-filename)))
(empv-play-or-enqueue file))) (empv-play-or-enqueue file)))
(defun chris/empv-seek-forward () (defun chris/empv-seek-forward ()
"Seek forward 20 seconds" "Seek forward 20 seconds"
(interactive) (interactive)
(empv-seek "20")) (empv-seek "20"))
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
:keymaps 'override :keymaps 'override
"vo" 'empv-play-or-enqueue "vo" 'empv-play-or-enqueue
@ -5120,7 +5138,7 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
"vp" 'empv-playlist-prev "vp" 'empv-playlist-prev
"vs" 'empv-playlist-select "vs" 'empv-playlist-select
"vS" 'chris/empv-seek-forward) "vS" 'chris/empv-seek-forward)
(general-def (general-def
:states 'normal :states 'normal
:keymaps 'empv-youtube-results-mode-map :keymaps 'empv-youtube-results-mode-map
"q" 'kill-current-buffer "q" 'kill-current-buffer
@ -5128,7 +5146,7 @@ With empv we can perhaps control mpv much more fine grainly and even search yout
"i" 'empv-youtube-results-inspect "i" 'empv-youtube-results-inspect
"d" 'chris/empv-yt-dlp "d" 'chris/empv-yt-dlp
"D" 'chris/empv-yt-dlp-jellyfin) "D" 'chris/empv-yt-dlp-jellyfin)
(general-def (general-def
:states 'normal :states 'normal
:keymaps 'dired-mode-map :keymaps 'dired-mode-map
"vi" 'chris/dired-empv-play-or-enqueue)) "vi" 'chris/dired-empv-play-or-enqueue))
@ -5272,7 +5290,7 @@ q quit-window
(elfeed-search-untag-all-unread) (elfeed-search-untag-all-unread)
(if (process-live-p proc) (if (process-live-p proc)
(set-process-sentinel (set-process-sentinel
proc `(empv-play-or-enqueue proc `(empv-enqueue
,(concat "/home/chris/vids/" title ".webm"))) ,(concat "/home/chris/vids/" title ".webm")))
(message "No process running")))) (message "No process running"))))

57
init.el
View file

@ -350,6 +350,12 @@
:after evil :after evil
:init (evil-escape-mode +1) :init (evil-escape-mode +1)
:config :config
(defun chris/toggle-evil-escape-sequence ()
(interactive)
(if (string= evil-escape-key-sequence "ae")
(setq evil-escape-key-sequence "fd")
(setq evil-escape-key-sequence "ae")))
(setq evil-escape-key-sequence (kbd "ae") (setq evil-escape-key-sequence (kbd "ae")
evil-escape-delay 0.3)) evil-escape-delay 0.3))
@ -3698,25 +3704,34 @@ targets."
(message args) (message args)
(empv-play-or-enqueue video)) (empv-play-or-enqueue video))
(defun chris/empv-yt-dlp () (defun chris/empv-yt-dlp (&optional file)
"Download the current video and and play it" "Download the current video and and play it"
(interactive) (interactive)
(let* ((item (empv-youtube-results--current-item)) (setq lexical-binding t)
(video-id (alist-get 'videoId item)) (let* ((item (when (not file) (empv-youtube-results--current-item)))
(playlist-id (alist-get 'playlistId item)) (video-id (when (not file) (alist-get 'videoId item)))
(title (alist-get 'title item)) (playlist-id (when (not file) (alist-get 'playlistId item)))
(url (format (title (if file (shell-command
(format "yt-dlp --get-title %s" file))
(alist-get 'title item)))
(url (if file file
(format
"https://youtube.com/%s=%s" "https://youtube.com/%s=%s"
(if video-id "watch?v" "playlist?list") (if video-id "watch?v" "playlist?list")
(or video-id playlist-id)))) (or video-id playlist-id)))))
(async-shell-command (concat (message url)
"yt-dlp" " -o '/home/chris/vids/%(title)s.%(ext)s'" (async-start-process
" \"" url "\"")) "yt-dlp" "yt-dlp"
(lambda ()
(let ((file (format "/home/chris/vids/%s.%s" title "webm"))) (let ((file (format "/home/chris/vids/%s.%s" title "webm")))
(empv-play file)) (empv-play-or-enqueue file))
(message url))) (message "here be the url %s" url))
"-o" "'/home/chris/vids/%(title)s.%(ext)s'" url)))
(defun chris/empv-yt-dlp-jellyfin () (get-process "yt-dlp")
(chris/empv-yt-dlp "https://inv.cochrun.xyz/watch?v=qRE6kf30u4g")
(defun chris/empv-yt-dlp-jellyfin ()
"Grabs the current video at point and downloads it to my jellyfin server" "Grabs the current video at point and downloads it to my jellyfin server"
(interactive) (interactive)
(let* ((server "jelly.cochrun.xyz") (let* ((server "jelly.cochrun.xyz")
@ -3737,7 +3752,7 @@ targets."
" '" url "'" "\"")) " '" url "'" "\""))
(message (format "%s is downloading to the %s folder on jellyfin" url location)))) (message (format "%s is downloading to the %s folder on jellyfin" url location))))
(defun chris/empv-org-play-link (&optional link) (defun chris/empv-org-play-link (&optional link)
"Play link in empv from either supplied link or link at point in org-mode" "Play link in empv from either supplied link or link at point in org-mode"
(interactive) (interactive)
(let ((link (if link (let ((link (if link
@ -3745,19 +3760,19 @@ targets."
(org-babel-read-link)))) (org-babel-read-link))))
(empv-play link))) (empv-play link)))
(defun chris/dired-empv-play-or-enqueue () (defun chris/dired-empv-play-or-enqueue ()
"Play file at point in dired" "Play file at point in dired"
(interactive) (interactive)
(let* ((file (dired-get-filename))) (let* ((file (dired-get-filename)))
(empv-play-or-enqueue file))) (empv-play-or-enqueue file)))
(defun chris/empv-seek-forward () (defun chris/empv-seek-forward ()
"Seek forward 20 seconds" "Seek forward 20 seconds"
(interactive) (interactive)
(empv-seek "20")) (empv-seek "20"))
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
:keymaps 'override :keymaps 'override
"vo" 'empv-play-or-enqueue "vo" 'empv-play-or-enqueue
@ -3769,7 +3784,7 @@ targets."
"vp" 'empv-playlist-prev "vp" 'empv-playlist-prev
"vs" 'empv-playlist-select "vs" 'empv-playlist-select
"vS" 'chris/empv-seek-forward) "vS" 'chris/empv-seek-forward)
(general-def (general-def
:states 'normal :states 'normal
:keymaps 'empv-youtube-results-mode-map :keymaps 'empv-youtube-results-mode-map
"q" 'kill-current-buffer "q" 'kill-current-buffer
@ -3777,7 +3792,7 @@ targets."
"i" 'empv-youtube-results-inspect "i" 'empv-youtube-results-inspect
"d" 'chris/empv-yt-dlp "d" 'chris/empv-yt-dlp
"D" 'chris/empv-yt-dlp-jellyfin) "D" 'chris/empv-yt-dlp-jellyfin)
(general-def (general-def
:states 'normal :states 'normal
:keymaps 'dired-mode-map :keymaps 'dired-mode-map
"vi" 'chris/dired-empv-play-or-enqueue)) "vi" 'chris/dired-empv-play-or-enqueue))
@ -3839,7 +3854,7 @@ targets."
(elfeed-search-untag-all-unread) (elfeed-search-untag-all-unread)
(if (process-live-p proc) (if (process-live-p proc)
(set-process-sentinel (set-process-sentinel
proc `(empv-play-or-enqueue proc `(empv-enqueue
,(concat "/home/chris/vids/" title ".webm"))) ,(concat "/home/chris/vids/" title ".webm")))
(message "No process running")))) (message "No process running"))))