From ed00f21951cc1ca55e22f88797e378f02d0c777c Mon Sep 17 00:00:00 2001 From: pi-bot-01 Date: Thu, 26 Mar 2026 01:01:07 -0700 Subject: [PATCH] Initial commit --- transparency.el | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 transparency.el diff --git a/transparency.el b/transparency.el new file mode 100644 index 0000000..48bca8c --- /dev/null +++ b/transparency.el @@ -0,0 +1,88 @@ +;;; transparency.el --- a viewing mode for books and novels. -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Robert Rose + +;; Author: Robert Rose +;; Keywords: lisp eww novel book +;; Version: 0.0.1 +;; Package-Requires ((emacs "24")) + +;; 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 . + +;;; Commentary: + +;; Toggles transparency on and off with `transparency-toggle'. Customize how it looks in `transparency' +;; custom group. + +;;; Code: + +(defvar transparency-state nil + "Reflects the current state of transparency.") + +(defvar transparency-original-faces '() + "Stores original faces while transparency is enable.") + +(defgroup transparency nil + "Custom group for transparency package.") + +(defcustom transparency-alpha 50 + "The level of transparency used." + :type 'integer + :group 'transparency) + +(defcustom transparency-faces + '((default :background "#444") + (default :foreground "grey75") + (fringe :background "#444") + (mode-line :background "#444") + (mode-line :foreground "grey75") + (mode-line :box nil) + (mode-line-inactive :background "#444") + (mode-line-inactive :foreground "grey50") + (mode-line-inactive :box nil)) + "Faces used when transparency is enabled." + :type '(alist face) + :group 'transparency) + + +(setq alpha-prop (if (>= emacs-major-version 29) + 'alpha-background + 'alpha)) + +(defun transparency-modface (FPV) + "Sets new and returns old FPV" + (let* ((face (pop FPV)) + (prop (pop FPV)) + (val (pop FPV)) + (prev (face-attribute face prop))) + (set-face-attribute face nil prop val) + `(,face ,prop ,prev))) + +(defun transparency-toggle () + "better alpha toggle transparency" + (interactive) + (if transparency-state + (progn + (set-frame-parameter nil alpha-prop 100) + ;; (set-frame-parameter nil 'alpha-background 100) + (mapcar 'transparency-modface transparency-original-faces) + (setq transparency-state nil)) + (set-frame-parameter nil alpha-prop transparency-alpha) + (setq transparency-original-faces + (mapcar 'transparency-modface transparency-faces)) + (setq transparency-state t))) + +(provide 'transparency) + +;;; transparency.el ends here