From 0a10ca9d713c486c03c4c9bea671a4e82d52d560 Mon Sep 17 00:00:00 2001 From: Jakub Czajka Date: Fri, 23 Dec 2022 18:03:58 +0100 Subject: [PATCH] [emacs] Customize dired. Dired is the built-in file manager for emacs. For example, it can open files with `xdg-open`. --- conf/home/emacs.scm | 13 +++++++ emacs/.config/emacs/conf/conf-dired.el | 53 ++++++++++++++++++++++++++ mime/.config/mimeapps.list | 3 ++ 3 files changed, 69 insertions(+) create mode 100644 emacs/.config/emacs/conf/conf-dired.el create mode 100644 mime/.config/mimeapps.list diff --git a/conf/home/emacs.scm b/conf/home/emacs.scm index 1eb1bec..6a7cc2b 100644 --- a/conf/home/emacs.scm +++ b/conf/home/emacs.scm @@ -9,6 +9,7 @@ #:use-module (gnu home services shepherd) #:use-module (gnu packages emacs) #:use-module (gnu packages emacs-xyz) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gnupg) #:use-module (gnu packages password-utils) #:use-module (gnu packages rust-apps) @@ -55,6 +56,17 @@ home-shepherd-service-type (list emacs-daemon-shepherd-service))) +(define emacs-dired-service + (service home-program-service-type + (home-program-configuration + ;; file + (packages + (list emacs-dired-hacks + xdg-utils)) + (dotfiles + (list "mime/.config/mimeapps.list" + "emacs/.config/emacs/conf/conf-dired.el"))))) + (define emacs-package-service (service home-program-service-type (home-program-configuration @@ -94,6 +106,7 @@ emacs-calfw-service emacs-consult-service emacs-daemon-service + emacs-dired-service emacs-package-service emacs-pass-service emacs-service)) diff --git a/emacs/.config/emacs/conf/conf-dired.el b/emacs/.config/emacs/conf/conf-dired.el new file mode 100644 index 0000000..c470a67 --- /dev/null +++ b/emacs/.config/emacs/conf/conf-dired.el @@ -0,0 +1,53 @@ +;; Copyright (c) 2022 Jakub Czajka +;; License: GPL-3.0 or later. +;; +;; conf-dired.el - configuration for the dired file manager. + +(require 'conf-package) + +(use-package dired + :bind + ;; Open `dired' in a directory of the current file. + ("C-x C-j" . dired-jump) + ;; Like `dired-jump', but open `dired' but in split screen. + ("C-S-x C-j" . dired-jump-other-window) + :hook + ;; Show only names from `ls' by default. Can be toggled with C-(. + (dired-mode . dired-hide-details-mode) + :custom + ;; Copy directories recursively without asking for confirmation. + (dired-recursive-copies 'always) + ;; Delete directories recursively without asking for confirmation. + (dired-recursive-deletes 'always) + ;; If another `dired' buffer is opened, use it as the default destination + ;; argument for actions. + (dired-dwim-target t) + ;; Arguments passed to `ls'. See `man ls' for documentation. + (dired-listing-switches "-lv --almost-all --no-group --human-readable + --group-directories-first --time-style=long-iso") + :custom-face + ;; Face for directory item. + (dired-directory ((t :inherit link :underline nil))) + ;; Face for directory heading. + (dired-header ((t :inherit minibuffer-prompt)))) + +(use-package dired-subtree + :ensure t + :bind + (:map dired-mode-map + ("" . dired-subtree-toggle) + ("C-" . dired-subtree-remove))) + +(use-package dired-launch + :when + (conf:executables-p (list "xdg-open")) + :ensure t + :bind + (:map dired-launch-mode-map + ("l" . 'dired-launch-command)) + :hook + (dired-mode . dired-launch-mode) + :custom + (dired-launch-default-launcher '("xdg-open"))) + +(provide 'conf-dired) diff --git a/mime/.config/mimeapps.list b/mime/.config/mimeapps.list new file mode 100644 index 0000000..36a57a7 --- /dev/null +++ b/mime/.config/mimeapps.list @@ -0,0 +1,3 @@ +[Default Applications] +video/mp4=mpv.desktop +image/gif=mpv.desktop -- 2.39.5