[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: toggle-light-dark-mode
From: |
Juri Linkov |
Subject: |
Re: toggle-light-dark-mode |
Date: |
Tue, 15 Sep 2020 22:03:20 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) |
>> [Tip, it is a good idea to change the subject!]
>>
>> I like using a light theme during the day and a dark theme during the
>> night when I'm in a dark room. I use a function to toggle between those
>> two different themes. Here is some code based on my personal
>> configuration:
>>
>> _____
>> [ ... ]
>> _____
>>
>> Maybe we could use something like this and then add buttons to the menu
>> and the tool bar? The tool bar could use an icon like the image
>> attached (the image is just illustrative, it probably has copyright).
>>
>> This looks like a good idea.
>>
>> I think something in the tool-bar is a bit much, I don't think it is
>> the most used option that should that have such a high visibility --
>> rather I think users would like to toggle it once, so the menu-bar
>> would be a better place where the user would also be prompt to save
>> their settings if they quit emacs.
>>
>> Would you like to purpose a patch for this?
>
> Ok, I tried to improve that code, a patch is attached.
But the theme can be toggled from light to dark using the command
line switch --reverse-video, -r, -rv, or with the frame parameter
'background-mode' that can be either 'dark' or 'light', and the
user selected theme should support both modes. Then toggling can be
automatic:
(defvar my-sunset-timer nil)
(defvar my-sunrise-timer nil)
(defun toggle-light-dark-mode (&optional frame)
"Automatically switch to dark background after sunset
and to light background after sunrise.
(Note that `calendar-latitude' and `calendar-longitude'
should be set before calling the `solar-sunrise-sunset')."
(interactive)
(require 'solar)
(if (and (bound-and-true-p calendar-latitude)
(bound-and-true-p calendar-longitude)
(bound-and-true-p calendar-time-zone))
(let* ((l (solar-sunrise-sunset (calendar-current-date)))
(sunrise-string (apply 'solar-time-string (car l)))
(sunset-string (apply 'solar-time-string (car (cdr l))))
(current-time-string (format-time-string "%H:%M")))
(if (or (string-lessp current-time-string sunrise-string)
(string-lessp sunset-string current-time-string))
(toggle-dark-mode frame)
(toggle-light-mode frame))
(if (and (boundp 'my-sunset-timer) (timerp my-sunset-timer))
(cancel-timer my-sunset-timer))
(if (and (boundp 'my-sunrise-timer) (timerp my-sunrise-timer))
(cancel-timer my-sunrise-timer))
(setq my-sunset-timer (run-at-time sunset-string (* 60 60 24)
'toggle-dark-mode))
(setq my-sunrise-timer (run-at-time sunrise-string (* 60 60 24)
'toggle-light-mode)))))
(add-hook 'after-make-frame-functions 'toggle-light-dark-mode)
(defun my-colors-light (&optional frame)
"Set colors suitable for working in light environments,
i.e. in daylight or under bright electric lamps."
(interactive)
(setq frame-background-mode 'light)
(modify-frame-parameters nil (list (cons 'background-mode 'light)))
;; The color with minimal eye fatigue in light environments
;; is "AntiqueWhite3" (RGB: 205 192 176),
;; (set-background-color "AntiqueWhite3")
)
(defun my-colors-dark (&optional frame)
"Set colors suitable for working in the darkness without electricity."
(interactive)
(setq frame-background-mode 'dark)
(modify-frame-parameters nil (list (cons 'background-mode 'dark))))
- Re: "modern" colors Re: Changes for emacs 28, (continued)
- Re: "modern" colors Re: Changes for emacs 28, Colin Baxter, 2020/09/13
- Re: "modern" colors Re: Changes for emacs 28, Ergus, 2020/09/12
- Re: "modern" colors Re: Changes for emacs 28, Alfred M. Szmidt, 2020/09/12
- Re: "modern" colors Re: Changes for emacs 28, Caio Henrique, 2020/09/12
- toggle-light-dark-mode (was: Re: "modern" colors Re: Changes for emacs 28), Alfred M. Szmidt, 2020/09/15
- Re: toggle-light-dark-mode, Caio Henrique, 2020/09/15
- Re: toggle-light-dark-mode,
Juri Linkov <=
- Re: toggle-light-dark-mode, Caio Henrique, 2020/09/15
- Re: toggle-light-dark-mode, Juri Linkov, 2020/09/16
- Re: toggle-light-dark-mode, Protesilaos Stavrou, 2020/09/16
- Re: toggle-light-dark-mode, Juri Linkov, 2020/09/16
- Re: toggle-light-dark-mode, Stefan Monnier, 2020/09/16
- Re: toggle-light-dark-mode, Arthur Miller, 2020/09/17
- RE: "modern" colors Re: Changes for emacs 28, Drew Adams, 2020/09/12
- Re: "modern" colors Re: Changes for emacs 28, Ricardo Wurmus, 2020/09/12
- Re: "modern" colors Re: Changes for emacs 28, Ergus, 2020/09/12
- Re: "modern" colors Re: Changes for emacs 28, Caio Henrique, 2020/09/12