summaryrefslogtreecommitdiff
path: root/.emacs.d/modules/thanos-dired.el
diff options
context:
space:
mode:
Diffstat (limited to '.emacs.d/modules/thanos-dired.el')
-rw-r--r--.emacs.d/modules/thanos-dired.el87
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