ui/zen: add +zen/toggle{,-fullscreen} commands

A more reliable "Distraction-free" fullscreen mode.
This commit is contained in:
Henrik Lissner 2021-02-24 15:51:41 -05:00
parent 14d341530a
commit 3e32379f54
4 changed files with 37 additions and 4 deletions

View file

@ -0,0 +1,29 @@
;;; ui/zen/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defalias '+zen/toggle #'writeroom-mode)
(defvar +zen--last-wconf nil)
;;;###autoload
(defun +zen/toggle-fullscreen ()
"Toggle `writeroom-mode' fullscreen and delete all other windows.
Invoke again to revert to the window configuration before it was activated."
(interactive)
(require 'writeroom-mode)
(let ((writeroom-global-effects +zen--old-writeroom-global-effects)
(writeroom-maximize-window t))
(if writeroom-mode
(progn
(set-frame-parameter
nil 'fullscreen
(let ((fullscreen-restore (frame-parameter nil 'fullscreen-restore)))
(if (memq fullscreen-restore '(maximized fullheight fullwidth))
fullscreen-restore
nil)))
(set-window-configuration +zen--last-wconf))
(setq +zen--last-wconf (current-window-configuration))
(modify-frame-parameters
nil `((fullscreen . fullboth)
(fullscreen-restore . ,(frame-parameter nil 'fullscreen)))))
(let ((writeroom-global-effects (remq 'writeroom-set-fullscreen writeroom-global-effects)))
(call-interactively #'+zen/toggle))))