# ![monoff](https://raw.githubusercontent.com/t-mart/monoff/master/docs/monoff.png) monoff - Turn off your monitors on Windows
![GitHub download count](https://img.shields.io/github/downloads/t-mart/monoff/total)
![Latest GitHub release](https://img.shields.io/github/v/release/t-mart/monoff)
![Crates.io](https://img.shields.io/crates/v/monoff)
monoff is a Windows program that turns off/sleeps your monitors – that's it.
- **Simple**: There's no magic to it. It works the same way as if you'd left
your computer inactive for however many minutes. Run it, and the monitors turn
off. Then, move your mouse, they'll turn back on again. No GUI, no
administrator privileges, no background processes.
- **Portable**: Everything about it is self-contained in the .exe and does not
require an installer. You can even run it from a USB stick.
- **Convenient**: Just click an icon in your taskbar, or press a keyboard
shortcut. I made this program because the power button on my monitors is hard
to reach.
- **Safe**: This program is open-source. You can inspect the code and build it
yourself.
You can also specify a delay before the monitors turn off, so that you can
safely remove your hand from your mouse, for example. It defaults to 100
milliseconds.
## Installation
### From GitHub (easiest)
Download `monoff.exe` from the [latest
release](https://github.com/t-mart/monoff/releases/latest) and put it somewhere,
such as on your Desktop.
Running it is then as simple as double-clicking it.
### Scoop (recommended)
Run:
```shell
scoop bucket add t-mart https://github.com/t-mart/bucket
scoop install t-mart/monoff
```
This will:
- put `monoff` in your `PATH` variable
- place the executable at `%UserProfile%\scoop\apps\monoff\current\monoff.exe`
- create a Start Menu item
### Cargo
Run:
```shell
cargo install monoff
```
This will build the executable and place it at `%UserProfile%\.cargo\bin\monoff.exe` (and,
most likely, put it in your `PATH` variable).
#### Binstall
You can also use [binstall](https://github.com/cargo-bins/cargo-binstall) to install
the latest GitHub release without needing to build. Run:
```shell
cargo binstall monoff
```
## Making it a taskbar shortcut
As normal, just drag the application to your taskbar:
![add to taskbar](https://raw.githubusercontent.com/t-mart/monoff/master/docs/add-to-taskbar.gif)
From here, you can **just click to icon** the turn off your monitors.
### Adding a hotkey/keyboard shortcut
Expand
To run the application when you press a hotkey/keyboard shortcut, edit the
`Shortcut Key` value in its properties:
![edit shortcut arguments](https://raw.githubusercontent.com/t-mart/monoff/master/docs/hotkey.gif)
Note that Windows will automatically prefix your choice with `Ctrl + Alt`. You
only can only provide the last key.
### Adding a delay
Expand
The default delay (50ms) is fine in most cases. But, if you want to change the
delay to this shortcut, edit the `Target` value in its properties to add the
delay option:
![edit shortcut arguments](https://raw.githubusercontent.com/t-mart/monoff/master/docs/shortcut-arguments.gif)
## Usage examples
- Turn off your monitors immediately:
```shell
monoff.exe
```
- Turn them off after a delay of 2 seconds:
```shell
monoff.exe --delay 2000
```
- See help:
```shell
monoff.exe --help
```
## Thanks
This program is heavily inspired by
[lcdoff-rs](https://github.com/Gekkio/lcdoff-rs) (and its partner
[article](https://gekkio.fi/blog/2014/calling-win32-api-with-rust-ffi/)). Thank
you, @Gekkio!
## Other Projects Named monoff
After creating this `monoff` project, I found that there are several others with
the same name. To keep things clear, these are the only pages directly connected
to this project:
- [monoff on GitHub](https://github.com/t-mart/monoff)
- [monoff on Crates.io](https://crates.io/crates/monoff)
## DevOps
To:
- create and push a new git tag,
- create a new GitHub release with binaries attached, and
- publish a new version to (and update docs on
)
simply push a commit to the `master` branch with an updated version number in
`Cargo.toml`. The workflow file at `.github/workflows/release-build-publish.yml`
will take care of the rest. Make sure to pull afterwards.