ui/zen: add +zen/toggle{,-fullscreen} commands
A more reliable "Distraction-free" fullscreen mode.
This commit is contained in:
parent
14d341530a
commit
3e32379f54
4 changed files with 37 additions and 4 deletions
|
@ -292,7 +292,8 @@
|
|||
(:when (featurep! :lang org +pomodoro)
|
||||
:desc "Pomodoro timer" "t" #'org-pomodoro)
|
||||
(:when (featurep! :ui zen)
|
||||
:desc "Zen mode" "z" #'writeroom-mode))
|
||||
:desc "Zen mode" "z" #'+zen/toggle
|
||||
:desc "Zen mode" "z" #'+zen/toggle-fullscreen))
|
||||
|
||||
;;; <leader> v --- versioning
|
||||
(:prefix-map ("v" . "versioning")
|
||||
|
|
|
@ -693,7 +693,8 @@
|
|||
(:when (featurep! :editor word-wrap)
|
||||
:desc "Soft line wrapping" "w" #'+word-wrap-mode)
|
||||
(:when (featurep! :ui zen)
|
||||
:desc "Zen mode" "z" #'writeroom-mode)))
|
||||
:desc "Zen mode" "z" #'+zen/toggle
|
||||
:desc "Zen mode (fullscreen)" "Z" #'+zen/toggle-fullscreen)))
|
||||
|
||||
(after! which-key
|
||||
(let ((prefix-re (regexp-opt (list doom-leader-key doom-leader-alt-key))))
|
||||
|
|
29
modules/ui/zen/autoload.el
Normal file
29
modules/ui/zen/autoload.el
Normal 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))))
|
|
@ -18,9 +18,11 @@
|
|||
|
||||
(after! writeroom-mode
|
||||
;; Users should be able to activate writeroom-mode in one buffer (e.g. an org
|
||||
;; buffer) and code in another. Fullscreening/maximizing will be opt-in.
|
||||
;; buffer) and code in another. No global behavior should be applied.
|
||||
;; Fullscreening/maximizing will be opt-in.
|
||||
(defvar +zen--old-writeroom-global-effects writeroom-global-effects)
|
||||
(setq writeroom-global-effects nil)
|
||||
(setq writeroom-maximize-window nil)
|
||||
(remove-hook 'writeroom-global-effects #'writeroom-set-fullscreen)
|
||||
|
||||
(add-hook! 'writeroom-mode-hook
|
||||
(defun +zen-enable-text-scaling-mode-h ()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue