Files
.emacs.d/modules/ui/siren-transparency.el

57 lines
1.9 KiB
EmacsLisp

;;; siren-transparency.el --- jimeh's Emacs Siren: Emacs Frame transparency.
;;; Commentary:
;; Basic helpers and configuration for frame transparency.
;;; Code:
(require 'siren-ui)
(defgroup siren-transparency nil
"Options for the Siren transparency."
:group 'siren-ui)
(defcustom siren-transparency-default-level 99
"The default frame transparency level for Emacs frames."
:type 'number
:set (lambda (symbol value)
(set-default symbol value)
(setf (alist-get 'alpha default-frame-alist) value))
:group 'siren)
(defun siren-transparency-decrease ()
"Decrease level of transparency for the current frame."
(interactive)
(let ((current (or (frame-parameter nil 'alpha) 100)))
(if (> current 0)
(let ((new-level (+ current -1)))
(siren-transparency new-level)
(message "Frame transparency set to %s" new-level))
(message "This is a minimum value of transparency!"))))
(defun siren-transparency-increase ()
"Increase level of transparency for the current frame."
(interactive)
(let ((current (or (frame-parameter nil 'alpha) 100)))
(if (< current 100)
(let ((new-level (+ current +1)))
(siren-transparency new-level)
(message "Frame transparency set to %s" new-level))
(message "This is a minimum value of transparency!"))))
(defun siren-transparency (num)
"Set level of transparency for the current frame by providing NUM."
(interactive "nEnter transparency level in range 0-100: ")
(set-frame-parameter nil 'alpha (cond ((> num 100) 100)
((< num 0) 0)
(t num))))
;; Keybindings
(global-set-key (kbd "C-M-|") 'siren-transparency)
(global-set-key (kbd "C-M-<") 'siren-transparency-decrease)
(global-set-key (kbd "C-M->") 'siren-transparency-increase)
(provide 'siren-transparency)
;;; siren-transparency.el ends here