diff options
Diffstat (limited to '.emacs.d/modules/thanos-dired.el')
-rw-r--r-- | .emacs.d/modules/thanos-dired.el | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/.emacs.d/modules/thanos-dired.el b/.emacs.d/modules/thanos-dired.el new file mode 100644 index 0000000..3a61378 --- /dev/null +++ b/.emacs.d/modules/thanos-dired.el @@ -0,0 +1,87 @@ +;;; thanos-dired.el --- Dired configuration -*- lexical-binding: t; -*- + +;; Copyright (C) 2023 Thanos Apollo + +;; Author: Thanos Apollo <[email protected]> +;; Keywords: + +;; 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: + +;; + +;;; Code: + +(require 'dired) +(require 'all-the-icons-dired) + +(defun dired-watch-video () + "Watch play file with mpv." + (interactive) + (call-process-shell-command + (format "mpv \"%s\"" (dired-get-filename)) nil 0)) + +(defun dired-set-wallpaper () + "Set NAME as wallpaper using feh." + (interactive) + (call-process-shell-command + (format "feh --bg-scale %s" (dired-get-filename)) nil 0)) + +(defun dired-delete-files-except () + "Delete all files inside directory except match." + (interactive) + (let* ((directory (read-directory-name "Select directory: ")) + (files (directory-files directory t)) + (except-match (read-string "Except the ones that have: "))) + (dolist (file files) + (unless (or (string= "." (substring file -1)) + (string= ".." (substring file -2)) + (string-match except-match file)) + (dired-delete-file file t))))) + +(defun dired-delete-file-match () + "Delete all files inside directory except match." + (interactive) + (let* ((directory (read-directory-name "Select directory: ")) + (files (directory-files directory t)) + (match (read-string "Delete files that match: "))) + (dolist (file files) + (when (string-match-p match file) + (dired-delete-file file t))))) + +(defun dired-rename-capitalize-file () + "Capitalize the base name of the file at point in a dired buffer." + (interactive) + (let* ((file (dired-get-file-for-visit)) + (new-file (capitalize (file-name-nondirectory file)))) + (if (string-prefix-p "." file) + (message "Skipping file starting with '.'") + (progn + (rename-file file (concat (file-name-directory file) new-file)) + (revert-buffer) + (message "Renamed %s to %s" file new-file))))) + +(define-key dired-mode-map (kbd "b") 'dired-up-directory) +(define-key dired-mode-map (kbd "v") 'dired-watch-video) +(define-key dired-mode-map (kbd "z") 'wdired-change-to-wdired-mode) +(define-key dired-mode-map (kbd "C-c w") 'dired-set-wallpaper) +(define-key global-map (kbd "C-c d") 'dired-delete-files-except) + +(add-hook 'dired-mode-hook 'all-the-icons-dired-mode) +(setf all-the-icons-dired-monochrome 'nil + all-the-icons-dired-v-adjust 0.10) + +(provide 'thanos-dired) +;;; thanos-dired.el ends here |