https://github.com/nomad-software/screensaver
A simple Linux screensaver framework
https://github.com/nomad-software/screensaver
go golang linux screensaver
Last synced: 3 months ago
JSON representation
A simple Linux screensaver framework
- Host: GitHub
- URL: https://github.com/nomad-software/screensaver
- Owner: nomad-software
- License: mit
- Created: 2022-11-28T19:33:23.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-07-03T17:52:50.000Z (12 months ago)
- Last Synced: 2025-08-09T21:39:08.089Z (10 months ago)
- Topics: go, golang, linux, screensaver
- Language: Go
- Homepage:
- Size: 68.8 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# screensaver
A simple Linux screensaver framework
## Prerequisites
* This is a Linux only screensaver framework.
* To run the launcher you will need to use [Gnome](https://www.gnome.org/) as your desktop environment.
* This is because the input detection is currently handled by [Mutter](https://mutter.gnome.org/).
* [X11](https://www.x.org/wiki/) and [Wayland](https://wayland.freedesktop.org/) are supported.
* A working Go and C compiler and installed Raylib dependencies.
* https://go.dev
* https://github.com/gen2brain/raylib-go#requirements
## How it works
This framework is composed of multiple parts, a launcher, multiple savers and a
command tool to send commands to the launcher. The launcher is responsible for
the launching of the savers, while the savers themselves just draw something
nice on-screen and exit when input is detected.
The launcher uses a timer, that when expired, will launch the defined
executable. Any input will reset the timer and delay the launch.
## Install
Just run the `install.sh` script. This will compile and install the various binaries.
## Add to startup
Use [Tweaks](https://wiki.gnome.org/Apps/Tweaks) to add to start-up applications.
### Application file
You may need to create a desktop launcher to be used with newer version of Tweaks.
Create a file containing the following and place in `~/local/share/applications`.
```
[Desktop Entry]
Type=Application
Name=Screensaver Launcher
Exec=screensaver-launcher -saver screensaver-digital-rain -timer 15m
```
### Example
```
screensaver-launcher -timer 15m -saver screensaver-game-of-life > /dev/null 2>&1
```
In this example you can see the `screensaver-game-of-life` saver is being
executed after the timer expires but any executable can be launched.
## Commands
You can use the command tool to send commands to the launcher to control its behaviour.
| Command | Description |
|---------------------------------|-----------------------------------------------------|
| `screensaver-command -reset` | Reset the launcher timer. |
| `screensaver-command -activate` | Expires the timer and activate the specified saver. |
## Savers
### `screensaver-digital-rain`

### `screensaver-game-of-life`
