summaryrefslogtreecommitdiff
path: root/.config/emacs/modules/bd--utility.el
diff options
context:
space:
mode:
Diffstat (limited to '.config/emacs/modules/bd--utility.el')
-rw-r--r--.config/emacs/modules/bd--utility.el130
1 files changed, 130 insertions, 0 deletions
diff --git a/.config/emacs/modules/bd--utility.el b/.config/emacs/modules/bd--utility.el
new file mode 100644
index 0000000..bff3eeb
--- /dev/null
+++ b/.config/emacs/modules/bd--utility.el
@@ -0,0 +1,130 @@
+;;; -*- lexical-binding: t; -*-
+;;; Commentary:
+;;; Code:
+
+(defun bd/set-frame-alpha (value)
+ "Sets the transparency of the frame background. 0=transparent/100=opaque."
+ (interactive "nTransparency Value (30 - 100 opaque): ")
+ (setq value (max 30 (min value 100)))
+ (set-frame-parameter (selected-frame) 'alpha `(,value . ,value))
+ (message "Alpha set to %d" value))
+
+(defun bd/set-bg (&optional arg)
+ "Set the current wallpaper using feh.
+ARG can be one of the following:
+
+- nil: set the most recent wallpaper
+- directory: set a random image from the directory
+- file: set the specified file"
+ (interactive "f")
+ (let ((wall (expand-file-name "~/wf/wall/current")))
+ (when arg
+ (cond
+ ((file-regular-p arg) (copy-file arg wall t))
+ ((file-directory-p arg)
+ (let* ((images (f-files arg (lambda (f) (string-match-p "\\.jpeg\\'" f))))
+ (rfile (nth (random (length images)) images)))
+ (and rfile (copy-file rfile wall t))))))
+ (start-process "set wallpaper" nil "feh" "--bg-fill" wall)
+ (message "Set wallpaper.")))
+
+(defun bd/lock ()
+ "Lock the screen."
+ (interactive)
+ (start-process "lock" nil "slock"))
+
+(defun bd/shoot-full ()
+ "Take a full-screen screenshot."
+ (interactive)
+ (let ((default-directory (xdg-user-dir "PICTURES")))
+ (start-process-shell-command "flameshot" nil "flameshot full")))
+
+(defun bd/shoot-part ()
+ "Take a selective screen screenshot."
+ (interactive)
+ (let ((default-directory (xdg-user-dir "PICTURES")))
+ (start-process-shell-command "flameshot" nil "flameshot launcher")))
+
+(defun bd/toggle-mute ()
+ "Toggle between muted and unmuted."
+ (interactive)
+ (start-process "sound toggle" nil "pactl" "set-sink-mute" "@DEFAULT_SINK@" "toggle"))
+
+(defun bd/set-volume (value)
+ "Sets the volume to VALUE."
+ (start-process "set volume" nil "pactl" "set-sink-volume" "@DEFAULT_SINK@" value))
+
+(defun bd/decrement-volume ()
+ "Decrements the volume."
+ (interactive)
+ (bd/set-volume "-4%"))
+
+(defun bd/increment-volume ()
+ "Increments the volume."
+ (interactive)
+ (bd/set-volume "+4%"))
+
+(defun bd/set-brightness (value)
+ "Sets the brightness to VALUE."
+ (start-process "set brightness" nil "brightnessctl" "set" value))
+
+(defun bd/decrement-brightness ()
+ "decrements the brightness."
+ (interactive)
+ (bd/set-brightness "5%-"))
+
+(defun bd/increment-brightness ()
+ "Increments the brightness."
+ (interactive)
+ (bd/set-brightness "5%+"))
+
+(defun bd/get-directory-dwim ()
+ "Returns the directory you always wanted."
+ (or (when (project-current)
+ (project-root (project-current))) ;; git
+ (locate-dominating-file "." "Makefile") ;; make
+ (locate-dominating-file "." "manifest.scm") ;; guix
+ default-directory))
+
+ (defun bd/buffer-exwm-p (buf)
+ "Return non-nil if BUF is an `exwm-mode' buffer."
+ (member
+ (buffer-local-value 'major-mode (get-buffer buf))
+ '(exwm-mode)))
+
+ (defun bd/buffer-scratch-p (buf)
+ "Return non-nil if BUF is a scratch buffer."
+ (buffer-local-value 'scratch-buffer (get-buffer buf)))
+
+ (defun bd/buffer-text-p (buf)
+ "Return non-nil if BUF derives from `text-mode'."
+ (provided-mode-derived-p (buffer-local-value 'major-mode (get-buffer buf)) 'text-mode))
+
+ (defun bd/buffer-prog-p (buf)
+ "Return non-nil if BUF derives from `prog-mode'."
+ (provided-mode-derived-p (buffer-local-value 'major-mode (get-buffer buf)) 'prog-mode))
+
+ (defun bd/buffer-dired-p (buf)
+ "Return non-nil if BUF is a `dired-mode' buffer."
+ (member
+ (buffer-local-value 'major-mode (get-buffer buf))
+ '(dired-mode)))
+
+ (defun bd/buffer-irc-p (buf)
+ "Return non-nil if BUF is an `irc-mode' buffer."
+ (member
+ (buffer-local-value 'major-mode (get-buffer buf))
+ '(rcirc-mode erc-mode)))
+
+ (defun bd/buffer-ordinary-p (buf)
+ "Return non-nil if BUF does not fit into known categories."
+ (not (or (bd/buffer-exwm-p buf)
+ (bd/buffer-text-p buf)
+ (bd/buffer-prog-p buf)
+ (bd/buffer-scratch-p buf)
+ (bd/buffer-dired-p buf)
+ (bd/buffer-irc-p buf))))
+
+
+(provide 'bd--utility)
+;;; bd--utility.el ends here