#: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)
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
emacs-calfw-service
emacs-consult-service
emacs-daemon-service
+ emacs-dired-service
emacs-package-service
emacs-pass-service
emacs-service))
--- /dev/null
+;; Copyright (c) 2022 Jakub Czajka <jakub@ekhem.eu.org>
+;; 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
+ ("<tab>" . dired-subtree-toggle)
+ ("C-<tab>" . 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)