#api #color #profile #tailor


API types for communication with tailord (part of tuxedo-rs)

4 releases

0.2.1 Apr 12, 2023
0.2.0 Apr 10, 2023
0.1.1 Sep 15, 2022
0.1.0 Sep 11, 2022

#153 in Hardware support

Download history 11/week @ 2023-08-15 9/week @ 2023-08-22 3/week @ 2023-08-29 11/week @ 2023-09-05 6/week @ 2023-09-12 13/week @ 2023-09-19 10/week @ 2023-09-26 14/week @ 2023-10-03 7/week @ 2023-10-10 13/week @ 2023-10-17 11/week @ 2023-10-24 27/week @ 2023-10-31 8/week @ 2023-11-07 19/week @ 2023-11-14 14/week @ 2023-11-21 23/week @ 2023-11-28

67 downloads per month
Used in tailor_client


168 lines

Tuxedo-rs Tuxedo-rs

Tuxedo-rs 🐧+🦀=❤️

Rust libraries for interacting with hardware from TUXEDO Computers.

Tuxedo-rs is a community project. It is not developed nor supported by TUXEDO Computers.
Although we only supports TUXEDO hardware for now, other vendors are free to contribute their own bindings.


The TUXEDO Control Center (TCC) is a neat application that allows you to control different parts of your hardware, such as fans, webcam and performance profiles. However, TCC and its tccd service rely on Node.js which makes it slow, memory hungry and hard to package.

Also, tuxedo-rs is modular and contains several crates with different levels of abstraction, which makes it easy for everyone to built their own tools on top.

Why Rust?

  • All software should be rewritten in Rust
  • Very robust code
  • Strong compile-time guarantees
  • High performance
  • Easy to package (no additional runtime or dependencies)


Project structure Project structure

Tested hardware

This list includes devices that were successfully tested with tuxedo-rs. Since I have limited access to hardware, please consider adding your device(s) to the list.

  • TUXEDO Aura 15 Gen1 and Gen2
  • TUXEDO Pulse 15 Gen1
  • TUXEDO Polaris 17 Gen3
  • TUXEDO Book XP14 Gen12


Currently, tuxedo-rs isn't available from package archives so you have to install it from source.

Tuxedo driver modules

If you use a distribution that doesn't package the required tuxedo hardware drivers, you can install the from source.

git clone https://github.com/tuxedocomputers/tuxedo-keyboard.git
cd tuxedo-keyboard
git checkout release
sudo make dkmsinstall


Tailord is the system service that runs in the background and interacts with the driver modules. It exposes a D-BUS interface that can be used by applications to configure the hardware.

cd tailord
meson setup --prefix=/usr _build
ninja -C _build
ninja -C _build install

If you have the TUXEDO Control Center (TCC) and its daemons installed, make sure to deactivate them first.

sudo systemctl disable tccd.service 
sudo systemctl stop tccd.service 
sudo systemctl disable tccd-sleep.service 
sudo systemctl stop tccd-sleep.service 

Then, enable tailord with the following commands:

sudo systemctl enable tailord.service 
sudo systemctl start tailord.service 

Tailor GUI

Tailor GUI will soon be available as flatpak package. In the meantime, you can build the app from source. Usually, building the app only requires GNOME Builder or the flatpak extension for VSCode. Yet, you can use the command line if your prefer it:

flatpak install org.gnome.Sdk//44 org.freedesktop.Sdk.Extension.rust-stable//22.08 org.gnome.Platform//44 runtime/org.freedesktop.Sdk.Extension.llvm15//22.08
flatpak-builder --user flatpak_app tailor_gui/build-aux/com.github.aaronerhardt.Tailor.json 
flatpak-builder --run flatpak_app tailor_gui/build-aux/com.github.aaronerhardt.Tailor.json tailor_gui

If you don't want to use flatpak-builder, make sure you have the following dependencies installed on your system.

Ubuntu 23.04:

sudo apt install meson libadwaita-1-dev libgtk-4-dev

Arch Linux:

sudo pacman -S meson libadwaita gtk4

Fedora 38:

sudo dnf -y install meson libadwaita-devel gtk4-devel

Then build and install Tailor GUI with meson:

cd tailor_gui
meson setup --prefix=/usr _build
ninja -C _build
ninja -C _build install

Tailor CLI

You can build and install the tailor CLI from source using cargo:

cargo install --path tailor_cli
tailor --help

On NixOS

To install tailor-rs on NixOS, with flakes enabled, add the following to your flake.nix:

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    tuxedo-rs.url = "github:AaronErhardt/tuxedo-rs";

  outputs = {
  } : {
    nixosConfigurations.myConfiguration = nixpkgs.lib.nixosSystem {
      modules = [

      services.tuxedo-rs = {
        enable = true;
        tailor_gui.enable = true;


  • Ioctl abstraction for tuxedo_io
  • Sysfs abstraction for tuxedo_keyboard
  • Support for hardware from both clevo and uniwill
  • Daemon with DBus interface for user space application
  • Client library for interacting with the daemon
  • CLI that interacts with the daemon
  • Native GUI that interacts with the daemon
  • OPTIONAL: Rewrite various tuxedo kernel modules in Rust


~27K SLoC