org-media-note
org-media-note copied to clipboard
Consider transitioning from `pretty-hydra` to `transient`
Would you consider transitioning pretty-hidra
to use transient
since it's built with Emacs? This would eliminate one dependency and support all the existing features. I'm currently utilizing this if you are interested:
(transient-define-prefix org-media-note-import-transient ()
"Transient for org-media-note import commands."
["Import"
[("p" "From pbf" org-media-note-insert-note-from-pbf)
("n" "From Noted" org-media-note-insert-note-from-noted)
("t" "From org-timer" org-media-note-convert-from-org-timer)
("s" "From subtitle" org-media-note-insert-note-from-subtitle)
("c" "From chapters" org-media-note-insert-note-from-chapter-list)]])
(transient-define-prefix org-media-note-config-transient ()
"Transient for org-media-note config commands."
["Config"
[("m" "Auto insert media item" toggle-org-media-note-auto-insert-item)
("s" "Auto insert screenshot" org-media-note-toggle-save-screenshot)
("S" "Screenshot with sub" org-media-note-toggle-screenshot-with-sub)
("l" org-media-note-config-ab-loop-capture-method
:description (lambda ()
(format "AB-loop Clip: %s"
(if org-media-note-capture-ab-loop-ask-each-time
"always ask" org-media-note-default-capture-ab-loop-function-name))))
("c" "Cite key instead of path" org-media-note-toggle-refcite)
("p" "Pause after insert link" org-media-note-toggle-pause-after-insertion)
("t" org-media-note-toggle-timestamp-pattern
:description (lambda ()
(format "Timestamp format: %s"
(cond
((eq org-media-note-timestamp-pattern 'hms) "hh:mm:ss")
((eq org-media-note-timestamp-pattern 'hmsf) "hh:mm:ss.fff")))))
("M" org-media-note-set-separator
:description (lambda ()
(format "Separator when merge: %s" org-media-note-separator-when-merge)))
("<right>" org-media-note-set-seek-method
:description (lambda ()
(format "Seek step: %s" (org-media-note--seek-step t))))]])
;; Define the main transient with the sub-transients
(transient-define-prefix org-media-note-transient ()
"Main transient for org-media-note."
:transient-suffix 'transient--do-stay
[:description org-media-note--hydra-title
["\nFile"
("o" "Open link" org-media-note-play-smart)
("j" "Toggle subtitles" (lambda () (interactive) (mpv-cycle-property "sub")))
("T" "Toggle ontop" (lambda () (interactive) (mpv-cycle-property "ontop")))
("c" "Increase speed" (lambda () (interactive) (org-media-note-change-speed-by 0.1)))
("x" "Decrease speed" (lambda () (interactive) (org-media-note-change-speed-by -0.1)))
("z" "Reset speed" org-media-note-mpv-toggle-speed)]
["Playback"
("<SPC>" "Play/Pause" mpv-pause)
("l" (lambda () (interactive) (mpv-run-command "ab-loop"))
:description (lambda ()
(let ((time-a (mpv-get-property "ab-loop-a"))
(time-b (mpv-get-property "ab-loop-b")))
(if (org-media-note--ab-loop-p)
(format "Clear AB-loop (%s-%s)"
(org-media-note--seconds-to-timestamp time-a)
(org-media-note--seconds-to-timestamp time-b))
(if (numberp time-a)
(format "Set B of AB-loop (%s-)"
(org-media-note--seconds-to-timestamp time-a))
"Set A of AB-loop")))))
("g" "Jump to timestamp" org-media-note-goto-timestamp)
("<left>" (lambda () (interactive) (org-media-note-seek 'backward)) :description (lambda () (format "Backward %s" (org-media-note--seek-step t))))
("<right>" (lambda () (interactive) (org-media-note-seek 'forward)) :description (lambda () (format "Forward %s" (org-media-note--seek-step) t)))
("C-<left>" "Previous subtitle" (lambda () (interactive) (mpv-run-command "sub-seek" -1)))
("C-<right>" "Next subtitle" (lambda () (interactive) (mpv-run-command "sub-seek" 1)))
("<prior>" "Previous Chapter" (lambda () (interactive) (mpv-run-command "add" "chapter" -1)))
("<next>" "Next Chapter" (lambda () (interactive) (mpv-run-command "add" "chapter" 1)))]
["Note"
("i" "Insert timestamp" org-media-note-insert-link :transient nil)
("a" "Adjust timestamp" org-media-note-adjust-timestamp-offset)
("S" (lambda () (interactive)
(if (org-media-note--ab-loop-p)
(org-media-note-capture-ab-loop-and-insert)
(org-media-note-insert-screenshot)))
:description (lambda ()
(if (org-media-note--ab-loop-p)
"Insert ab-loop clip"
"Insert Screenshot")))
("s" "Insert subtitle" org-media-note-insert-sub-text)
("H-m" "Merge items" org-media-note-merge-item)]
["Volume"
("+" "Up" (lambda () (interactive) (org-media-note-change-volume-by 5)))
("-" "Down" (lambda () (interactive) (org-media-note-change-volume-by -5)))
("0" "Toggle" org-media-note-mpv-toggle-volume)
("m" "(un)mute" (lambda () (interactive) (mpv-cycle-property "mute")))]]
["Other"
[("I" "Import" org-media-note-import-transient)
("C" "Config" org-media-note-config-transient)]
])