= XFCE Night Mode

Shell script that allows you to easily *switch between dark and light variants
of the currently used themes*. When used as a
https://docs.xfce.org/panel-plugins/xfce4-genmon-plugin[Generic Monitor
(Genmon)] plugin, it will automatically switch at the times specified.

image::https://i.imgur.com/UVSz6QB.gif[]

*It is important to set the desired color schemes before use* (see Settings).

* https://github.com/bimlas/xfce4-night-mode (*please star if you like the plugin*)

== Command line usage

....
$ xfce4-night-mode.sh [day|night|toggle]
....

*Parameters*

`day`:: Use light variant
`night`:: Use dark variant
`toggle`:: Switch between light and dark variants

Without parameters, it will use dark variant from sunset to sunrise according
to the settings (see later).

== Generic Monitor (Genmon) plugin usage

* First you have to install `xfce4-genmon-plugin` package if it is not on your system
* Add the monitor to the panel
** Right click on the panel
** Select _Panel -> Add new items_
** Add _Generic Monitor_ plugin
* Set up the generic monitor to use with night mode
** Right click on the newly added generic monitor -> _Properties_
** Command: `/path/to/xfce4-night-mode.sh`
** Uncheck the checkbox of _Label_
** Set _Period_ to `300` seconds (5 minutes)

== Settings

For settings, open the XFCE Settings Editor -> `night-mode` channel.

To find out what values to enter, set the color schemes you want and copy them
from the appropriate location:

* GTK theme
** `xsettings/Net/ThemeName`
* Icon theme
** `xsettings/Net/IconThemeName`
* Cursor theme
** `xsettings/Gtk/CursorThemeName`
* Window manager theme
** `xfwm4/general/theme`

The specified `UserScript` will be executed when switching the mode, you can use
this for example to change the theme of the terminal, set desktop wallpaper,
etc. You can use the variable `XFCE_NIGHT_MODE` in your script if you want to
use the same script in both cases, for example:

....
#!/bin/bash
notify-send --icon "dialog-info" "Mode: $XFCE_NIGHT_MODE"
....

=== Example `UserScript`

==== Change wallpaper

First you have to find the property of the wallpaper (this could be different on
multi-monitor setup) by executing the command below then changing the wallpaper
in _Desktop_ setting.

```
xfconf-query --channel xfce4-desktop --monitor
```

You have to execute the command below to set up the wallpaper for this desktop.

```
xfconf-query --channel xfce4-desktop --property <property> --set </path/to/image.jpg>
```

==== Change panel dark mode

You have to execute the command below to change the panel mode opposite to the
windows mode (light windows, dark panel).

```
xfconf-query --channel xfce4-panel --property /panels/dark-mode --set "$([ "$XFCE_NIGHT_MODE" = "day" ] && echo true || echo false)"
```

=== Switch at a time specified by antoher program

For example, to use http://jonls.dk/redshift/[Redshift] or another program to
determine when it is night, use `xfce4-night-mode-redshift.sh` (or a modified
version of it) instad of `xfce4-night-mode.sh` in "Generic Monitor plugin
usage".

== Changes

=== https://github.com/bimlas/xfce4-night-mode/-/compare/v1.0.0\...v2.0.0[2.0.0]

* Add options to change GTK, mouse, icon, and window manager theme
** *Breaking change*: You must set these before use
