diff options
| author | Craig Jennings <c@cjennings.net> | 2025-11-24 05:54:37 -0800 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-11-24 05:54:37 -0800 |
| commit | c0066af134cb0ffb21889b455963c6917fd690e7 (patch) | |
| tree | 234df34ee4405028e2a95bb5312ef8ffb776be8f /modules/dwim-shell-config.el | |
| parent | 42a649d38043dfe5aee15e3fc2d6dcce4483cd40 (diff) | |
feat(dwim-shell): fix M-D menu binding and enhance audio extraction
- Fix dwim-shell-commands-menu keybinding in dirvish/dired
- Remove :after (dired dirvish) which prevented package loading
- Add :demand t to load package immediately at startup
- Move keybindings inside :config block after menu function definition
- M-D now works immediately in dirvish without manual trigger
- Enhance extract-audio-from-video function
- Fix :extensions parameter (was regex string, now proper list)
- Change from copy to AAC re-encoding for codec compatibility
- Add interactive bitrate selection (64k/96k/128k/192k)
- Fixes Opus codec compatibility issues with M4A containers
- Remove conflicting keybindings
- Remove music-config p binding in dirvish (was overriding path copy)
- Clean up extraneous requires/hooks from troubleshooting
- Add TODO for dwim-shell-command status dashboard [#D priority]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'modules/dwim-shell-config.el')
| -rw-r--r-- | modules/dwim-shell-config.el | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/modules/dwim-shell-config.el b/modules/dwim-shell-config.el index a05646b2..1881f791 100644 --- a/modules/dwim-shell-config.el +++ b/modules/dwim-shell-config.el @@ -90,16 +90,10 @@ (require 'cl-lib) - -;; Bind menu to dired (after dwim-shell-command loads) -(with-eval-after-load 'dwim-shell-command - (with-eval-after-load 'dired - (keymap-set dired-mode-map "M-D" #'dwim-shell-commands-menu))) - ;; ----------------------------- Dwim Shell Command ---------------------------- (use-package dwim-shell-command - :after (dired dirvish) + :demand t :bind (("<remap> <shell-command>" . dwim-shell-command) :map dired-mode-map ("<remap> <dired-do-async-shell-command>" . dwim-shell-command) @@ -606,10 +600,14 @@ in process lists or command history." (defun cj/dwim-shell-commands-extract-audio-from-video () "Extract audio track from video file(s)." (interactive) - (dwim-shell-command-on-marked-files - "Extract audio" - "ffmpeg -i '<<f>>' -vn -acodec copy '<<fne>>.m4a'" - :utils "ffmpeg")) + (let ((bitrate (completing-read "Audio bitrate: " + '("64k" "96k" "128k" "192k") + nil t))) + (dwim-shell-command-on-marked-files + "Extract audio" + (format "ffmpeg -i '<<f>>' -vn -c:a aac -b:a %s '<<fne>>.m4a'" bitrate) + :utils "ffmpeg" + :extensions '("mp4" "mkv" "webm" "avi" "mov" "flv" "wmv" "m4v" "mpg" "mpeg" "ogv" "3gp" "ts")))) (defun cj/dwim-shell-commands-normalize-audio-volume () "Normalize audio volume in file(s)." @@ -809,7 +807,13 @@ gpg: decryption failed: No pinentry" 'dwim-shell-command-history)) (command (alist-get selected command-alist nil nil #'string=))) (when command - (call-interactively command))))) + (call-interactively command)))) + + ;; Bind menu to keymaps after function is defined + (with-eval-after-load 'dired + (keymap-set dired-mode-map "M-D" #'dwim-shell-commands-menu)) + (with-eval-after-load 'dirvish + (keymap-set dirvish-mode-map "M-D" #'dwim-shell-commands-menu))) (provide 'dwim-shell-config) ;;; dwim-shell-config.el ends here. |
