_ _ _ /\ \ /\ \ /\ \ / \ \ / \ \ / \ \ / /\ \ \ __/ /\ \ \ / /\ \ \ / / /\ \_\/___/ /\ \ \ / / /\ \_\ / / /_/ / /\___\/ / / / / / /_/ / / / / /__\/ / / / / / / /__\/ / / / /_____/ / / / _ / / /_____/ / / /\ \ \ \ \ \__/\_\ / / /\ \ \ / / / \ \ \ \ \___\/ // / / \ \ \ \/_/ \_\/ \/___/_/ \/_/ \_\/
rzr is a simple command line frontend for OpenRazer. It allows to set static lighting profiles of Razer devices, based on configuration files.
Lets assume you have created a profile with the name fps
, containing the following color declarations:
w = "red"
a = "#ff0000"
s = "#f0f"
d = "ff2080"
All you have to do to apply the profile is to execute the following command:
$ rzr fps
The WASD keys get now lighted accordingly.
This allows to switch quickly between lighting profiles using the command line or a script. Profile switching per current work-directory can e.g. easily be achieved with direnv.
An instruction how to apply profiles automatically while running Steam games can be found below.
Currently only devices with the LED matrix feature are supported. Every device on which single LED colors can be set should fall into this category.
- Write lighting profiles in TOML
- Apply profiles with one command
At first, make sure the OpenRazer daemon is running and your user can access it. If you are having trouble, take a look at the troubleshooting section.
This project is a Nix flake. If you are running a recent version of the Nix package manager and have flakes enabled, you can execute it with:
$ nix run github:Deleh/rzr
On legacy systems you need to make sure the Python libraries for OpenRazer are in your path, then clone this repository and execute:
$ python setup.py install
Or make sure the requirements in requirements.txt
are fulfilled and call the program directly with:
$ python bin/rzr
usage: rzr [-h] [-ld LIGHTMAP_DIRECTORY] [-pd PROFILE_DIRECTORY] [COMMAND] Set color profiles of your Razer devices. positional arguments: COMMAND one of the following: list-devices - list available devices list-lightmaps - list available lightmaps list-profiles - list available profiles iterate-lights - iterate though all lights of all devices <PROFILE> - apply the given profile optional arguments: -h, --help show this help message and exit -ld LIGHTMAP_DIRECTORY, --lightmap-directory LIGHTMAP_DIRECTORY path to directory with lightmaps (default: ~/.config/rzr/lightmaps) -pd PROFILE_DIRECTORY, --profile-directory PROFILE_DIRECTORY path to directory with profiles (default: ~/.config/rzr/profiles)
If no command is given and the profile default
exists, it is applied.
The lights of Razer devices (on which single LED colors can be set) are arranged in two dimensional matrices with various numbers of columns and rows.
So called lightmaps are TOML files which map identifiers to positions in the matrices.
For every device at least one lightmap must be created and be placed in the LIGHTMAP_DIRECTORY
(default: ~/.config/rzr/lightmaps
).
Lightmaps for the following devices can already be found in the lightmaps
directory:
- Razer BlackWidow Chroma with german keyboard layout (
blackwidow_chroma_de.toml
) - Razer Mamba Elite (
mamba_elite.toml
)
If your device is not in the list, use one of those as template and feel free to create a pull request.
The iterate-lights
command iterates through every found device, turns on one light after another and prints the matrix position to stdout.
This should ease the creation of new lightmaps.
Here is an excerpt of the file blackwidow_chroma_de.toml
:
m2 = [2, 0]
tab = [2, 1]
q = [2, 2]
w = [2, 3]
e = [2, 4]
r = [2, 5]
t = [2, 6]
The tab
identifies for example the key in the third row and second colum (counting starts at 0) which is the tabulator key on the keyboard.
Those identifiers can then be used in profiles to set light colors.
Profiles are configuration files for light colors of one or more devices.
They are also TOML files and map identifiers of lightmaps to colors.
Create a new profile for every light setup and place it in the PROFILE_DIRECTORY
(default: ~/.config/rzr/profiles
).
An example for a profile can be found in the profiles
directory.
Make up a name for every used device in a profile, e.g. mouse
for your mouse and keyboard
for the keyboard (obvious) or choose other names.
Then create a new field for every device with the chosen name, followed by the mandatory name and lightmap.
Lightmaps are identified by their filename without the .toml
part, for example:
[keyboard]
name = "Razer BlackWidow Chroma"
lightmap = "blackwidow_chroma_de"
The name of your device can be found with the list-devices
command.
Available lightmaps can be listed with the list-lightmaps
command.
Then create another field [<chosen_device_name>.lights]
, followed by any key value pairs.
The keys are the identifiers from the set lightmap, values are color strings.
For example:
[keyboard.lights]
logo = "green"
w = "aqua"
a = "#ff0000"
s = "#f0f"
d = "white"
A color string can be one of the following:
- Hexadecimal value with or without leading hash (e.g.
#ff0000
) - Short hexadecimal value with or without leading hash (e.g.
f0f
, then interpreted as#ff00ff
) - HTML color name (e.g.
green
) (a full list can be found here)
Not set lights are turned off.
Steam allows to set various launch options for games. This functionality can also be used to apply lighting profiles before the startup and after the exit of a game.
Lets assume you created a profile called my_favourite_game
and another one called default
.
Right click on your favourite game in the Steam launcher and click Properties….
On the bottom of the General section is a text field, labeled launch options.
Insert the following command:
rzr my_favourite_game & %command%; rzr
The first command applies the profile my_favourite_game
as usual.
&
ensures that the next command is called even if the first one failed.
Your game should start even if rzr failed or you have messed up your profile file.
Steam then substitutes the %command%
part with the binary of the game and runs it.
The ;
waits until the game exited and the rzr
command finally applies your default
profile.
It is neccessary that rzr is installed correctly and available in your $PATH
, otherwise Steam will not be able to call it.
Make sure your user is in the plugdev
group to access the OpenRazer daemon.
If this is the case and you still have problems, stop the daemon with the following command:
$ systemctl --user stop openrazer-daemon.service
Then run it manually and check the output:
$ openrazer-daemon -Fv
If it complains about a missing config file, put this file in the ~/.config/openrazer
directory and restart the daemon.